]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com>
2
3 * lra-int.h (lra_update_fp2sp_elimination): New prototype.
4 (lra_asm_insn_error): New prototype.
5 * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
6 existence.
7 (lra_spill): Call lra_update_fp2sp_elimination.
8 * lra-eliminations.cc: Remove trailing spaces.
9 (elimination_fp2sp_occured_p): New static flag.
10 (lra_eliminate_regs_1): Set the flag up.
11 (update_reg_eliminate): Modify the assert for stack to frame
12 pointer elimination.
13 (lra_update_fp2sp_elimination): New function.
14 (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
15
16 2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com>
17
18 * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
19 dependency.
20 * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
21 dependencies from target pragmas.
22 * config/aarch64/arm_fp16.h (target): Likewise.
23 * config/aarch64/arm_neon.h (target): Likewise.
24
25 2023-07-19 Andrew Pinski <apinski@marvell.com>
26
27 PR tree-optimization/110252
28 * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
29 (auto_flow_sensitive::auto_flow_sensitive): New constructor.
30 (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
31 (match_simplify_replacement): Temporarily
32 remove the flow sensitive info on the two statements that might
33 be moved.
34
35 2023-07-19 Andrew Pinski <apinski@marvell.com>
36
37 * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
38 with flow_sensitive_info_storage.
39 (follow_outer_ssa_edges): Update how to save off the flow
40 sensitive info.
41 (maybe_fold_comparisons_from_match_pd): Update restoring
42 of flow sensitive info.
43 * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
44 (flow_sensitive_info_storage::restore): New method.
45 (flow_sensitive_info_storage::save_and_clear): New method.
46 (flow_sensitive_info_storage::clear_storage): New method.
47 * tree-ssanames.h (class flow_sensitive_info_storage): New class.
48
49 2023-07-19 Andrew Pinski <apinski@marvell.com>
50
51 PR tree-optimization/110726
52 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
53 Add checks to make sure the type was one bit precision
54 intergal type.
55
56 2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
57
58 * doc/md.texi: Add mask_len_fold_left_plus.
59 * internal-fn.cc (mask_len_fold_left_direct): Ditto.
60 (expand_mask_len_fold_left_optab_fn): Ditto.
61 (direct_mask_len_fold_left_optab_supported_p): Ditto.
62 * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
63 * optabs.def (OPTAB_D): Ditto.
64
65 2023-07-19 Jakub Jelinek <jakub@redhat.com>
66
67 * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
68
69 2023-07-19 Jakub Jelinek <jakub@redhat.com>
70
71 PR tree-optimization/110731
72 * wide-int.cc (wi::divmod_internal): Always unpack dividend and
73 divisor as UNSIGNED regardless of sgn.
74
75 2023-07-19 Lehua Ding <lehua.ding@rivai.ai>
76
77 * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
78 (standard_extensions_p): Add check.
79 (riscv_subset_list::add): Just return NULL if it failed before.
80 (riscv_subset_list::parse_std_ext): Continue parse when find a error
81 (riscv_subset_list::parse): Just return NULL if it failed before.
82 * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
83
84 2023-07-19 Jan Beulich <jbeulich@suse.com>
85
86 * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
87 Use gen_vec_set_0.
88 (ix86_expand_vector_extract): Use gen_vec_extract_lo /
89 gen_vec_extract_hi.
90 (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
91 gen_vec_interleave_low. Rename local variable.
92
93 2023-07-19 Jan Beulich <jbeulich@suse.com>
94
95 * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
96 alternative. Move AVX512VL part of condition to new "enabled"
97 attribute.
98
99 2023-07-19 liuhongt <hongtao.liu@intel.com>
100
101 PR target/109504
102 * config/i386/i386-builtins.cc
103 (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
104 (ix86_register_bf16_builtin_type): Ditto.
105 * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
106 isn't available, undef the macros which are used to check the
107 backend support of the _Float16/__bf16 types when building
108 libstdc++ and libgcc.
109 * config/i386/i386.cc (construct_container): Issue errors for
110 HFmode/BFmode when TARGET_SSE2 is not available.
111 (function_value_32): Ditto.
112 (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
113 (ix86_libgcc_floating_mode_supported_p): Ditto.
114 (ix86_emit_support_tinfos): Adjust codes.
115 (ix86_invalid_conversion): Return diagnostic message string
116 when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
117 (ix86_invalid_unary_op): New function.
118 (ix86_invalid_binary_op): Ditto.
119 (TARGET_INVALID_UNARY_OP): Define.
120 (TARGET_INVALID_BINARY_OP): Define.
121 * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
122 related instrinsics header files.
123 * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
124
125 2023-07-18 Uros Bizjak <ubizjak@gmail.com>
126
127 * dwarf2asm.cc: Change FALSE to false.
128 * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
129 * dwarf2out.cc (matches_main_base): Change return type from
130 int to bool. Change "last_match" variable to bool.
131 (dump_struct_debug): Change return type from int to bool.
132 Change "matches" and "result" function arguments to bool.
133 (is_pseudo_reg): Change return type from int to bool.
134 (is_tagged_type): Ditto.
135 (same_loc_p): Ditto.
136 (same_dw_val_p): Change return type from int to bool and adjust
137 function body accordingly.
138 (same_attr_p): Ditto.
139 (same_die_p): Ditto.
140 (is_type_die): Ditto.
141 (is_declaration_die): Ditto.
142 (should_move_die_to_comdat): Ditto.
143 (is_base_type): Ditto.
144 (is_based_loc): Ditto.
145 (local_scope_p): Ditto.
146 (class_scope_p): Ditto.
147 (class_or_namespace_scope_p): Ditto.
148 (is_tagged_type): Ditto.
149 (is_rust): Use void argument.
150 (is_nested_in_subprogram): Change return type from int to bool.
151 (contains_subprogram_definition): Ditto.
152 (gen_struct_or_union_type_die): Change "nested", "complete"
153 and "ns_decl" variables to bool.
154 (is_naming_typedef_decl): Change FALSE to false.
155
156 2023-07-18 Jan Hubicka <jh@suse.cz>
157
158 * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
159 for queries not in headers.
160 (static_loop_exit): Add basic blck parameter; update use of
161 edge_range_query
162 (should_duplicate_loop_header_p): Add ranger and static_exits
163 parameter. Do not account statements that will be optimized
164 out after duplicaiton in overall size. Add ranger query to
165 find static exits.
166 (update_profile_after_ch): Take static_exits has set instead of
167 single eliminated_edge.
168 (ch_base::copy_headers): Do all analysis in the first pass;
169 remember invariant_exits and static_exits.
170
171 2023-07-18 Jason Merrill <jason@redhat.com>
172
173 * fold-const.cc (native_interpret_aggregate): Skip empty fields.
174
175 2023-07-18 Gaius Mulley <gaiusmod2@gmail.com>
176
177 * doc/gm2.texi (Semantic checking): Change example testwithptr
178 to testnew6.
179
180 2023-07-18 Richard Biener <rguenther@suse.de>
181
182 PR middle-end/105715
183 * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
184 (pass_gimple_isel::execute): ... this. Duplicate
185 comparison defs of COND_EXPRs.
186
187 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
188
189 * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
190 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
191 (riscv_convert_vector_bits): Ditto.
192
193 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
194
195 * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
196 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
197
198 2023-07-18 Juergen Christ <jchrist@linux.ibm.com>
199
200 * config/s390/vx-builtins.md: New vsel pattern.
201
202 2023-07-18 liuhongt <hongtao.liu@intel.com>
203
204 PR target/110438
205 * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
206 Remove # from assemble output.
207
208 2023-07-18 liuhongt <hongtao.liu@intel.com>
209
210 PR target/110591
211 * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
212 to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
213 3 define_peephole2 after the pattern.
214
215 2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
216
217 * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
218
219 2023-07-18 Pan Li <pan2.li@intel.com>
220 Juzhe-Zhong <juzhe.zhong@rivai.ai>
221
222 * config/riscv/riscv.cc (struct machine_function): Add new field.
223 (riscv_static_frm_mode_p): New function.
224 (riscv_emit_frm_mode_set): New function for emit FRM.
225 (riscv_emit_mode_set): Extract function for FRM.
226 (riscv_mode_needed): Fix the TODO.
227 (riscv_mode_entry): Initial dynamic frm RTL.
228 (riscv_mode_exit): Return DYN_EXIT.
229 * config/riscv/riscv.md: Add rdfrm.
230 * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
231 * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
232 (fsrm): Removed.
233 (fsrmsi_backup): New pattern for swap.
234 (fsrmsi_restore): New pattern for restore.
235 (fsrmsi_restore_exit): New pattern for restore exit.
236 (frrmsi): New pattern for backup.
237
238 2023-07-17 Arsen Arsenović <arsen@aarsen.me>
239
240 * doc/extend.texi: Add @cindex on __auto_type.
241
242 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
243
244 * combine-stack-adj.cc (stack_memref_p): Change return type from
245 int to bool and adjust function body accordingly.
246 (rest_of_handle_stack_adjustments): Change return type to void.
247
248 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
249
250 * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
251 (cant_combine_insn_p): Change return type from int to bool and adjust
252 function body accordingly.
253 (can_combine_p): Ditto.
254 (combinable_i3pat): Ditto. Change "i1_not_in_src" and "i0_not_in_src"
255 function arguments from int to bool.
256 (contains_muldiv): Change return type from int to bool and adjust
257 function body accordingly.
258 (try_combine): Ditto. Change "new_direct_jump" pointer function
259 argument from int to bool. Change "substed_i2", "substed_i1",
260 "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
261 "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
262 "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
263 "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
264 "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
265 "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
266 from int to bool.
267 (subst): Change "in_dest", "in_cond" and "unique_copy" function
268 arguments from int to bool.
269 (combine_simplify_rtx): Change "in_dest" and "in_cond" function
270 arguments from int to bool.
271 (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
272 function argument from int to bool.
273 (force_int_to_mode): Change "just_select" function argument
274 from int to bool. Change "next_select" variable to bool.
275 (rtx_equal_for_field_assignment_p): Change return type from
276 int to bool and adjust function body accordingly.
277 (merge_outer_ops): Ditto. Change "pcomp_p" pointer function
278 argument from int to bool.
279 (get_last_value_validate): Change return type from int to bool
280 and adjust function body accordingly.
281 (reg_dead_at_p): Ditto.
282 (reg_bitfield_target_p): Ditto.
283 (combine_instructions): Ditto. Change "new_direct_jump"
284 variable to bool.
285 (can_combine_p): Change return type from int to bool
286 and adjust function body accordingly.
287 (likely_spilled_retval_p): Ditto.
288 (can_change_dest_mode): Change "added_sets" function argument
289 from int to bool.
290 (find_split_point): Change "unsignedp" variable to bool.
291 (simplify_if_then_else): Change "comparison_p" and "swapped"
292 variables to bool.
293 (simplify_set): Change "other_changed" variable to bool.
294 (expand_compound_operation): Change "unsignedp" variable to bool.
295 (force_to_mode): Change "just_select" function argument
296 from int to bool. Change "next_select" variable to bool.
297 (extended_count): Change "unsignedp" function argument to bool.
298 (simplify_shift_const_1): Change "complement_p" variable to bool.
299 (simplify_comparison): Change "changed" variable to bool.
300 (rest_of_handle_combine): Change return type to void.
301
302 2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
303
304 PR plugins/110610
305 * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
306
307 2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
308
309 * ira.cc (setup_reg_class_relations): Continue
310 if regclass cl3 is hard_reg_set_empty_p.
311
312 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
313
314 * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
315
316 2023-07-17 Martin Jambor <mjambor@suse.cz>
317
318 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
319 entry_count.
320
321 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
322
323 * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
324
325 2023-07-17 Lehua Ding <lehua.ding@rivai.ai>
326
327 PR target/110696
328 * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
329 recur add all implied extensions.
330 (riscv_subset_list::check_implied_ext): Add new method.
331 (riscv_subset_list::parse): Call checker check_implied_ext.
332 * config/riscv/riscv-subset.h: Add new method.
333
334 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
335
336 * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
337 (reduc_smax_scal_<mode>): Ditto.
338 (reduc_umax_scal_<mode>): Ditto.
339 (reduc_smin_scal_<mode>): Ditto.
340 (reduc_umin_scal_<mode>): Ditto.
341 (reduc_and_scal_<mode>): Ditto.
342 (reduc_ior_scal_<mode>): Ditto.
343 (reduc_xor_scal_<mode>): Ditto.
344 * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
345 (expand_reduction): New function.
346 * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
347 (emit_vlmax_fp_reduction_insn): Ditto.
348 (get_m1_mode): Ditto.
349 (expand_cond_len_binop): Fix name.
350 (expand_reduction): New function
351 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
352 (validate_change_or_fail): New function.
353 (change_insn): Fix VSETVL BUG.
354 (change_vsetvl_insn): Ditto.
355 (pass_vsetvl::backward_demand_fusion): Ditto.
356 (pass_vsetvl::df_post_optimization): Ditto.
357
358 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
359
360 * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
361
362 2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu>
363
364 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
365 Remove parameter name from declaration of unused parameter.
366
367 2023-07-17 Kewen Lin <linkw@linux.ibm.com>
368
369 PR tree-optimization/110652
370 * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
371 NULL_TREE.
372
373 2023-07-17 Richard Biener <rguenther@suse.de>
374
375 PR tree-optimization/110669
376 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
377 Check we matched a header PHI.
378
379 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
380
381 * tree-ssanames.cc (set_bitmask): New.
382 * tree-ssanames.h (set_bitmask): New.
383
384 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
385
386 * value-range.cc (irange_bitmask::verify_mask): Mask need not be
387 normalized.
388 * value-range.h (irange_bitmask::union_): Normalize beforehand.
389 (irange_bitmask::intersect): Same.
390
391 2023-07-17 Andrew Pinski <apinski@marvell.com>
392
393 PR tree-optimization/95923
394 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
395
396 2023-07-17 Roger Sayle <roger@nextmovesoftware.com>
397
398 * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
399 to the std::sort comparison lambda function const.
400
401 2023-07-17 Andrew Pinski <apinski@marvell.com>
402
403 PR tree-optimization/110666
404 * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
405
406 2023-07-17 Mo, Zewei <zewei.mo@intel.com>
407
408 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
409 Arrow Lake and Arrow Lake S.
410 * common/config/i386/i386-common.cc:
411 (processor_name): Add arrowlake.
412 (processor_alias_table): Add arrow lake, arrow lake s and lunar
413 lake.
414 * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
415 Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
416 * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
417 * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
418 arrowlake-s.
419 * config/i386/i386-c.cc (ix86_target_macros_internal): Add
420 arrowlake.
421 * config/i386/i386-options.cc (m_ARROWLAKE): New.
422 (processor_cost_table): Add arrowlake.
423 * config/i386/i386.h (enum processor_type):
424 Add PROCESSOR_ARROWLAKE.
425 * config/i386/x86-tune.def: Add m_ARROWLAKE.
426 * doc/extend.texi: Add arrowlake and arrowlake-s.
427 * doc/invoke.texi: Ditto.
428
429 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
430
431 * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
432 have the same iterator. Also renaming all the occurence to
433 VI2_AVX2_AVX512BW.
434 (usdot_prod<mode>): New define_expand.
435 (udot_prod<mode>): Ditto.
436
437 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
438
439 * common/config/i386/cpuinfo.h (get_available_features):
440 Detech SM4.
441 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
442 OPTION_MASK_ISA2_SM4_UNSET): New.
443 (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
444 (ix86_handle_option): Handle -msm4.
445 * common/config/i386/i386-cpuinfo.h (enum processor_features):
446 Add FEATURE_SM4.
447 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
448 sm4.
449 * config.gcc: Add sm4intrin.h.
450 * config/i386/cpuid.h (bit_SM4): New.
451 * config/i386/i386-builtin.def (BDESC): Add new builtins.
452 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
453 __SM4__.
454 * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
455 * config/i386/i386-options.cc (isa2_opts): Add -msm4.
456 (ix86_valid_target_attribute_inner_p): Handle sm4.
457 * config/i386/i386.opt: Add option -msm4.
458 * config/i386/immintrin.h: Include sm4intrin.h
459 * config/i386/sse.md (vsm4key4_<mode>): New define insn.
460 (vsm4rnds4_<mode>): Ditto.
461 * doc/extend.texi: Document sm4.
462 * doc/invoke.texi: Document -msm4.
463 * doc/sourcebuild.texi: Document target sm4.
464 * config/i386/sm4intrin.h: New file.
465
466 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
467
468 * common/config/i386/cpuinfo.h (get_available_features):
469 Detect SHA512.
470 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
471 OPTION_MASK_ISA2_SHA512_UNSET): New.
472 (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
473 (ix86_handle_option): Handle -msha512.
474 * common/config/i386/i386-cpuinfo.h (enum processor_features):
475 Add FEATURE_SHA512.
476 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
477 sha512.
478 * config.gcc: Add sha512intrin.h.
479 * config/i386/cpuid.h (bit_SHA512): New.
480 * config/i386/i386-builtin-types.def:
481 Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
482 * config/i386/i386-builtin.def (BDESC): Add new builtins.
483 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
484 __SHA512__.
485 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
486 V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
487 * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
488 * config/i386/i386-options.cc (isa2_opts): Add -msha512.
489 (ix86_valid_target_attribute_inner_p): Handle sha512.
490 * config/i386/i386.opt: Add option -msha512.
491 * config/i386/immintrin.h: Include sha512intrin.h.
492 * config/i386/sse.md (vsha512msg1): New define insn.
493 (vsha512msg2): Ditto.
494 (vsha512rnds2): Ditto.
495 * doc/extend.texi: Document sha512.
496 * doc/invoke.texi: Document -msha512.
497 * doc/sourcebuild.texi: Document target sha512.
498 * config/i386/sha512intrin.h: New file.
499
500 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
501
502 * common/config/i386/cpuinfo.h (get_available_features):
503 Detect SM3.
504 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
505 OPTION_MASK_ISA2_SM3_UNSET): New.
506 (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
507 (ix86_handle_option): Handle -msm3.
508 * common/config/i386/i386-cpuinfo.h (enum processor_features):
509 Add FEATURE_SM3.
510 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
511 SM3.
512 * config.gcc: Add sm3intrin.h
513 * config/i386/cpuid.h (bit_SM3): New.
514 * config/i386/i386-builtin-types.def:
515 Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
516 * config/i386/i386-builtin.def (BDESC): Add new builtins.
517 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
518 __SM3__.
519 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
520 V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
521 * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
522 * config/i386/i386-options.cc (isa2_opts): Add -msm3.
523 (ix86_valid_target_attribute_inner_p): Handle sm3.
524 * config/i386/i386.opt: Add option -msm3.
525 * config/i386/immintrin.h: Include sm3intrin.h.
526 * config/i386/sse.md (vsm3msg1): New define insn.
527 (vsm3msg2): Ditto.
528 (vsm3rnds2): Ditto.
529 * doc/extend.texi: Document sm3.
530 * doc/invoke.texi: Document -msm3.
531 * doc/sourcebuild.texi: Document target sm3.
532 * config/i386/sm3intrin.h: New file.
533
534 2023-07-17 Kong Lingling <lingling.kong@intel.com>
535 Haochen Jiang <haochen.jiang@intel.com>
536
537 * common/config/i386/cpuinfo.h (get_available_features): Detect
538 avxvnniint16.
539 * common/config/i386/i386-common.cc
540 (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
541 (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
542 (ix86_handle_option): Handle -mavxvnniint16.
543 * common/config/i386/i386-cpuinfo.h (enum processor_features):
544 Add FEATURE_AVXVNNIINT16.
545 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
546 avxvnniint16.
547 * config.gcc: Add avxvnniint16.h.
548 * config/i386/avxvnniint16intrin.h: New file.
549 * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
550 * config/i386/i386-builtin.def: Add new builtins.
551 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
552 __AVXVNNIINT16__.
553 * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
554 (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
555 * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
556 * config/i386/i386.opt: Add option -mavxvnniint16.
557 * config/i386/immintrin.h: Include avxvnniint16.h.
558 * config/i386/sse.md
559 (vpdp<vpdpwprodtype>_<mode>): New define_insn.
560 * doc/extend.texi: Document avxvnniint16.
561 * doc/invoke.texi: Document -mavxvnniint16.
562 * doc/sourcebuild.texi: Document target avxvnniint16.
563
564 2023-07-16 Jan Hubicka <jh@suse.cz>
565
566 PR middle-end/110649
567 * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
568 (vect_transform_loop): Move scale_profile_for_vect_loop after
569 upper bound updates.
570
571 2023-07-16 Jan Hubicka <jh@suse.cz>
572
573 PR tree-optimization/110649
574 * tree-vect-loop.cc (optimize_mask_stores): Set correctly
575 probability of the if-then-else construct.
576
577 2023-07-16 Jan Hubicka <jh@suse.cz>
578
579 PR middle-end/110649
580 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
581
582 2023-07-15 Andrew Pinski <apinski@marvell.com>
583
584 * doc/contrib.texi: Update my entry.
585
586 2023-07-15 John David Anglin <danglin@gcc.gnu.org>
587
588 * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
589 R27_REGNUM.
590 (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
591 (tld_load): Likewise.
592 (tgd_load_pic): Change to expander.
593 (tld_load_pic, tld_offset_load, tp_load): Likewise.
594 (tie_load_pic, tle_load): Likewise.
595 (tgd_load_picsi, tgd_load_picdi): New.
596 (tld_load_picsi, tld_load_picdi): New.
597 (tld_offset_load<P:mode>): New.
598 (tp_load<P:mode>): New.
599 (tie_load_picsi, tie_load_picdi): New.
600 (tle_load<P:mode>): New.
601
602 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
603
604 * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
605 (vcmlaq_rot180, vcmlaq_rot270): New.
606 * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
607 (vcmlaq_rot180, vcmlaq_rot270): New.
608 * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
609 (vcmlaq_rot180, vcmlaq_rot270): New.
610 * config/arm/arm-mve-builtins.cc
611 (function_instance::has_inactive_argument): Handle vcmlaq,
612 vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
613 * config/arm/arm_mve.h (vcmlaq): Delete.
614 (vcmlaq_rot180): Delete.
615 (vcmlaq_rot270): Delete.
616 (vcmlaq_rot90): Delete.
617 (vcmlaq_m): Delete.
618 (vcmlaq_rot180_m): Delete.
619 (vcmlaq_rot270_m): Delete.
620 (vcmlaq_rot90_m): Delete.
621 (vcmlaq_f16): Delete.
622 (vcmlaq_rot180_f16): Delete.
623 (vcmlaq_rot270_f16): Delete.
624 (vcmlaq_rot90_f16): Delete.
625 (vcmlaq_f32): Delete.
626 (vcmlaq_rot180_f32): Delete.
627 (vcmlaq_rot270_f32): Delete.
628 (vcmlaq_rot90_f32): Delete.
629 (vcmlaq_m_f32): Delete.
630 (vcmlaq_m_f16): Delete.
631 (vcmlaq_rot180_m_f32): Delete.
632 (vcmlaq_rot180_m_f16): Delete.
633 (vcmlaq_rot270_m_f32): Delete.
634 (vcmlaq_rot270_m_f16): Delete.
635 (vcmlaq_rot90_m_f32): Delete.
636 (vcmlaq_rot90_m_f16): Delete.
637 (__arm_vcmlaq_f16): Delete.
638 (__arm_vcmlaq_rot180_f16): Delete.
639 (__arm_vcmlaq_rot270_f16): Delete.
640 (__arm_vcmlaq_rot90_f16): Delete.
641 (__arm_vcmlaq_f32): Delete.
642 (__arm_vcmlaq_rot180_f32): Delete.
643 (__arm_vcmlaq_rot270_f32): Delete.
644 (__arm_vcmlaq_rot90_f32): Delete.
645 (__arm_vcmlaq_m_f32): Delete.
646 (__arm_vcmlaq_m_f16): Delete.
647 (__arm_vcmlaq_rot180_m_f32): Delete.
648 (__arm_vcmlaq_rot180_m_f16): Delete.
649 (__arm_vcmlaq_rot270_m_f32): Delete.
650 (__arm_vcmlaq_rot270_m_f16): Delete.
651 (__arm_vcmlaq_rot90_m_f32): Delete.
652 (__arm_vcmlaq_rot90_m_f16): Delete.
653 (__arm_vcmlaq): Delete.
654 (__arm_vcmlaq_rot180): Delete.
655 (__arm_vcmlaq_rot270): Delete.
656 (__arm_vcmlaq_rot90): Delete.
657 (__arm_vcmlaq_m): Delete.
658 (__arm_vcmlaq_rot180_m): Delete.
659 (__arm_vcmlaq_rot270_m): Delete.
660 (__arm_vcmlaq_rot90_m): Delete.
661
662 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
663
664 * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
665 (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
666 * config/arm/iterators.md (MVE_VCMLAQ_M): New.
667 (mve_insn): Add vcmla.
668 (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
669 VCMLAQ_ROT270_M_F.
670 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
671 VCMLAQ_ROT270_M_F.
672 * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
673 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
674 (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
675 (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
676 into ...
677 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
678
679 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
680
681 * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
682 (vcmulq_rot180, vcmulq_rot270): New.
683 * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
684 (vcmulq_rot180, vcmulq_rot270): New.
685 * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
686 (vcmulq_rot180, vcmulq_rot270): New.
687 * config/arm/arm_mve.h (vcmulq_rot90): Delete.
688 (vcmulq_rot270): Delete.
689 (vcmulq_rot180): Delete.
690 (vcmulq): Delete.
691 (vcmulq_m): Delete.
692 (vcmulq_rot180_m): Delete.
693 (vcmulq_rot270_m): Delete.
694 (vcmulq_rot90_m): Delete.
695 (vcmulq_x): Delete.
696 (vcmulq_rot90_x): Delete.
697 (vcmulq_rot180_x): Delete.
698 (vcmulq_rot270_x): Delete.
699 (vcmulq_rot90_f16): Delete.
700 (vcmulq_rot270_f16): Delete.
701 (vcmulq_rot180_f16): Delete.
702 (vcmulq_f16): Delete.
703 (vcmulq_rot90_f32): Delete.
704 (vcmulq_rot270_f32): Delete.
705 (vcmulq_rot180_f32): Delete.
706 (vcmulq_f32): Delete.
707 (vcmulq_m_f32): Delete.
708 (vcmulq_m_f16): Delete.
709 (vcmulq_rot180_m_f32): Delete.
710 (vcmulq_rot180_m_f16): Delete.
711 (vcmulq_rot270_m_f32): Delete.
712 (vcmulq_rot270_m_f16): Delete.
713 (vcmulq_rot90_m_f32): Delete.
714 (vcmulq_rot90_m_f16): Delete.
715 (vcmulq_x_f16): Delete.
716 (vcmulq_x_f32): Delete.
717 (vcmulq_rot90_x_f16): Delete.
718 (vcmulq_rot90_x_f32): Delete.
719 (vcmulq_rot180_x_f16): Delete.
720 (vcmulq_rot180_x_f32): Delete.
721 (vcmulq_rot270_x_f16): Delete.
722 (vcmulq_rot270_x_f32): Delete.
723 (__arm_vcmulq_rot90_f16): Delete.
724 (__arm_vcmulq_rot270_f16): Delete.
725 (__arm_vcmulq_rot180_f16): Delete.
726 (__arm_vcmulq_f16): Delete.
727 (__arm_vcmulq_rot90_f32): Delete.
728 (__arm_vcmulq_rot270_f32): Delete.
729 (__arm_vcmulq_rot180_f32): Delete.
730 (__arm_vcmulq_f32): Delete.
731 (__arm_vcmulq_m_f32): Delete.
732 (__arm_vcmulq_m_f16): Delete.
733 (__arm_vcmulq_rot180_m_f32): Delete.
734 (__arm_vcmulq_rot180_m_f16): Delete.
735 (__arm_vcmulq_rot270_m_f32): Delete.
736 (__arm_vcmulq_rot270_m_f16): Delete.
737 (__arm_vcmulq_rot90_m_f32): Delete.
738 (__arm_vcmulq_rot90_m_f16): Delete.
739 (__arm_vcmulq_x_f16): Delete.
740 (__arm_vcmulq_x_f32): Delete.
741 (__arm_vcmulq_rot90_x_f16): Delete.
742 (__arm_vcmulq_rot90_x_f32): Delete.
743 (__arm_vcmulq_rot180_x_f16): Delete.
744 (__arm_vcmulq_rot180_x_f32): Delete.
745 (__arm_vcmulq_rot270_x_f16): Delete.
746 (__arm_vcmulq_rot270_x_f32): Delete.
747 (__arm_vcmulq_rot90): Delete.
748 (__arm_vcmulq_rot270): Delete.
749 (__arm_vcmulq_rot180): Delete.
750 (__arm_vcmulq): Delete.
751 (__arm_vcmulq_m): Delete.
752 (__arm_vcmulq_rot180_m): Delete.
753 (__arm_vcmulq_rot270_m): Delete.
754 (__arm_vcmulq_rot90_m): Delete.
755 (__arm_vcmulq_x): Delete.
756 (__arm_vcmulq_rot90_x): Delete.
757 (__arm_vcmulq_rot180_x): Delete.
758 (__arm_vcmulq_rot270_x): Delete.
759
760 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
761
762 * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
763 (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
764 * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
765 (MVE_VCADDQ_VCMULQ_M): New.
766 (mve_insn): Add vcmul.
767 (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
768 VCMULQ_ROT270_M_F.
769 (VCMUL): Delete.
770 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
771 VCMULQ_ROT270_M_F.
772 * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
773 @mve_<mve_insn>q<mve_rot>_f<mode>.
774 (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
775 (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
776 into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
777
778 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
779
780 * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
781 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
782 * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
783 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
784 * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
785 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
786 * config/arm/arm-mve-builtins-functions.h (class
787 unspec_mve_function_exact_insn_rot): New.
788 * config/arm/arm_mve.h (vcaddq_rot90): Delete.
789 (vcaddq_rot270): Delete.
790 (vhcaddq_rot90): Delete.
791 (vhcaddq_rot270): Delete.
792 (vcaddq_rot270_m): Delete.
793 (vcaddq_rot90_m): Delete.
794 (vhcaddq_rot270_m): Delete.
795 (vhcaddq_rot90_m): Delete.
796 (vcaddq_rot90_x): Delete.
797 (vcaddq_rot270_x): Delete.
798 (vhcaddq_rot90_x): Delete.
799 (vhcaddq_rot270_x): Delete.
800 (vcaddq_rot90_u8): Delete.
801 (vcaddq_rot270_u8): Delete.
802 (vhcaddq_rot90_s8): Delete.
803 (vhcaddq_rot270_s8): Delete.
804 (vcaddq_rot90_s8): Delete.
805 (vcaddq_rot270_s8): Delete.
806 (vcaddq_rot90_u16): Delete.
807 (vcaddq_rot270_u16): Delete.
808 (vhcaddq_rot90_s16): Delete.
809 (vhcaddq_rot270_s16): Delete.
810 (vcaddq_rot90_s16): Delete.
811 (vcaddq_rot270_s16): Delete.
812 (vcaddq_rot90_u32): Delete.
813 (vcaddq_rot270_u32): Delete.
814 (vhcaddq_rot90_s32): Delete.
815 (vhcaddq_rot270_s32): Delete.
816 (vcaddq_rot90_s32): Delete.
817 (vcaddq_rot270_s32): Delete.
818 (vcaddq_rot90_f16): Delete.
819 (vcaddq_rot270_f16): Delete.
820 (vcaddq_rot90_f32): Delete.
821 (vcaddq_rot270_f32): Delete.
822 (vcaddq_rot270_m_s8): Delete.
823 (vcaddq_rot270_m_s32): Delete.
824 (vcaddq_rot270_m_s16): Delete.
825 (vcaddq_rot270_m_u8): Delete.
826 (vcaddq_rot270_m_u32): Delete.
827 (vcaddq_rot270_m_u16): Delete.
828 (vcaddq_rot90_m_s8): Delete.
829 (vcaddq_rot90_m_s32): Delete.
830 (vcaddq_rot90_m_s16): Delete.
831 (vcaddq_rot90_m_u8): Delete.
832 (vcaddq_rot90_m_u32): Delete.
833 (vcaddq_rot90_m_u16): Delete.
834 (vhcaddq_rot270_m_s8): Delete.
835 (vhcaddq_rot270_m_s32): Delete.
836 (vhcaddq_rot270_m_s16): Delete.
837 (vhcaddq_rot90_m_s8): Delete.
838 (vhcaddq_rot90_m_s32): Delete.
839 (vhcaddq_rot90_m_s16): Delete.
840 (vcaddq_rot270_m_f32): Delete.
841 (vcaddq_rot270_m_f16): Delete.
842 (vcaddq_rot90_m_f32): Delete.
843 (vcaddq_rot90_m_f16): Delete.
844 (vcaddq_rot90_x_s8): Delete.
845 (vcaddq_rot90_x_s16): Delete.
846 (vcaddq_rot90_x_s32): Delete.
847 (vcaddq_rot90_x_u8): Delete.
848 (vcaddq_rot90_x_u16): Delete.
849 (vcaddq_rot90_x_u32): Delete.
850 (vcaddq_rot270_x_s8): Delete.
851 (vcaddq_rot270_x_s16): Delete.
852 (vcaddq_rot270_x_s32): Delete.
853 (vcaddq_rot270_x_u8): Delete.
854 (vcaddq_rot270_x_u16): Delete.
855 (vcaddq_rot270_x_u32): Delete.
856 (vhcaddq_rot90_x_s8): Delete.
857 (vhcaddq_rot90_x_s16): Delete.
858 (vhcaddq_rot90_x_s32): Delete.
859 (vhcaddq_rot270_x_s8): Delete.
860 (vhcaddq_rot270_x_s16): Delete.
861 (vhcaddq_rot270_x_s32): Delete.
862 (vcaddq_rot90_x_f16): Delete.
863 (vcaddq_rot90_x_f32): Delete.
864 (vcaddq_rot270_x_f16): Delete.
865 (vcaddq_rot270_x_f32): Delete.
866 (__arm_vcaddq_rot90_u8): Delete.
867 (__arm_vcaddq_rot270_u8): Delete.
868 (__arm_vhcaddq_rot90_s8): Delete.
869 (__arm_vhcaddq_rot270_s8): Delete.
870 (__arm_vcaddq_rot90_s8): Delete.
871 (__arm_vcaddq_rot270_s8): Delete.
872 (__arm_vcaddq_rot90_u16): Delete.
873 (__arm_vcaddq_rot270_u16): Delete.
874 (__arm_vhcaddq_rot90_s16): Delete.
875 (__arm_vhcaddq_rot270_s16): Delete.
876 (__arm_vcaddq_rot90_s16): Delete.
877 (__arm_vcaddq_rot270_s16): Delete.
878 (__arm_vcaddq_rot90_u32): Delete.
879 (__arm_vcaddq_rot270_u32): Delete.
880 (__arm_vhcaddq_rot90_s32): Delete.
881 (__arm_vhcaddq_rot270_s32): Delete.
882 (__arm_vcaddq_rot90_s32): Delete.
883 (__arm_vcaddq_rot270_s32): Delete.
884 (__arm_vcaddq_rot270_m_s8): Delete.
885 (__arm_vcaddq_rot270_m_s32): Delete.
886 (__arm_vcaddq_rot270_m_s16): Delete.
887 (__arm_vcaddq_rot270_m_u8): Delete.
888 (__arm_vcaddq_rot270_m_u32): Delete.
889 (__arm_vcaddq_rot270_m_u16): Delete.
890 (__arm_vcaddq_rot90_m_s8): Delete.
891 (__arm_vcaddq_rot90_m_s32): Delete.
892 (__arm_vcaddq_rot90_m_s16): Delete.
893 (__arm_vcaddq_rot90_m_u8): Delete.
894 (__arm_vcaddq_rot90_m_u32): Delete.
895 (__arm_vcaddq_rot90_m_u16): Delete.
896 (__arm_vhcaddq_rot270_m_s8): Delete.
897 (__arm_vhcaddq_rot270_m_s32): Delete.
898 (__arm_vhcaddq_rot270_m_s16): Delete.
899 (__arm_vhcaddq_rot90_m_s8): Delete.
900 (__arm_vhcaddq_rot90_m_s32): Delete.
901 (__arm_vhcaddq_rot90_m_s16): Delete.
902 (__arm_vcaddq_rot90_x_s8): Delete.
903 (__arm_vcaddq_rot90_x_s16): Delete.
904 (__arm_vcaddq_rot90_x_s32): Delete.
905 (__arm_vcaddq_rot90_x_u8): Delete.
906 (__arm_vcaddq_rot90_x_u16): Delete.
907 (__arm_vcaddq_rot90_x_u32): Delete.
908 (__arm_vcaddq_rot270_x_s8): Delete.
909 (__arm_vcaddq_rot270_x_s16): Delete.
910 (__arm_vcaddq_rot270_x_s32): Delete.
911 (__arm_vcaddq_rot270_x_u8): Delete.
912 (__arm_vcaddq_rot270_x_u16): Delete.
913 (__arm_vcaddq_rot270_x_u32): Delete.
914 (__arm_vhcaddq_rot90_x_s8): Delete.
915 (__arm_vhcaddq_rot90_x_s16): Delete.
916 (__arm_vhcaddq_rot90_x_s32): Delete.
917 (__arm_vhcaddq_rot270_x_s8): Delete.
918 (__arm_vhcaddq_rot270_x_s16): Delete.
919 (__arm_vhcaddq_rot270_x_s32): Delete.
920 (__arm_vcaddq_rot90_f16): Delete.
921 (__arm_vcaddq_rot270_f16): Delete.
922 (__arm_vcaddq_rot90_f32): Delete.
923 (__arm_vcaddq_rot270_f32): Delete.
924 (__arm_vcaddq_rot270_m_f32): Delete.
925 (__arm_vcaddq_rot270_m_f16): Delete.
926 (__arm_vcaddq_rot90_m_f32): Delete.
927 (__arm_vcaddq_rot90_m_f16): Delete.
928 (__arm_vcaddq_rot90_x_f16): Delete.
929 (__arm_vcaddq_rot90_x_f32): Delete.
930 (__arm_vcaddq_rot270_x_f16): Delete.
931 (__arm_vcaddq_rot270_x_f32): Delete.
932 (__arm_vcaddq_rot90): Delete.
933 (__arm_vcaddq_rot270): Delete.
934 (__arm_vhcaddq_rot90): Delete.
935 (__arm_vhcaddq_rot270): Delete.
936 (__arm_vcaddq_rot270_m): Delete.
937 (__arm_vcaddq_rot90_m): Delete.
938 (__arm_vhcaddq_rot270_m): Delete.
939 (__arm_vhcaddq_rot90_m): Delete.
940 (__arm_vcaddq_rot90_x): Delete.
941 (__arm_vcaddq_rot270_x): Delete.
942 (__arm_vhcaddq_rot90_x): Delete.
943 (__arm_vhcaddq_rot270_x): Delete.
944
945 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
946
947 * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
948 (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
949 * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
950 (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
951 VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
952 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
953 VHCADDQ_ROT270_S.
954 (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
955 VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
956 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
957 VHCADDQ_ROT270_M_S.
958 (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
959 VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
960 VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
961 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
962 (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
963 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
964 UNSPEC_VCADD270.
965 (VCADDQ_ROT270_M): Delete.
966 (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
967 (VCADDQ_ROT90_M): Delete.
968 * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
969 (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
970 into ...
971 (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
972 (mve_vcaddq<mve_rot><mode>): Rename into ...
973 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
974 (mve_vcaddq_rot270_m_<supf><mode>)
975 (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
976 (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
977 (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
978 (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
979 into ...
980 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
981
982 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
983
984 PR target/110588
985 * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
986 preparation statement over braces for a single statement.
987 (*bt<mode>_setncqi): Likewise.
988 (*bt<mode>_setncqi_2): New define_insn_and_split.
989
990 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
991
992 * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
993 case inserting of 64-bit values into a TImode register, to handle
994 both DImode and DFmode using either *insvti_lowpart_1
995 or *isnvti_highpart_1.
996
997 2023-07-14 Uros Bizjak <ubizjak@gmail.com>
998
999 PR target/110206
1000 * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
1001 * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
1002 * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
1003 * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
1004 when the original source contains a paradoxical subreg.
1005
1006 2023-07-14 Jan Hubicka <jh@suse.cz>
1007
1008 * passes.cc (execute_function_todo): Remove
1009 TODO_rebuild_frequencies
1010 * passes.def: Add rebuild_frequencies pass.
1011 * predict.cc (estimate_bb_frequencies): Drop
1012 force parameter.
1013 (tree_estimate_probability): Update call of
1014 estimate_bb_frequencies.
1015 (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
1016 first and do not rebuild if not necessary.
1017 (class pass_rebuild_frequencies): New.
1018 (make_pass_rebuild_frequencies): New.
1019 * profile-count.h: Add profile_count::very_large_p.
1020 * tree-inline.cc (optimize_inline_calls): Do not return
1021 TODO_rebuild_frequencies
1022 * tree-pass.h (TODO_rebuild_frequencies): Remove.
1023 (make_pass_rebuild_frequencies): Declare.
1024
1025 2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1026
1027 * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
1028 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1029 (expand_cond_len_ternop): New function.
1030 * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
1031 (expand_cond_len_ternop): Ditto.
1032
1033 2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com>
1034
1035 PR target/110657
1036 * config/bpf/bpf.md: Enable instruction scheduling.
1037
1038 2023-07-14 Tamar Christina <tamar.christina@arm.com>
1039
1040 PR tree-optimization/109154
1041 * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
1042 (struct bb_predicate): Add no_predicate_stmts.
1043 (set_bb_predicate): Increase predicate count.
1044 (set_bb_predicate_gimplified_stmts): Conditionally initialize
1045 no_predicate_stmts.
1046 (get_bb_num_predicate_stmts): New.
1047 (init_bb_predicate): Initialzie no_predicate_stmts.
1048 (release_bb_predicate): Cleanup no_predicate_stmts.
1049 (insert_gimplified_predicates): Preserve no_predicate_stmts.
1050
1051 2023-07-14 Tamar Christina <tamar.christina@arm.com>
1052
1053 PR tree-optimization/109154
1054 * tree-if-conv.cc (gen_simplified_condition,
1055 gen_phi_nest_statement): New.
1056 (gen_phi_arg_condition, predicate_scalar_phi): Use it.
1057
1058 2023-07-14 Richard Biener <rguenther@suse.de>
1059
1060 * gimple.h (gimple_phi_arg): New const overload.
1061 (gimple_phi_arg_def): Make gimple arg const.
1062 (gimple_phi_arg_def_from_edge): New inline function.
1063 * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
1064 Likewise.
1065 * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
1066 new inline function.
1067 (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
1068
1069 2023-07-14 Monk Chiang <monk.chiang@sifive.com>
1070
1071 * common/config/riscv/riscv-common.cc:
1072 (riscv_implied_info): Add zihintntl item.
1073 (riscv_ext_version_table): Ditto.
1074 (riscv_ext_flag_table): Ditto.
1075 * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
1076 (TARGET_ZIHINTNTL): Ditto.
1077
1078 2023-07-14 Die Li <lidie@eswincomputing.com>
1079
1080 * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
1081
1082 2023-07-14 Oleg Endo <olegendo@gcc.gnu.org>
1083
1084 PR target/101469
1085 * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
1086 used by the address of the following memory operand.
1087
1088 2023-07-13 Mikael Pettersson <mikpelinux@gmail.com>
1089
1090 PR target/107841
1091 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
1092 deallocate alloca-only frame.
1093
1094 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
1095
1096 PR target/110624
1097 * config/darwin.h (DARWIN_PLATFORM_ID): New.
1098 (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
1099 and SDK data to the static linker.
1100
1101 2023-07-13 Carl Love <cel@us.ibm.com>
1102
1103 * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
1104 built-in definition return type.
1105 * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
1106 define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
1107 * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
1108 argument to return FPSCR fields.
1109 * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
1110 the return value. Add description for
1111 __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
1112
1113 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
1114
1115 PR target/106966
1116 * config/alpha/alpha.cc (alpha_emit_set_long_const):
1117 Always use DImode when constructing long const.
1118
1119 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
1120
1121 * haifa-sched.cc: Change TRUE/FALSE to true/false.
1122 * ira.cc: Ditto.
1123 * lra-assigns.cc: Ditto.
1124 * lra-constraints.cc: Ditto.
1125 * sel-sched.cc: Ditto.
1126
1127 2023-07-13 Andrew Pinski <apinski@marvell.com>
1128
1129 PR tree-optimization/110293
1130 PR tree-optimization/110539
1131 * match.pd: Expand the `x != (typeof x)(x == 0)`
1132 pattern to handle where the inner and outer comparsions
1133 are either `!=` or `==` and handle other constants
1134 than 0.
1135
1136 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
1137
1138 PR middle-end/109520
1139 * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
1140 (lra_asm_insn_error): New prototype.
1141 * lra.cc: Include rtl_error.h.
1142 (lra_set_insn_recog_data): Initialize asm_reloads_num.
1143 (lra_asm_insn_error): New func whose code is taken from ...
1144 * lra-assigns.cc (lra_split_hard_reg_for): ... here. Use lra_asm_insn_error.
1145 * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
1146
1147 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1148
1149 * genmatch.cc (commutative_op): Add COND_LEN_*
1150 * internal-fn.cc (first_commutative_argument): Ditto.
1151 (CASE): Ditto.
1152 (get_unconditional_internal_fn): Ditto.
1153 (can_interpret_as_conditional_op_p): Ditto.
1154 (internal_fn_len_index): Ditto.
1155 * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
1156 * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
1157 (convert_mult_to_fma): Ditto.
1158 (math_opts_dom_walker::after_dom_children): Ditto.
1159
1160 2023-07-13 Pan Li <pan2.li@intel.com>
1161
1162 * config/riscv/riscv.cc (vxrm_rtx): New static var.
1163 (frm_rtx): Ditto.
1164 (global_state_unknown_p): Removed.
1165 (riscv_entity_mode_after): Removed.
1166 (asm_insn_p): New function.
1167 (vxrm_unknown_p): New function for fixed-point.
1168 (riscv_vxrm_mode_after): Ditto.
1169 (frm_unknown_dynamic_p): New function for floating-point.
1170 (riscv_frm_mode_after): Ditto.
1171 (riscv_mode_after): Leverage new functions.
1172
1173 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1174
1175 * tree-vect-stmts.cc (vect_model_load_cost): Remove.
1176 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
1177 calling vect_model_load_cost.
1178
1179 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1180
1181 * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
1182 handle memory_access_type VMAT_CONTIGUOUS, remove some
1183 VMAT_CONTIGUOUS_PERMUTE related handlings.
1184 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
1185 without calling vect_model_load_cost.
1186
1187 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1188
1189 * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
1190 VMAT_CONTIGUOUS_REVERSE any more.
1191 (vectorizable_load): Adjust the costing handling on
1192 VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
1193
1194 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1195
1196 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
1197 VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
1198 (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
1199 assert it will never get VMAT_LOAD_STORE_LANES.
1200
1201 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1202
1203 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
1204 VMAT_GATHER_SCATTER without calling vect_model_load_cost.
1205 (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
1206 remove VMAT_GATHER_SCATTER related handlings and the related parameter
1207 gs_info.
1208
1209 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1210
1211 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
1212 on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
1213 vect_model_load_cost.
1214 (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
1215 VMAT_STRIDED_SLP any more, and remove their related handlings.
1216
1217 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1218
1219 * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
1220 (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
1221 hoisting decision and without calling vect_model_load_cost.
1222 (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
1223 and remove VMAT_INVARIANT related handlings.
1224
1225 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1226
1227 * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
1228 on costing with one extra argument cost_vec.
1229 (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
1230 (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
1231 gs_info.decl set any more.
1232
1233 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1234
1235 * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
1236 to vect_model_load_cost down to some different transform paths
1237 according to the handlings of different vect_memory_access_types.
1238
1239 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1240
1241 * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
1242
1243 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1244
1245 * config/riscv/autovec.md
1246 (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
1247 (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
1248 (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
1249 (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
1250 (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1251 (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
1252 (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
1253 (len_mask_gather_load<mode><mode>): Ditto.
1254 (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
1255 (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
1256 (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
1257 (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
1258 (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1259 (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
1260 (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
1261 (len_mask_scatter_store<mode><mode>): Ditto.
1262 * config/riscv/predicates.md (const_1_operand): New predicate.
1263 (vector_gs_scale_operand_16): Ditto.
1264 (vector_gs_scale_operand_32): Ditto.
1265 (vector_gs_scale_operand_64): Ditto.
1266 (vector_gs_extension_operand): Ditto.
1267 (vector_gs_scale_operand_16_rv32): Ditto.
1268 (vector_gs_scale_operand_32_rv32): Ditto.
1269 * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
1270 (expand_gather_scatter): New function.
1271 * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
1272 (emit_vlmax_masked_store_insn): New function.
1273 (emit_nonvlmax_masked_store_insn): Ditto.
1274 (modulo_sel_indices): Ditto.
1275 (expand_vec_perm): Fix SLP for gather/scatter.
1276 (prepare_gather_scatter): New function.
1277 (expand_gather_scatter): Ditto.
1278 * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
1279 (subreg:SI (DI CONST_POLY_INT)).
1280 * config/riscv/vector-iterators.md: Add gather/scatter.
1281 * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
1282 (@vec_duplicate<mode>): Ditto.
1283 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
1284 Fix name.
1285 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1286
1287 2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1288
1289 * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
1290 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1291 (expand_cond_len_binop): New function.
1292 * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
1293 (emit_nonvlmax_fp_tu_insn): Ditto.
1294 (need_fp_rounding_p): Ditto.
1295 (expand_cond_len_binop): Ditto.
1296 * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
1297 (TARGET_PREFERRED_ELSE_VALUE): New target hook.
1298
1299 2023-07-12 Jan Hubicka <jh@suse.cz>
1300
1301 * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
1302 (gimple_duplicate_seme_region): ... this; break out profile updating
1303 code to ...
1304 * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
1305 (ch_base::copy_headers): Update.
1306 * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
1307 (gimple_duplicate_seme_region): ... this.
1308
1309 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
1310
1311 PR tree-optimization/107043
1312 * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
1313
1314 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
1315
1316 PR tree-optimization/107053
1317 * gimple-range-op.cc (cfn_popcount): Use known set bits.
1318
1319 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
1320
1321 * ira.cc (equiv_init_varies_p): Change return type from int to bool
1322 and adjust function body accordingly.
1323 (equiv_init_movable_p): Ditto.
1324 (memref_used_between_p): Ditto.
1325 * lra-constraints.cc (valid_address_p): Ditto.
1326
1327 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
1328
1329 * range-op.cc (irange_to_masked_value): Remove.
1330 (update_known_bitmask): Update irange value/mask pair instead of
1331 only updating nonzero bits.
1332
1333 2023-07-12 Jan Hubicka <jh@suse.cz>
1334
1335 * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
1336 parameter and rewrite profile updating code to handle edges elimination.
1337 * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
1338 * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
1339 (loop_iv_derived_p): New function.
1340 (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
1341 of PHIs and propagation of IV derived variables.
1342 (ch_base::copy_headers): Pass around the invariant edges hash set.
1343
1344 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
1345
1346 * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
1347 (last_active_insn): Change "skip_use_p" function argument to bool.
1348 (noce_operand_ok): Change return type from int to bool.
1349 (find_cond_trap): Ditto.
1350 (block_jumps_and_fallthru_p): Change "fallthru_p" and
1351 "jump_p" variables to bool.
1352 (noce_find_if_block): Change return type from int to bool.
1353 (cond_exec_find_if_block): Ditto.
1354 (find_if_case_1): Ditto.
1355 (find_if_case_2): Ditto.
1356 (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
1357 (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
1358 (cond_exec_process_insns): Change return type from int to bool.
1359 Change "mod_ok" function arg to bool.
1360 (cond_exec_process_if_block): Change return type from int to bool.
1361 Change "do_multiple_p" function arg to bool. Change "then_mod_ok"
1362 variable to bool.
1363 (noce_emit_store_flag): Change return type from int to bool.
1364 Change "reversep" function arg to bool. Change "cond_complex"
1365 variable to bool.
1366 (noce_try_move): Change return type from int to bool.
1367 (noce_try_ifelse_collapse): Ditto.
1368 (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
1369 (noce_try_addcc): Change return type from int to bool. Change
1370 "subtract" variable to bool.
1371 (noce_try_store_flag_constants): Change return type from int to bool.
1372 (noce_try_store_flag_mask): Ditto. Change "reversep" variable to bool.
1373 (noce_try_cmove): Change return type from int to bool.
1374 (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
1375 (noce_try_minmax): Change return type from int to bool. Change
1376 "unsignedp" variable to bool.
1377 (noce_try_abs): Change return type from int to bool. Change
1378 "negate" variable to bool.
1379 (noce_try_sign_mask): Change return type from int to bool.
1380 (noce_try_move): Ditto.
1381 (noce_try_store_flag_constants): Ditto.
1382 (noce_try_cmove): Ditto.
1383 (noce_try_cmove_arith): Ditto.
1384 (noce_try_minmax): Ditto. Change "unsignedp" variable to bool.
1385 (noce_try_bitop): Change return type from int to bool.
1386 (noce_operand_ok): Ditto.
1387 (noce_convert_multiple_sets): Ditto.
1388 (noce_convert_multiple_sets_1): Ditto.
1389 (noce_process_if_block): Ditto.
1390 (check_cond_move_block): Ditto.
1391 (cond_move_process_if_block): Ditto. Change "success_p"
1392 variable to bool.
1393 (rest_of_handle_if_conversion): Change return type to void.
1394
1395 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1396
1397 * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
1398 (CASE): Ditto.
1399 (get_conditional_len_internal_fn): New function.
1400 * internal-fn.h (get_conditional_len_internal_fn): Ditto.
1401 * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
1402 support.
1403
1404 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1405
1406 PR target/91681
1407 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
1408
1409 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1410
1411 PR target/91681
1412 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
1413 define_insn_and_split derived from *add<dwi>3_doubleword_concat
1414 and *add<dwi>3_doubleword_zext.
1415
1416 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1417
1418 PR target/110598
1419 * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
1420 optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
1421 (peephole2): Simplify rega = 0; rega op= rega cases.
1422
1423 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1424
1425 * config/i386/i386-expand.cc (ix86_expand_int_compare): If
1426 testing a TImode SUBREG of a 128-bit vector register against
1427 zero, use a PTEST instruction instead of first moving it to
1428 a pair of scalar registers.
1429
1430 2023-07-12 Robin Dapp <rdapp@ventanamicro.com>
1431
1432 * genopinit.cc (main): Adjust maximal number of optabs and
1433 machine modes.
1434 * gensupport.cc (find_optab): Shift optab by 20 and mode by
1435 10 bits.
1436 * optabs-query.h (optab_handler): Ditto.
1437 (convert_optab_handler): Ditto.
1438
1439 2023-07-12 Richard Biener <rguenther@suse.de>
1440
1441 PR tree-optimization/110630
1442 * tree-vect-slp.cc (vect_add_slp_permutation): New
1443 offset parameter, honor that for the extract code generation.
1444 (vectorizable_slp_permutation_1): Handle offsetted identities.
1445
1446 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1447
1448 * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
1449 (umul<mode>3_highpart): Ditto.
1450
1451 2023-07-12 Jan Beulich <jbeulich@suse.com>
1452
1453 * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
1454 alternative. Adjust original last alternative's "prefix"
1455 attribute to maybe_evex.
1456
1457 2023-07-12 Jan Beulich <jbeulich@suse.com>
1458
1459 * config/i386/sse.md (vec_dupv4sf): Make first alternative use
1460 vbroadcastss for AVX2. New AVX512F alternative.
1461 (*vec_dupv4si): New AVX2 and AVX512F alternatives using
1462 vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
1463
1464 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1465
1466 * config/riscv/peephole.md: Remove XThead* peephole passes.
1467 * config/riscv/thead.md: Include thead-peephole.md.
1468 * config/riscv/thead-peephole.md: New file.
1469
1470 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1471
1472 * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
1473 New prototype.
1474 (riscv_index_reg_class): Likewise.
1475 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
1476 (riscv_index_reg_class): New function.
1477 * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
1478 riscv_index_reg_class().
1479 (REGNO_OK_FOR_INDEX_P): Call new function
1480 riscv_regno_ok_for_index_p().
1481
1482 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1483
1484 * config/riscv/riscv-protos.h (enum riscv_address_type):
1485 New location of type definition.
1486 (struct riscv_address_info): Likewise.
1487 * config/riscv/riscv.cc (enum riscv_address_type):
1488 Old location of type definition.
1489 (struct riscv_address_info): Likewise.
1490
1491 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1492
1493 * config/riscv/riscv.h (Xmode): New macro.
1494
1495 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1496
1497 * config/riscv/riscv.cc (riscv_print_operand_address): Use
1498 output_addr_const rather than riscv_print_operand.
1499
1500 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1501
1502 * config/riscv/thead.md: Adjust constraints of th_addsl.
1503
1504 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1505
1506 * config/riscv/thead.cc (th_mempair_operands_p):
1507 Fix documentation of th_mempair_order_operands().
1508
1509 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1510
1511 * config/riscv/thead.cc (th_mempair_save_regs):
1512 Emit REG_FRAME_RELATED_EXPR notes in prologue.
1513
1514 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1515
1516 * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
1517 * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
1518 New XThead extension INSN.
1519 (*zero_extendsidi2_th_extu): New XThead extension INSN.
1520 (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
1521
1522 2023-07-12 liuhongt <hongtao.liu@intel.com>
1523
1524 PR target/110438
1525 PR target/110202
1526 * config/i386/predicates.md
1527 (int_float_vector_all_ones_operand): New predicate.
1528 * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
1529 define_insn.
1530 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1531 Ditto.
1532 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1533 Ditto.
1534 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
1535 define_insn_and_split to avoid false dependence.
1536 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
1537 (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
1538 of operands 1 to '0' to avoid false dependence.
1539 (*andnot<mode>3): Ditto.
1540 (iornot<mode>3): Ditto.
1541 (*<nlogic><mode>3): Ditto.
1542
1543 2023-07-12 Mo, Zewei <zewei.mo@intel.com>
1544
1545 * common/config/i386/cpuinfo.h
1546 (get_intel_cpu): Handle Granite Rapids D.
1547 * common/config/i386/i386-common.cc:
1548 (processor_alias_table): Add graniterapids-d.
1549 * common/config/i386/i386-cpuinfo.h
1550 (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
1551 * config.gcc: Add -march=graniterapids-d.
1552 * config/i386/driver-i386.cc (host_detect_local_cpu):
1553 Handle graniterapids-d.
1554 * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
1555 * doc/extend.texi: Add graniterapids-d.
1556 * doc/invoke.texi: Ditto.
1557
1558 2023-07-12 Haochen Jiang <haochen.jiang@intel.com>
1559
1560 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
1561 Add OPTION_MASK_ISA_AVX512VL.
1562 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
1563 Ditto.
1564
1565 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1566
1567 * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
1568 * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
1569 (shuffle_compress_patterns): Ditto.
1570 (expand_vec_perm_const_1): Ditto.
1571
1572 2023-07-11 Uros Bizjak <ubizjak@gmail.com>
1573
1574 * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
1575 * cfghooks.h (struct cfg_hooks): Change return type of
1576 verify_flow_info from integer to bool.
1577 * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
1578 (can_delete_label_p): Ditto.
1579 (rtl_verify_flow_info): Change return type from int to bool
1580 and adjust function body accordingly. Change "err" variable to bool.
1581 (rtl_verify_flow_info_1): Ditto.
1582 (free_bb_for_insn): Change return type to void.
1583 (rtl_merge_blocks): Change "b_empty" variable to bool.
1584 (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
1585 (verify_hot_cold_block_grouping): Change return type from int to bool.
1586 Change "err" variable to bool.
1587 (rtl_verify_edges): Ditto.
1588 (rtl_verify_bb_insns): Ditto.
1589 (rtl_verify_bb_pointers): Ditto.
1590 (rtl_verify_bb_insn_chain): Ditto.
1591 (rtl_verify_fallthru): Ditto.
1592 (rtl_verify_bb_layout): Ditto.
1593 (purge_all_dead_edges): Change "purged" variable to bool.
1594 * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
1595 * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
1596 (load_killed_in_block_p): Change return type from int to bool
1597 and adjust function body accordingly.
1598 (oprs_unchanged_p): Return true/false.
1599 (rest_of_handle_gcse2): Change return type to void.
1600 * tree-cfg.cc (gimple_verify_flow_info): Change return type from
1601 int to bool. Change "err" variable to bool.
1602
1603 2023-07-11 Gaius Mulley <gaiusmod2@gmail.com>
1604
1605 * doc/gm2.texi (-Wuninit-variable-checking=) New item.
1606
1607 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1608
1609 * doc/md.texi: Add COND_LEN_* operations for loop control with length.
1610 * internal-fn.cc (cond_len_unary_direct): Ditto.
1611 (cond_len_binary_direct): Ditto.
1612 (cond_len_ternary_direct): Ditto.
1613 (expand_cond_len_unary_optab_fn): Ditto.
1614 (expand_cond_len_binary_optab_fn): Ditto.
1615 (expand_cond_len_ternary_optab_fn): Ditto.
1616 (direct_cond_len_unary_optab_supported_p): Ditto.
1617 (direct_cond_len_binary_optab_supported_p): Ditto.
1618 (direct_cond_len_ternary_optab_supported_p): Ditto.
1619 * internal-fn.def (COND_LEN_ADD): Ditto.
1620 (COND_LEN_SUB): Ditto.
1621 (COND_LEN_MUL): Ditto.
1622 (COND_LEN_DIV): Ditto.
1623 (COND_LEN_MOD): Ditto.
1624 (COND_LEN_RDIV): Ditto.
1625 (COND_LEN_MIN): Ditto.
1626 (COND_LEN_MAX): Ditto.
1627 (COND_LEN_FMIN): Ditto.
1628 (COND_LEN_FMAX): Ditto.
1629 (COND_LEN_AND): Ditto.
1630 (COND_LEN_IOR): Ditto.
1631 (COND_LEN_XOR): Ditto.
1632 (COND_LEN_SHL): Ditto.
1633 (COND_LEN_SHR): Ditto.
1634 (COND_LEN_FMA): Ditto.
1635 (COND_LEN_FMS): Ditto.
1636 (COND_LEN_FNMA): Ditto.
1637 (COND_LEN_FNMS): Ditto.
1638 (COND_LEN_NEG): Ditto.
1639 * optabs.def (OPTAB_D): Ditto.
1640
1641 2023-07-11 Richard Biener <rguenther@suse.de>
1642
1643 PR tree-optimization/110614
1644 * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
1645 SLP splats are not suitable for re-align ops.
1646
1647 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
1648
1649 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
1650 MEM_P usage.
1651 (vsx_quad_dform_memory_operand): Likewise.
1652
1653 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
1654
1655 * reorg.cc (stop_search_p): Change return type from int to bool
1656 and adjust function body accordingly.
1657 (resource_conflicts_p): Ditto.
1658 (insn_references_resource_p): Change return type from int to bool.
1659 (insn_sets_resource_p): Ditto.
1660 (redirect_with_delay_slots_safe_p): Ditto.
1661 (condition_dominates_p): Change return type from int to bool
1662 and adjust function body accordingly.
1663 (redirect_with_delay_list_safe_p): Ditto.
1664 (check_annul_list_true_false): Ditto. Change "annul_true_p"
1665 function argument to bool.
1666 (steal_delay_list_from_target): Change "pannul_p" function
1667 argument to bool pointer. Change "must_annul" and "used_annul"
1668 variables from int to bool.
1669 (steal_delay_list_from_fallthrough): Ditto.
1670 (own_thread_p): Change return type from int to bool and adjust
1671 function body accordingly. Change "allow_fallthrough" function
1672 argument to bool.
1673 (reorg_redirect_jump): Change return type from int to bool.
1674 (fill_simple_delay_slots): Change "non_jumps_p" function
1675 argument from int to bool. Change "maybe_never" varible to bool.
1676 (fill_slots_from_thread): Change "likely", "thread_if_true" and
1677 "own_thread" function arguments to bool. Change "lose" and
1678 "must_annul" variables to bool.
1679 (delete_from_delay_slot): Change "had_barrier" variable to bool.
1680 (try_merge_delay_insns): Change "annul_p" variable to bool.
1681 (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
1682 variables to bool.
1683 (rest_of_handle_delay_slots): Change return type from int to void
1684 and adjust function body accordingly.
1685
1686 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
1687
1688 * doc/extend.texi (RISC-V Operand Modifiers): New.
1689
1690 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1691
1692 * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
1693 (insert_insn_end_basic_block): Ditto.
1694 (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
1695 * gcse.cc (insert_insn_end_basic_block): Export as global function.
1696 * gcse.h (insert_insn_end_basic_block): Ditto.
1697
1698 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
1699
1700 PR target/110268
1701 * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
1702 (arm_builtin_decl): Hahndle MVE builtins.
1703 * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
1704 (add_unique_function): Fix handling of
1705 __ARM_MVE_PRESERVE_USER_NAMESPACE.
1706 (add_overloaded_function): Likewise.
1707 * config/arm/arm-protos.h (builtin_decl): New declaration.
1708
1709 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
1710
1711 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
1712
1713 2023-07-10 Xi Ruoyao <xry111@xry111.site>
1714
1715 PR tree-optimization/110557
1716 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
1717 Ensure the output sign-extended if necessary.
1718
1719 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
1720
1721 * config/i386/i386.md (peephole2): Transform xchg insn with a
1722 REG_UNUSED note to a (simple) move.
1723 (*insvti_lowpart_1): New define_insn_and_split.
1724 (*insvdi_lowpart_1): Likewise.
1725
1726 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
1727
1728 * config/i386/i386-features.cc (compute_convert_gain): Tweak
1729 gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
1730 (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
1731 avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
1732
1733 2023-07-10 liuhongt <hongtao.liu@intel.com>
1734
1735 PR target/110170
1736 * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
1737 splitter to detect fp max pattern.
1738 (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
1739
1740 2023-07-09 Jan Hubicka <jh@suse.cz>
1741
1742 * cfg.cc (check_bb_profile): Dump counts with relative frequency.
1743 (dump_edge_info): Likewise.
1744 (dump_bb_info): Likewise.
1745 * profile-count.cc (profile_count::dump): Add comma between quality and
1746 freq.
1747
1748 2023-07-08 Jan Hubicka <jh@suse.cz>
1749
1750 PR tree-optimization/110600
1751 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
1752
1753 2023-07-08 Jan Hubicka <jh@suse.cz>
1754
1755 PR middle-end/110590
1756 * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
1757 inner loops and be more careful about inconsistent profiles.
1758 (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
1759 exit is followed by other exit.
1760
1761 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
1762
1763 * cprop.cc (reg_available_p): Change return type from int to bool.
1764 (reg_not_set_p): Ditto.
1765 (try_replace_reg): Ditto. Change "success" variable to bool.
1766 (cprop_jump): Change return type from int to void
1767 and adjust function body accordingly.
1768 (constprop_register): Ditto.
1769 (cprop_insn): Ditto. Change "changed" variable to bool.
1770 (local_cprop_pass): Change return type from int to void
1771 and adjust function body accordingly.
1772 (bypass_block): Ditto. Change "change", "may_be_loop_header"
1773 and "removed_p" variables to bool.
1774 (bypass_conditional_jumps): Change return type from int to void
1775 and adjust function body accordingly. Change "changed"
1776 variable to bool.
1777 (one_cprop_pass): Ditto.
1778
1779 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
1780
1781 * gcse.cc (expr_equiv_p): Change return type from int to bool.
1782 (oprs_unchanged_p): Change return type from int to void
1783 and adjust function body accordingly.
1784 (oprs_anticipatable_p): Ditto.
1785 (oprs_available_p): Ditto.
1786 (insert_expr_in_table): Ditto. Change "antic_p" and "avail_p"
1787 arguments to bool. Change "found" variable to bool.
1788 (load_killed_in_block_p): Change return type from int to void and
1789 adjust function body accordingly. Change "avail_p" argument to bool.
1790 (pre_expr_reaches_here_p): Change return type from int to void
1791 and adjust function body accordingly.
1792 (pre_delete): Ditto. Change "changed" variable to bool.
1793 (pre_gcse): Change return type from int to void
1794 and adjust function body accordingly. Change "did_insert" and
1795 "changed" variables to bool.
1796 (one_pre_gcse_pass): Change return type from int to void
1797 and adjust function body accordingly. Change "changed" variable
1798 to bool.
1799 (should_hoist_expr_to_dom): Change return type from int to void
1800 and adjust function body accordingly. Change
1801 "visited_allocated_locally" variable to bool.
1802 (hoist_code): Change return type from int to void and adjust
1803 function body accordingly. Change "changed" variable to bool.
1804 (one_code_hoisting_pass): Ditto.
1805 (pre_edge_insert): Change return type from int to void and adjust
1806 function body accordingly. Change "did_insert" variable to bool.
1807 (pre_expr_reaches_here_p_work): Change return type from int to void
1808 and adjust function body accordingly.
1809 (simple_mem): Ditto.
1810 (want_to_gcse_p): Change return type from int to void
1811 and adjust function body accordingly.
1812 (can_assign_to_reg_without_clobbers_p): Update function body
1813 for bool return type.
1814 (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
1815 (pre_insert_copies): Change "added_copy" variable to bool.
1816
1817 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
1818
1819 PR c++/110595
1820 PR c++/110596
1821 * doc/invoke.texi (Warning Options): Fix typos.
1822
1823 2023-07-07 Jan Hubicka <jh@suse.cz>
1824
1825 * profile-count.cc (profile_count::dump): Add FUN
1826 parameter; print relative frequency.
1827 (profile_count::debug): Update.
1828 * profile-count.h (profile_count::dump): Update
1829 prototype.
1830
1831 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
1832
1833 PR target/43644
1834 PR target/110533
1835 * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
1836 TImode destinations from paradoxical SUBREGs (setting the lowpart)
1837 into explicit zero extensions. Use *insvti_highpart_1 instruction
1838 to set the highpart of a TImode destination.
1839
1840 2023-07-07 Jan Hubicka <jh@suse.cz>
1841
1842 * predict.cc (force_edge_cold): Use
1843 set_edge_probability_and_rescale_others; improve dumps.
1844
1845 2023-07-07 Jan Hubicka <jh@suse.cz>
1846
1847 * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
1848 after exit.
1849 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
1850 is known.
1851
1852 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
1853
1854 * config/s390/s390.cc (vec_init): Fix default case
1855
1856 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
1857
1858 * lra-assigns.cc (assign_by_spills): Add reload insns involving
1859 reload pseudos with non-refined class to be processed on the next
1860 sub-pass.
1861 * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
1862 (in_class_p): Use it.
1863 (print_curr_insn_alt): New func.
1864 (process_alt_operands): Use it. Improve debug info.
1865 (curr_insn_transform): Use print_curr_insn_alt. Refine reload
1866 pseudo class if it is not refined yet.
1867
1868 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1869
1870 * value-range.cc (irange::get_bitmask_from_range): Return all the
1871 known bits for a singleton.
1872 (irange::set_range_from_bitmask): Set a range of a singleton when
1873 all bits are known.
1874
1875 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1876
1877 * value-range.cc (irange::intersect): Leave normalization to
1878 caller.
1879
1880 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1881
1882 * data-streamer-in.cc (streamer_read_value_range): Adjust for
1883 value/mask.
1884 * data-streamer-out.cc (streamer_write_vrange): Same.
1885 * range-op.cc (operator_cast::fold_range): Same.
1886 * value-range-pretty-print.cc
1887 (vrange_printer::print_irange_bitmasks): Same.
1888 * value-range-storage.cc (irange_storage::write_lengths_address):
1889 Same.
1890 (irange_storage::set_irange): Same.
1891 (irange_storage::get_irange): Same.
1892 (irange_storage::size): Same.
1893 (irange_storage::dump): Same.
1894 * value-range-storage.h: Same.
1895 * value-range.cc (debug): New.
1896 (irange_bitmask::dump): New.
1897 (add_vrange): Adjust for value/mask.
1898 (irange::operator=): Same.
1899 (irange::set): Same.
1900 (irange::verify_range): Same.
1901 (irange::operator==): Same.
1902 (irange::contains_p): Same.
1903 (irange::irange_single_pair_union): Same.
1904 (irange::union_): Same.
1905 (irange::intersect): Same.
1906 (irange::invert): Same.
1907 (irange::get_nonzero_bits_from_range): Rename to...
1908 (irange::get_bitmask_from_range): ...this.
1909 (irange::set_range_from_nonzero_bits): Rename to...
1910 (irange::set_range_from_bitmask): ...this.
1911 (irange::set_nonzero_bits): Rename to...
1912 (irange::update_bitmask): ...this.
1913 (irange::get_nonzero_bits): Rename to...
1914 (irange::get_bitmask): ...this.
1915 (irange::intersect_nonzero_bits): Rename to...
1916 (irange::intersect_bitmask): ...this.
1917 (irange::union_nonzero_bits): Rename to...
1918 (irange::union_bitmask): ...this.
1919 (irange_bitmask::verify_mask): New.
1920 * value-range.h (class irange_bitmask): New.
1921 (irange_bitmask::set_unknown): New.
1922 (irange_bitmask::unknown_p): New.
1923 (irange_bitmask::irange_bitmask): New.
1924 (irange_bitmask::get_precision): New.
1925 (irange_bitmask::get_nonzero_bits): New.
1926 (irange_bitmask::set_nonzero_bits): New.
1927 (irange_bitmask::operator==): New.
1928 (irange_bitmask::union_): New.
1929 (irange_bitmask::intersect): New.
1930 (class irange): Friend vrange_printer.
1931 (irange::varying_compatible_p): Adjust for bitmask.
1932 (irange::set_varying): Same.
1933 (irange::set_nonzero): Same.
1934
1935 2023-07-07 Jan Beulich <jbeulich@suse.com>
1936
1937 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
1938
1939 2023-07-07 Jan Beulich <jbeulich@suse.com>
1940
1941 * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
1942 alternative. Switch new last alternative's "isa" attribute to
1943 "avx512vl".
1944 (vec_extract_hi_v32qi): Likewise.
1945
1946 2023-07-07 Pan Li <pan2.li@intel.com>
1947 Robin Dapp <rdapp@ventanamicro.com>
1948
1949 * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
1950 when FRM_MODE_DYN.
1951 (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
1952 (riscv_mode_exit): Likewise for exit mode.
1953 (riscv_mode_needed): Likewise for needed mode.
1954 (riscv_mode_after): Likewise for after mode.
1955
1956 2023-07-07 Pan Li <pan2.li@intel.com>
1957
1958 * config/riscv/vector.md: Fix typo.
1959
1960 2023-07-06 Jan Hubicka <jh@suse.cz>
1961
1962 PR middle-end/25623
1963 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
1964 of iterations determined.
1965 * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
1966
1967 2023-07-06 Jan Hubicka <jh@suse.cz>
1968
1969 * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
1970 probability update to be safe on loops with subloops.
1971 Make bound parameter to be iteration bound.
1972 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
1973 of scale_loop_profile.
1974 * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
1975
1976 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
1977
1978 PR tree-optimization/110449
1979 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
1980 vec_loop for the unrolled loop.
1981
1982 2023-07-06 Jan Hubicka <jh@suse.cz>
1983
1984 * cfg.cc (set_edge_probability_and_rescale_others): New function.
1985 (update_bb_profile_for_threading): Use it; simplify the rest.
1986 * cfg.h (set_edge_probability_and_rescale_others): Declare.
1987 * profile-count.h (profile_probability::apply_scale): New.
1988
1989 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
1990
1991 * doc/extend.texi (ARC Built-in Functions): Update documentation
1992 with missing builtins.
1993
1994 2023-07-06 Richard Biener <rguenther@suse.de>
1995
1996 PR tree-optimization/110556
1997 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
1998 assign code and all operands of non-stores.
1999
2000 2023-07-06 Richard Biener <rguenther@suse.de>
2001
2002 PR tree-optimization/110563
2003 * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
2004 Remove second argument.
2005 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
2006 Remove for_epilogue_p argument. Merge assert ...
2007 (vect_analyze_loop_2): ... with check done before determining
2008 partial vectors by moving it after.
2009 * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
2010
2011 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2012
2013 * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
2014 few things re 'reorder' option and strings.
2015 * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
2016
2017 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2018
2019 * gengtype-parse.cc: Clean up obsolete parametrized structs
2020 remnants.
2021 * gengtype.cc: Likewise.
2022 * gengtype.h: Likewise.
2023
2024 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2025
2026 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
2027 Adjust all users.
2028
2029 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2030
2031 * gengtype-parse.cc (token_names): Add '"user"'.
2032 * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
2033 'FIRST_TOKEN_WITH_VALUE'.
2034
2035 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2036
2037 * doc/gty.texi (GTY Options) <string_length>: Enhance.
2038
2039 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2040
2041 * gengtype.cc (write_root, write_roots): Explicitly reject
2042 'string_length' option.
2043 * doc/gty.texi (GTY Options) <string_length>: Document.
2044
2045 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2046
2047 * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
2048 (ggc_pch_write_object): Remove 'bool is_string' argument.
2049 * ggc-common.cc: Adjust.
2050 * ggc-page.cc: Likewise.
2051
2052 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
2053
2054 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
2055
2056 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
2057
2058 * doc/extend.texi: Move x86 inlining rule to a new subsubsection
2059 and add description for inling of function with arch and tune
2060 attributes.
2061
2062 2023-07-06 Richard Biener <rguenther@suse.de>
2063
2064 PR tree-optimization/110515
2065 * tree-ssa-pre.cc (compute_avail): Make code dealing
2066 with hoisting loads with different alias-sets more
2067 robust.
2068
2069 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2070
2071 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
2072
2073 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
2074
2075 * config/i386/i386.cc (ix86_can_inline_p): If callee has
2076 default arch=x86-64 and tune=generic, do not block the
2077 inlining to its caller. Also allow callee with different
2078 arch= to be inlined if it has always_inline attribute and
2079 it's ISA is subset of caller's.
2080
2081 2023-07-06 liuhongt <hongtao.liu@intel.com>
2082
2083 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
2084 DF/SFmode AND/IOR/XOR/ANDN operations.
2085
2086 2023-07-06 Andrew Pinski <apinski@marvell.com>
2087
2088 PR middle-end/110554
2089 * tree-vect-generic.cc (expand_vector_condition): For comparisons,
2090 just build using boolean_type_node instead of the cond_type.
2091 For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
2092 that will feed into the COND_EXPR.
2093
2094 2023-07-06 liuhongt <hongtao.liu@intel.com>
2095
2096 PR target/110170
2097 * config/i386/i386.md (movdf_internal): Disparage slightly for
2098 2 alternatives (r,v) and (v,r) by adding constraint modifier
2099 '?'.
2100
2101 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
2102
2103 PR target/106907
2104 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
2105 initialization of new_addr.
2106
2107 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
2108
2109 PR tree-optimization/110474
2110 * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
2111 unroll factor while selecting the epilog vect loop VF.
2112
2113 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2114
2115 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
2116 call.
2117
2118 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2119
2120 * gimple-range-gori.cc (compute_operand_range): After calling
2121 compute_operand2_range, recursively call self if needed.
2122 (compute_operand2_range): Turn into a leaf function.
2123 (gori_compute::compute_operand1_and_operand2_range): Finish
2124 operand2 calculation.
2125 * gimple-range-gori.h (compute_operand2_range): Remove name param.
2126
2127 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2128
2129 * gimple-range-gori.cc (compute_operand_range): After calling
2130 compute_operand1_range, recursively call self if needed.
2131 (compute_operand1_range): Turn into a leaf function.
2132 (gori_compute::compute_operand1_and_operand2_range): Finish
2133 operand1 calculation.
2134 * gimple-range-gori.h (compute_operand1_range): Remove name param.
2135
2136 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2137
2138 * gimple-range-gori.cc (compute_operand_range): Check for
2139 operand interdependence when both op1 and op2 are computed.
2140 (compute_operand1_and_operand2_range): No checks required now.
2141
2142 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2143
2144 * gimple-range-gori.cc (compute_operand_range): Check for
2145 a relation between op1 and op2 and use that instead.
2146 (compute_operand1_range): Don't look for a relation override.
2147 (compute_operand2_range): Ditto.
2148
2149 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
2150
2151 * doc/contrib.texi (Contributors): Update my entry.
2152
2153 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
2154
2155 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
2156 prob calculation.
2157
2158 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
2159
2160 * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
2161 scehdule_more_p and contributes_to_priority indirect frunction
2162 type from int to bool.
2163 (no_real_insns_p): Change return type from int to bool.
2164 (contributes_to_priority): Ditto.
2165 * haifa-sched.cc (no_real_insns_p): Change return type from
2166 int to bool and adjust function body accordingly.
2167 * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
2168 variable type from int to bool.
2169 (ps_insn_advance_column): Change return type from int to bool.
2170 (ps_has_conflicts): Ditto. Change "has_conflicts"
2171 variable type from int to bool.
2172 * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
2173 (conditions_mutex_p): Ditto.
2174 * sched-ebb.cc (schedule_more_p): Ditto.
2175 (ebb_contributes_to_priority): Change return type from
2176 int to bool and adjust function body accordingly.
2177 * sched-rgn.cc (is_cfg_nonregular): Ditto.
2178 (check_live_1): Ditto.
2179 (is_pfree): Ditto.
2180 (find_conditional_protection): Ditto.
2181 (is_conditionally_protected): Ditto.
2182 (is_prisky): Ditto.
2183 (is_exception_free): Ditto.
2184 (haifa_find_rgns): Change "unreachable" and "too_large_failure"
2185 variables from int to bool.
2186 (extend_rgns): Change "rescan" variable from int to bool.
2187 (check_live): Change return type from
2188 int to bool and adjust function body accordingly.
2189 (can_schedule_ready_p): Ditto.
2190 (schedule_more_p): Ditto.
2191 (contributes_to_priority): Ditto.
2192
2193 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2194
2195 * doc/md.texi: Document that vec_set and vec_extract must not
2196 fail.
2197 * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
2198 (gimple_expand_vec_set_extract_expr): ...to this.
2199 (gimple_expand_vec_exprs): Call renamed function.
2200 * internal-fn.cc (vec_extract_direct): Add.
2201 (expand_vec_extract_optab_fn): New function to expand
2202 vec_extract optab.
2203 (direct_vec_extract_optab_supported_p): Add.
2204 * internal-fn.def (VEC_EXTRACT): Add.
2205 * optabs.cc (can_vec_extract_var_idx_p): New function.
2206 * optabs.h (can_vec_extract_var_idx_p): Declare.
2207
2208 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2209
2210 * config/riscv/autovec.md: Add gen_lowpart.
2211
2212 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2213
2214 * config/riscv/autovec.md: Allow register index operand.
2215
2216 2023-07-05 Pan Li <pan2.li@intel.com>
2217
2218 * config/riscv/riscv-vector-builtins.cc
2219 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
2220
2221 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2222
2223 * config/riscv/autovec.md: Use float_truncate.
2224
2225 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2226
2227 * internal-fn.cc (internal_fn_len_index): Apply
2228 LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
2229 (internal_fn_mask_index): Ditto.
2230 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
2231 (supports_vec_scatter_store_p): Ditto.
2232 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
2233 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
2234 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
2235 (vect_get_strided_load_store_ops): Ditto.
2236 (vectorizable_store): Ditto.
2237 (vectorizable_load): Ditto.
2238
2239 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2240 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2241
2242 * simplify-rtx.cc (native_encode_rtx): Ditto.
2243 (native_decode_vector_rtx): Ditto.
2244 (simplify_const_vector_byte_offset): Ditto.
2245 (simplify_const_vector_subreg): Ditto.
2246 * tree.cc (build_truth_vector_type_for_mode): Ditto.
2247 * varasm.cc (output_constant_pool_2): Ditto.
2248
2249 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
2250
2251 * config/mips/mips.cc (mips_expand_block_move): don't expand for
2252 r6 with -mno-unaligned-access option if one or both of src and
2253 dest are unaligned. restruct: return directly if length is not const.
2254 (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
2255
2256 2023-07-05 Jan Beulich <jbeulich@suse.com>
2257
2258 PR target/100711
2259 * config/i386/sse.md: New splitters to simplify
2260 not;vec_duplicate as a singular vpternlog.
2261 (one_cmpl<mode>2): Allow broadcast for operand 1.
2262 (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
2263
2264 2023-07-05 Jan Beulich <jbeulich@suse.com>
2265
2266 PR target/100711
2267 * config/i386/sse.md: New splitters to simplify
2268 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
2269
2270 2023-07-05 Jan Beulich <jbeulich@suse.com>
2271
2272 PR target/100711
2273 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
2274 form of splitter for PR target/100711.
2275
2276 2023-07-05 Richard Biener <rguenther@suse.de>
2277
2278 PR middle-end/110541
2279 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
2280 reality.
2281
2282 2023-07-05 Jan Beulich <jbeulich@suse.com>
2283
2284 PR target/93768
2285 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
2286 for memory form operand 1.
2287
2288 2023-07-05 Jan Beulich <jbeulich@suse.com>
2289
2290 PR target/93768
2291 * config/i386/i386.cc (ix86_rtx_costs): Further special-case
2292 bitwise vector operations.
2293 * config/i386/sse.md (*iornot<mode>3): New insn.
2294 (*xnor<mode>3): Likewise.
2295 (*<nlogic><mode>3): Likewise.
2296 (andor): New code iterator.
2297 (nlogic): New code attribute.
2298 (ternlog_nlogic): Likewise.
2299
2300 2023-07-05 Richard Biener <rguenther@suse.de>
2301
2302 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
2303
2304 2023-07-05 yulong <shiyulong@iscas.ac.cn>
2305
2306 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
2307
2308 2023-07-05 yulong <shiyulong@iscas.ac.cn>
2309
2310 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
2311 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
2312 (ADJUST_ALIGNMENT): Ditto.
2313 (RVV_TUPLE_PARTIAL_MODES): Ditto.
2314 (ADJUST_NUNITS): Ditto.
2315 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
2316 New types.
2317 (vfloat16mf4x3_t): Ditto.
2318 (vfloat16mf4x4_t): Ditto.
2319 (vfloat16mf4x5_t): Ditto.
2320 (vfloat16mf4x6_t): Ditto.
2321 (vfloat16mf4x7_t): Ditto.
2322 (vfloat16mf4x8_t): Ditto.
2323 (vfloat16mf2x2_t): Ditto.
2324 (vfloat16mf2x3_t): Ditto.
2325 (vfloat16mf2x4_t): Ditto.
2326 (vfloat16mf2x5_t): Ditto.
2327 (vfloat16mf2x6_t): Ditto.
2328 (vfloat16mf2x7_t): Ditto.
2329 (vfloat16mf2x8_t): Ditto.
2330 (vfloat16m1x2_t): Ditto.
2331 (vfloat16m1x3_t): Ditto.
2332 (vfloat16m1x4_t): Ditto.
2333 (vfloat16m1x5_t): Ditto.
2334 (vfloat16m1x6_t): Ditto.
2335 (vfloat16m1x7_t): Ditto.
2336 (vfloat16m1x8_t): Ditto.
2337 (vfloat16m2x2_t): Ditto.
2338 (vfloat16m2x3_t): Ditto.
2339 (vfloat16m2x4_t): Ditto.
2340 (vfloat16m4x2_t): Ditto.
2341 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
2342 (vfloat16mf4x3_t): Ditto.
2343 (vfloat16mf4x4_t): Ditto.
2344 (vfloat16mf4x5_t): Ditto.
2345 (vfloat16mf4x6_t): Ditto.
2346 (vfloat16mf4x7_t): Ditto.
2347 (vfloat16mf4x8_t): Ditto.
2348 (vfloat16mf2x2_t): Ditto.
2349 (vfloat16mf2x3_t): Ditto.
2350 (vfloat16mf2x4_t): Ditto.
2351 (vfloat16mf2x5_t): Ditto.
2352 (vfloat16mf2x6_t): Ditto.
2353 (vfloat16mf2x7_t): Ditto.
2354 (vfloat16mf2x8_t): Ditto.
2355 (vfloat16m1x2_t): Ditto.
2356 (vfloat16m1x3_t): Ditto.
2357 (vfloat16m1x4_t): Ditto.
2358 (vfloat16m1x5_t): Ditto.
2359 (vfloat16m1x6_t): Ditto.
2360 (vfloat16m1x7_t): Ditto.
2361 (vfloat16m1x8_t): Ditto.
2362 (vfloat16m2x2_t): Ditto.
2363 (vfloat16m2x3_t): Ditto.
2364 (vfloat16m2x4_t): Ditto.
2365 (vfloat16m4x2_t): Ditto.
2366 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
2367 * config/riscv/riscv.md: New.
2368 * config/riscv/vector-iterators.md: New.
2369
2370 2023-07-04 Andrew Pinski <apinski@marvell.com>
2371
2372 PR tree-optimization/110487
2373 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
2374 build a nonstandard integer and use that.
2375
2376 2023-07-04 Andrew Pinski <apinski@marvell.com>
2377
2378 * match.pd (a?-1:0): Cast type an integer type
2379 rather the type before the negative.
2380 (a?0:-1): Likewise.
2381
2382 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2383
2384 * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
2385 Change to use HARD_REG_BIT and its macros.
2386 * config/xtensa/xtensa.md
2387 (peephole2: regmove elimination during DFmode input reload):
2388 Likewise.
2389
2390 2023-07-04 Richard Biener <rguenther@suse.de>
2391
2392 PR tree-optimization/110491
2393 * tree-ssa-phiopt.cc (match_simplify_replacement): Check
2394 whether the PHI args are possibly undefined before folding
2395 the COND_EXPR.
2396
2397 2023-07-04 Pan Li <pan2.li@intel.com>
2398 Thomas Schwinge <thomas@codesourcery.com>
2399
2400 * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
2401 bits for machine mode table.
2402 * lto-streamer-out.cc (lto_write_mode_table): Stream out the
2403 HOST machine mode bits.
2404 * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
2405 * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
2406 as the table size.
2407 * tree-streamer.h (streamer_mode_table): Ditto.
2408 (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
2409 as the packing limit.
2410 (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
2411
2412 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
2413
2414 * lto-streamer.h (class lto_input_block): Capture
2415 'lto_file_decl_data *file_data' instead of just
2416 'unsigned char *mode_table'.
2417 * ipa-devirt.cc (ipa_odr_read_section): Adjust.
2418 * ipa-fnsummary.cc (inline_read_section): Likewise.
2419 * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
2420 * ipa-modref.cc (read_section): Likewise.
2421 * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
2422 Likewise.
2423 * ipa-sra.cc (isra_read_summary_section): Likewise.
2424 * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
2425 * lto-section-in.cc (lto_create_simple_input_block): Likewise.
2426 * lto-streamer-in.cc (lto_read_body_or_constructor)
2427 (lto_input_toplevel_asms): Likewise.
2428 * tree-streamer.h (bp_unpack_machine_mode): Likewise.
2429
2430 2023-07-04 Richard Biener <rguenther@suse.de>
2431
2432 * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
2433 (empty_bb_or_one_feeding_into_p): Check for them.
2434 * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
2435 * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
2436
2437 2023-07-04 Richard Biener <rguenther@suse.de>
2438
2439 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
2440 check guarding scalar_niter underflow.
2441
2442 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
2443
2444 PR tree-optimization/110531
2445 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
2446 slp_done_for_suggested_uf to false.
2447
2448 2023-07-04 Richard Biener <rguenther@suse.de>
2449
2450 PR tree-optimization/110228
2451 * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
2452 Mark SSA may-undefs.
2453 (bb_no_side_effects_p): Check stmt uses for undefs.
2454
2455 2023-07-04 Richard Biener <rguenther@suse.de>
2456
2457 PR tree-optimization/110436
2458 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
2459 force live but not relevant pattern stmts relevant.
2460
2461 2023-07-04 Lili Cui <lili.cui@intel.com>
2462
2463 * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
2464 * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
2465
2466 2023-07-04 Richard Biener <rguenther@suse.de>
2467
2468 PR middle-end/110495
2469 * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
2470 since we do not set TREE_OVERFLOW on those since the
2471 introduction of VL vectors.
2472 * match.pd (x +- CST +- CST): For VECTOR_CST do not look
2473 at TREE_OVERFLOW to determine validity of association.
2474
2475 2023-07-04 Richard Biener <rguenther@suse.de>
2476
2477 PR tree-optimization/110310
2478 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
2479 Move costing part ...
2480 (vect_analyze_loop_costing): ... here. Integrate better
2481 estimate for epilogues from ...
2482 (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
2483 with actual epilogue status.
2484 * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
2485 avoid cancelling epilogue vectorization.
2486 (vect_update_epilogue_niters): Remove. No longer update
2487 epilogue LOOP_VINFO_NITERS.
2488
2489 2023-07-04 Pan Li <pan2.li@intel.com>
2490
2491 Revert:
2492 2023-07-03 Pan Li <pan2.li@intel.com>
2493
2494 * config/riscv/vector.md: Fix typo.
2495
2496 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2497
2498 * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
2499 * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
2500 (expand_gather_load_optab_fn): Ditto.
2501 (internal_load_fn_p): Ditto.
2502 (internal_store_fn_p): Ditto.
2503 (internal_gather_scatter_fn_p): Ditto.
2504 (internal_fn_len_index): Ditto.
2505 (internal_fn_mask_index): Ditto.
2506 (internal_fn_stored_value_index): Ditto.
2507 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
2508 (LEN_MASK_SCATTER_STORE): Ditto.
2509 * optabs.def (OPTAB_CD): Ditto.
2510
2511 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2512
2513 * config/riscv/riscv-vsetvl.cc
2514 (vector_insn_info::parse_insn): Add early break.
2515
2516 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
2517
2518 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
2519 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
2520
2521 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
2522
2523 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
2524
2525 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
2526
2527 * common/config/riscv/riscv-common.cc: Add support for zvbb,
2528 zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
2529 zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
2530 * config/riscv/arch-canonicalize: Add canonicalization info for
2531 zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
2532 * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
2533 (MASK_ZVBC): Likewise.
2534 (TARGET_ZVBB): Likewise.
2535 (TARGET_ZVBC): Likewise.
2536 (MASK_ZVKG): Likewise.
2537 (MASK_ZVKNED): Likewise.
2538 (MASK_ZVKNHA): Likewise.
2539 (MASK_ZVKNHB): Likewise.
2540 (MASK_ZVKSED): Likewise.
2541 (MASK_ZVKSH): Likewise.
2542 (MASK_ZVKN): Likewise.
2543 (MASK_ZVKNC): Likewise.
2544 (MASK_ZVKNG): Likewise.
2545 (MASK_ZVKS): Likewise.
2546 (MASK_ZVKSC): Likewise.
2547 (MASK_ZVKSG): Likewise.
2548 (MASK_ZVKT): Likewise.
2549 (TARGET_ZVKG): Likewise.
2550 (TARGET_ZVKNED): Likewise.
2551 (TARGET_ZVKNHA): Likewise.
2552 (TARGET_ZVKNHB): Likewise.
2553 (TARGET_ZVKSED): Likewise.
2554 (TARGET_ZVKSH): Likewise.
2555 (TARGET_ZVKN): Likewise.
2556 (TARGET_ZVKNC): Likewise.
2557 (TARGET_ZVKNG): Likewise.
2558 (TARGET_ZVKS): Likewise.
2559 (TARGET_ZVKSC): Likewise.
2560 (TARGET_ZVKSG): Likewise.
2561 (TARGET_ZVKT): Likewise.
2562 * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
2563
2564 2023-07-03 Andrew Pinski <apinski@marvell.com>
2565
2566 PR middle-end/110510
2567 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
2568
2569 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
2570
2571 * config/darwin.h: Avoid duplicate multiply_defined specs on
2572 earlier Darwin versions with shared libgcc.
2573
2574 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
2575
2576 * tree.h (tree_int_cst_equal): Change return type from int to bool.
2577 (operand_equal_for_phi_arg_p): Ditto.
2578 (tree_map_base_marked_p): Ditto.
2579 * tree.cc (contains_placeholder_p): Update function body
2580 for bool return type.
2581 (type_cache_hasher::equal): Ditto.
2582 (tree_map_base_hash): Change return type
2583 from int to void and adjust function body accordingly.
2584 (tree_int_cst_equal): Ditto.
2585 (operand_equal_for_phi_arg_p): Ditto.
2586 (get_narrower): Change "first" variable to bool.
2587 (cl_option_hasher::equal): Update function body for bool return type.
2588 * ggc.h (ggc_set_mark): Change return type from int to bool.
2589 (ggc_marked_p): Ditto.
2590 * ggc-page.cc (gt_ggc_mx): Change return type
2591 from int to void and adjust function body accordingly.
2592 (ggc_set_mark): Ditto.
2593
2594 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2595
2596 * config/riscv/autovec.md: Change order of
2597 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2598 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
2599 * doc/md.texi: Ditto.
2600 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
2601 * internal-fn.cc (len_maskload_direct): Ditto.
2602 (len_maskstore_direct): Ditto.
2603 (add_len_and_mask_args): New function.
2604 (expand_partial_load_optab_fn): Change order of
2605 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2606 (expand_partial_store_optab_fn): Ditto.
2607 (internal_fn_len_index): New function.
2608 (internal_fn_mask_index): Change order of
2609 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2610 (internal_fn_stored_value_index): Ditto.
2611 (internal_len_load_store_bias): Ditto.
2612 * internal-fn.h (internal_fn_len_index): New function.
2613 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
2614 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2615 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2616 (vectorizable_load): Ditto.
2617
2618 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
2619
2620 PR modula2/110125
2621 * doc/gm2.texi (Semantic checking): Include examples using
2622 -Wuninit-variable-checking.
2623
2624 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2625
2626 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2627 (*single_widen_fnma<mode>): Ditto.
2628 (*double_widen_fms<mode>): Ditto.
2629 (*single_widen_fms<mode>): Ditto.
2630 (*double_widen_fnms<mode>): Ditto.
2631 (*single_widen_fnms<mode>): Ditto.
2632
2633 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2634
2635 * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
2636 into "*" in pattern name which simplifies build files.
2637 (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
2638 (*pred_single_widen_mul<mode>): New pattern.
2639
2640 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
2641
2642 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
2643 the index to be 0 or 1.
2644
2645 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
2646
2647 Revert:
2648 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2649
2650 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2651 (*single_widen_fnma<mode>): Ditto.
2652 (*double_widen_fms<mode>): Ditto.
2653 (*single_widen_fms<mode>): Ditto.
2654 (*double_widen_fnms<mode>): Ditto.
2655 (*single_widen_fnms<mode>): Ditto.
2656
2657 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2658
2659 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2660 (*single_widen_fnma<mode>): Ditto.
2661 (*double_widen_fms<mode>): Ditto.
2662 (*single_widen_fms<mode>): Ditto.
2663 (*double_widen_fnms<mode>): Ditto.
2664 (*single_widen_fnms<mode>): Ditto.
2665
2666 2023-07-03 Pan Li <pan2.li@intel.com>
2667
2668 * config/riscv/vector.md: Fix typo.
2669
2670 2023-07-03 Richard Biener <rguenther@suse.de>
2671
2672 PR tree-optimization/110506
2673 * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
2674 TYPE_PRECISION access with INTEGRAL_TYPE_P check.
2675
2676 2023-07-03 Richard Biener <rguenther@suse.de>
2677
2678 PR tree-optimization/110506
2679 * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
2680 type before relying on TYPE_PRECISION to produce a nonzero mask.
2681
2682 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2683
2684 * config/mips/mips.md(*and<mode>3_mips16): Generates
2685 ZEB/ZEH instructions.
2686
2687 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2688
2689 * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
2690 address register to M16_REGS for MIPS16.
2691 (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
2692 (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
2693 (AVAIL_NON_MIPS16 (cache..)): Update to
2694 AVAIL_MIPS16E2_OR_NON_MIPS16.
2695 * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
2696 * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
2697
2698 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2699
2700 * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
2701 for ISA_HAS_MIPS16E2.
2702 (ISA_HAS_SYNC): Same as above.
2703 (ISA_HAS_LL_SC): Same as above.
2704
2705 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2706
2707 * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
2708 Add logics for generating instruction.
2709 * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
2710 * config/mips/mips.md(mov_<load>l): Generates instructions.
2711 (mov_<load>r): Same as above.
2712 (mov_<store>l): Adjusted for the conditions above.
2713 (mov_<store>r): Same as above.
2714 (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
2715 (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
2716
2717 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2718
2719 * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
2720 (mips_const_insns): Same as above.
2721 (mips_output_move): Same as above.
2722 (mips_output_function_prologue): Same as above.
2723 * config/mips/mips.md: Same as above
2724
2725 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2726
2727 * config/mips/constraints.md(Yz): New constraints for mips16e2.
2728 * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
2729 (mips_bit_clear_info): Same as above.
2730 * config/mips/mips.cc(mips_bit_clear_info): New function for
2731 generating instructions.
2732 (mips_bit_clear_p): Same as above.
2733 * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
2734 * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
2735 (*and<mode>3): Generates INS instruction.
2736 (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
2737 (ior<mode>3): Add logics for ORI instruction.
2738 (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
2739 (*ior<mode>3_mips16): Add logics for XORI instruction.
2740 (*xor<mode>3_mips16): Generates XORI instrucion.
2741 (*extzv<mode>): Add logics for EXT instruction.
2742 (*insv<mode>): Add logics for INS instruction.
2743 * config/mips/predicates.md(bit_clear_operand): New predicate for
2744 generating bitwise instructions.
2745 (and_reg_operand): Add logics for generating bitwise instructions.
2746
2747 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2748
2749 * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
2750 that uses global pointer register.
2751 (mips16_unextended_reference_p): Same as above.
2752 (mips_pic_base_register): Same as above.
2753 (mips_init_relocs): Same as above.
2754 * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
2755 (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
2756 * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
2757 (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
2758
2759 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2760
2761 * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
2762 * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
2763 (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
2764 (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
2765 (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
2766 * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
2767
2768 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2769
2770 * config/mips/mips.cc(mips_file_start): Add mips16e2 info
2771 for output file.
2772 * config/mips/mips.h(__mips_mips16e2): Defined a new
2773 predefine macro.
2774 (ISA_HAS_MIPS16E2): Defined a new macro.
2775 (ASM_SPEC): Pass mmips16e2 to the assembler.
2776 * config/mips/mips.opt: Add -m(no-)mips16e2 option.
2777 * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
2778 * doc/invoke.texi: Add -m(no-)mips16e2 option..
2779
2780 2023-07-02 Jakub Jelinek <jakub@redhat.com>
2781
2782 PR tree-optimization/110508
2783 * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
2784 REALPART_EXPR opf nlhs if re2 is non-NULL.
2785
2786 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2787
2788 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
2789 Simplify.
2790 * config/xtensa/xtensa.md (*xtensa_clamps):
2791 Add TARGET_MINMAX to the condition.
2792
2793 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2794
2795 * config/xtensa/xtensa.md (*eqne_INT_MIN):
2796 Add missing ":SI" to the match_operator.
2797
2798 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
2799
2800 PR target/108743
2801 * config/darwin.opt: Add fconstant-cfstrings alias to
2802 mconstant-cfstrings.
2803 * doc/invoke.texi: Amend invocation descriptions to reflect
2804 that the fconstant-cfstrings is a target-option alias and to
2805 add the missing mconstant-cfstrings option description to the
2806 Darwin section.
2807
2808 2023-07-01 Jan Hubicka <jh@suse.cz>
2809
2810 * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
2811 parmaeter; update profile.
2812 * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
2813 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
2814 (static_loop_exit): ... this; return the edge to be elliminated.
2815 (ch_base::copy_headers): Handle profile updating for eliminated exits.
2816
2817 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
2818
2819 * config/i386/i386-features.cc (compute_convert_gain): Provide
2820 gains/costs for ROTATE and ROTATERT (by an integer constant).
2821 (general_scalar_chain::convert_rotate): New helper function to
2822 convert a DImode or SImode rotation by an integer constant into
2823 SSE vector form.
2824 (general_scalar_chain::convert_insn): Call the new convert_rotate
2825 for ROTATE and ROTATERT.
2826 (general_scalar_to_vector_candidate_p): Consider ROTATE and
2827 ROTATERT to be candidates if the second operand is an integer
2828 constant, valid for a rotation (or shift) in the given mode.
2829 * config/i386/i386-features.h (general_scalar_chain): Add new
2830 helper method convert_rotate.
2831
2832 2023-07-01 Jan Hubicka <jh@suse.cz>
2833
2834 PR tree-optimization/103680
2835 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
2836 make message clearer.
2837
2838 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
2839
2840 PR tree-optimization/101832
2841 * tree-object-size.cc (addr_object_size): Handle structure/union type
2842 when it has flexible size.
2843
2844 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
2845
2846 * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
2847 (fold_nonarray_ctor_reference): Likewise. Specifically deal
2848 with integral bit-fields.
2849 (fold_ctor_reference): Make sure that the constructor uses the
2850 native storage order.
2851
2852 2023-06-30 Jan Hubicka <jh@suse.cz>
2853
2854 PR middle-end/109849
2855 * predict.cc (estimate_bb_frequencies): Turn to static function.
2856 (expr_expected_value_1): Fix handling of binary expressions with
2857 predicted values.
2858 * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
2859 (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
2860 queue.
2861 * predict.h (estimate_bb_frequencies): No longer declare it.
2862
2863 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
2864
2865 * fold-const.h (multiple_of_p): Change return type from int to bool.
2866 * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
2867 neg_conp_p and neg_var_p variables to bool.
2868 (const_binop): Change sat_p variable to bool.
2869 (merge_ranges): Change no_overlap variable to bool.
2870 (extract_muldiv_1): Change same_p variable to bool.
2871 (tree_swap_operands_p): Update function body for bool return type.
2872 (fold_truth_andor): Change commutative variable to bool.
2873 (multiple_of_p): Change return type
2874 from int to void and adjust function body accordingly.
2875 * optabs.h (expand_twoval_unop): Change return type from int to bool.
2876 (expand_twoval_binop): Ditto.
2877 (can_compare_p): Ditto.
2878 (have_add2_insn): Ditto.
2879 (have_addptr3_insn): Ditto.
2880 (have_sub2_insn): Ditto.
2881 (have_insn_for): Ditto.
2882 * optabs.cc (add_equal_note): Ditto.
2883 (widen_operand): Change no_extend argument from int to bool.
2884 (expand_binop): Ditto.
2885 (expand_twoval_unop): Change return type
2886 from int to void and adjust function body accordingly.
2887 (expand_twoval_binop): Ditto.
2888 (can_compare_p): Ditto.
2889 (have_add2_insn): Ditto.
2890 (have_addptr3_insn): Ditto.
2891 (have_sub2_insn): Ditto.
2892 (have_insn_for): Ditto.
2893
2894 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
2895
2896 * config/aarch64/aarch64-simd.md
2897 (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
2898 Expansions for abd vec widen optabs.
2899 (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
2900 * config/aarch64/iterators.md (USMAX_EXT): Code attributes
2901 that give the appropriate extend RTL for the max RTL.
2902
2903 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
2904
2905 * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
2906 * optabs.def (vec_widen_sabd_optab,
2907 vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
2908 vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
2909 vec_widen_uabd_optab,
2910 vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
2911 vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
2912 New optabs.
2913 * doc/md.texi: Document them.
2914 * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
2915 to build a VEC_WIDEN_ABD call if the input precision is smaller
2916 than the precision of the output.
2917 (vect_recog_widen_abd_pattern): Should an ABD expression be
2918 found preceeding an extension, replace the two with a
2919 VEC_WIDEN_ABD.
2920
2921 2023-06-30 Pan Li <pan2.li@intel.com>
2922
2923 * config/riscv/vector.md: Refactor the common condition.
2924
2925 2023-06-30 Richard Biener <rguenther@suse.de>
2926
2927 PR tree-optimization/110496
2928 * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
2929 verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
2930
2931 2023-06-30 Richard Biener <rguenther@suse.de>
2932
2933 PR middle-end/110489
2934 * statistics.cc (curr_statistics_hash): Add argument
2935 indicating whether we should allocate the hash.
2936 (statistics_fini_pass): If the hash isn't allocated
2937 only print the summary header.
2938
2939 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
2940 Thomas Schwinge <thomas@codesourcery.com>
2941
2942 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
2943
2944 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
2945
2946 PR target/109435
2947 * config/mips/mips.cc (mips_function_arg_alignment): Returns
2948 the alignment of function argument. In case of typedef type,
2949 it returns the aligment of the aliased type.
2950 (mips_function_arg_boundary): Relocated calculation of the
2951 aligment of function arguments.
2952
2953 2023-06-29 Jan Hubicka <jh@suse.cz>
2954
2955 PR tree-optimization/109849
2956 * ipa-fnsummary.cc (decompose_param_expr): Skip
2957 functions returning its parameter.
2958 (set_cond_stmt_execution_predicate): Return early
2959 if predicate was constructed.
2960
2961 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
2962
2963 PR c/77650
2964 * doc/extend.texi: Document GCC extension on a structure containing
2965 a flexible array member to be a member of another structure.
2966
2967 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
2968
2969 * print-tree.cc (print_node): Print new bit type_include_flexarray.
2970 * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
2971 as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
2972 * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
2973 in bit no_named_args_stdarg_p properly for its corresponding type.
2974 * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
2975 out bit no_named_args_stdarg_p properly for its corresponding type.
2976 * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
2977
2978 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
2979
2980 * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
2981 * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
2982 * tree-vrp.h (maybe_set_nonzero_bits): Remove.
2983
2984 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
2985
2986 * value-range.cc (frange::set): Do not call verify_range.
2987 (frange::normalize_kind): Verify range.
2988 (frange::union_nans): Do not call verify_range.
2989 (frange::union_): Same.
2990 (frange::intersect): Same.
2991 (irange::irange_single_pair_union): Call normalize_kind if
2992 necessary.
2993 (irange::union_): Same.
2994 (irange::intersect): Same.
2995 (irange::set_range_from_nonzero_bits): Verify range.
2996 (irange::set_nonzero_bits): Call normalize_kind if necessary.
2997 (irange::get_nonzero_bits): Tweak comment.
2998 (irange::intersect_nonzero_bits): Call normalize_kind if
2999 necessary.
3000 (irange::union_nonzero_bits): Same.
3001 * value-range.h (irange::normalize_kind): Verify range.
3002
3003 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
3004
3005 * cselib.h (rtx_equal_for_cselib_1):
3006 Change return type from int to bool.
3007 (references_value_p): Ditto.
3008 (rtx_equal_for_cselib_p): Ditto.
3009 * expr.h (can_store_by_pieces): Ditto.
3010 (try_casesi): Ditto.
3011 (try_tablejump): Ditto.
3012 (safe_from_p): Ditto.
3013 * sbitmap.h (bitmap_equal_p): Ditto.
3014 * cselib.cc (references_value_p): Change return type
3015 from int to void and adjust function body accordingly.
3016 (rtx_equal_for_cselib_1): Ditto.
3017 * expr.cc (is_aligning_offset): Ditto.
3018 (can_store_by_pieces): Ditto.
3019 (mostly_zeros_p): Ditto.
3020 (all_zeros_p): Ditto.
3021 (safe_from_p): Ditto.
3022 (is_aligning_offset): Ditto.
3023 (try_casesi): Ditto.
3024 (try_tablejump): Ditto.
3025 (store_constructor): Change "need_to_clear" and
3026 "const_bounds_p" variables to bool.
3027 * sbitmap.cc (bitmap_equal_p): Change return type from int to bool.
3028
3029 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
3030
3031 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
3032 element_precision.
3033
3034 2023-06-29 Richard Biener <rguenther@suse.de>
3035
3036 PR tree-optimization/110460
3037 * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
3038 Only allow integral, pointer and scalar float type scalar_type.
3039
3040 2023-06-29 Lili Cui <lili.cui@intel.com>
3041
3042 PR tree-optimization/110148
3043 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
3044 ops in this function.
3045
3046 2023-06-29 Richard Biener <rguenther@suse.de>
3047
3048 PR middle-end/110452
3049 * expr.cc (store_constructor): Handle uniform boolean
3050 vectors with integer mode specially.
3051
3052 2023-06-29 Richard Biener <rguenther@suse.de>
3053
3054 PR middle-end/110461
3055 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
3056 for VECTOR_TYPE_P.
3057
3058 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
3059
3060 * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
3061 (array_slice): Relax va_gc constructor to handle all vectors
3062 with a vl_embed layout.
3063
3064 2023-06-29 Pan Li <pan2.li@intel.com>
3065
3066 * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
3067 (riscv_mode_needed): Likewise.
3068 (riscv_entity_mode_after): Likewise.
3069 (riscv_mode_after): Likewise.
3070 (riscv_mode_entry): Likewise.
3071 (riscv_mode_exit): Likewise.
3072 * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
3073 for FRM.
3074 * config/riscv/riscv.md: Add FRM register.
3075 * config/riscv/vector-iterators.md: Add FRM type.
3076 * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
3077 (fsrm): Define new insn for fsrm instruction.
3078
3079 2023-06-29 Pan Li <pan2.li@intel.com>
3080
3081 * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
3082 Add macro for static frm min and max.
3083 * config/riscv/riscv-vector-builtins-bases.cc
3084 (class binop_frm): New class for floating-point with frm.
3085 (BASE): Add vfadd for frm.
3086 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
3087 * config/riscv/riscv-vector-builtins-functions.def
3088 (vfadd_frm): Likewise.
3089 * config/riscv/riscv-vector-builtins-shapes.cc
3090 (struct alu_frm_def): New struct for alu with frm.
3091 (SHAPE): Add alu with frm.
3092 * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
3093 * config/riscv/riscv-vector-builtins.cc
3094 (function_checker::report_out_of_range_and_not): New function
3095 for report out of range and not val.
3096 (function_checker::require_immediate_range_or): New function
3097 for checking in range or one val.
3098 * config/riscv/riscv-vector-builtins.h: Add function decl.
3099
3100 2023-06-29 Cui, Lili <lili.cui@intel.com>
3101
3102 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
3103 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
3104
3105 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
3106
3107 PR target/110144
3108 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
3109 to insn before validating it.
3110
3111 2023-06-28 Jan Hubicka <jh@suse.cz>
3112
3113 PR middle-end/110334
3114 * ipa-fnsummary.h (ipa_fn_summary): Add
3115 safe_to_inline_to_always_inline.
3116 * ipa-inline.cc (can_early_inline_edge_p): ICE
3117 if SSA is not built; do cycle checking for
3118 always_inline functions.
3119 (inline_always_inline_functions): Be recrusive;
3120 watch for cycles; do not updat overall summary.
3121 (early_inliner): Do not give up on always_inlines.
3122 * ipa-utils.cc (ipa_reverse_postorder): Do not skip
3123 always inlines.
3124
3125 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
3126
3127 * output.h (leaf_function_p): Change return type from int to bool.
3128 (final_forward_branch_p): Ditto.
3129 (only_leaf_regs_used): Ditto.
3130 (maybe_assemble_visibility): Ditto.
3131 * varasm.h (supports_one_only): Ditto.
3132 * rtl.h (compute_alignments): Change return type from int to void.
3133 * final.cc (app_on): Change return type from int to bool.
3134 (compute_alignments): Change return type from int to void
3135 and adjust function body accordingly.
3136 (shorten_branches): Change "something_changed" variable
3137 type from int to bool.
3138 (leaf_function_p): Change return type from int to bool
3139 and adjust function body accordingly.
3140 (final_forward_branch_p): Ditto.
3141 (only_leaf_regs_used): Ditto.
3142 * varasm.cc (contains_pointers_p): Change return type from
3143 int to bool and adjust function body accordingly.
3144 (compare_constant): Ditto.
3145 (maybe_assemble_visibility): Ditto.
3146 (supports_one_only): Ditto.
3147
3148 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
3149
3150 PR debug/110308
3151 * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
3152 (maybe_copy_reg_attrs): New function.
3153 (find_oldest_value_reg): Use maybe_copy_reg_attrs.
3154 (copyprop_hardreg_forward_1): Ditto.
3155
3156 2023-06-28 Richard Biener <rguenther@suse.de>
3157
3158 PR tree-optimization/110434
3159 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
3160 VAR we replace with <retval>.
3161
3162 2023-06-28 Richard Biener <rguenther@suse.de>
3163
3164 PR tree-optimization/110451
3165 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
3166 tcc_comparison are expensive.
3167
3168 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
3169
3170 * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
3171 for TImode comparisons on 32-bit architectures.
3172 * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
3173 SWIM1248x to exclude/avoid TImode being conditional on -m64.
3174 (cbranchti4): New define_expand for TImode on both TARGET_64BIT
3175 and/or with TARGET_SSE4_1.
3176 * config/i386/predicates.md (ix86_timode_comparison_operator):
3177 New predicate that depends upon TARGET_64BIT.
3178 (ix86_timode_comparison_operand): Likewise.
3179
3180 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
3181
3182 PR target/78794
3183 * config/i386/i386-features.cc (compute_convert_gain): Provide
3184 more accurate gains for conversion of scalar comparisons to
3185 PTEST.
3186
3187 2023-06-28 Richard Biener <rguenther@suse.de>
3188
3189 PR tree-optimization/110443
3190 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
3191 gather loads.
3192
3193 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
3194
3195 * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
3196 (peephole2 for move_and_compare): New.
3197 (mode_iterator WORD): New. Set the mode to SI/DImode by
3198 TARGET_POWERPC64.
3199 (*mov<mode>_internal2): Change the mode iterator from P to WORD.
3200 (split pattern for compare_and_move): Likewise.
3201
3202 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3203
3204 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
3205 (*single_widen_fma<mode>): Ditto.
3206
3207 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
3208
3209 PR target/104124
3210 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
3211 to...
3212 (altivec_vupkhs<VU_char>_direct): ...this.
3213 * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
3214 predicate to test if a constant can be loaded with vspltisw and
3215 vupkhsw.
3216 (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
3217 a vector constant can be synthesized with a vspltisw and a vupkhsw.
3218 * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
3219 Declare.
3220 * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
3221 function to return true if OP mode is V2DI and can be synthesized
3222 with vupkhsw and vspltisw.
3223 * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
3224 constants with vspltisw and vupkhsw.
3225
3226 2023-06-28 Jan Hubicka <jh@suse.cz>
3227
3228 PR tree-optimization/110377
3229 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
3230 the ranger query.
3231 (ipa_analyze_node): Enable ranger.
3232
3233 2023-06-28 Richard Biener <rguenther@suse.de>
3234
3235 * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
3236 (TYPE_PRECISION_RAW): Provide raw access to the precision
3237 field.
3238 * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
3239 (gimple_canonical_types_compatible_p): Likewise.
3240 * tree-streamer-out.cc (pack_ts_type_common_value_fields):
3241 Stream TYPE_PRECISION_RAW.
3242 * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
3243 Likewise.
3244 * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
3245
3246 2023-06-28 Alexandre Oliva <oliva@adacore.com>
3247
3248 * doc/extend.texi (zero-call-used-regs): Document leafy and
3249 variants thereof.
3250 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
3251 LEAFY and variants.
3252 * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
3253 functions in leafy mode.
3254 * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
3255
3256 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3257
3258 * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
3259 * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
3260 Remove.
3261 (@pred_single_widen_add<mode>): New pattern.
3262 (@pred_single_widen_sub<mode>): New pattern.
3263
3264 2023-06-28 liuhongt <hongtao.liu@intel.com>
3265
3266 * config/i386/i386.cc (ix86_invalid_conversion): New function.
3267 (TARGET_INVALID_CONVERSION): Define as
3268 ix86_invalid_conversion.
3269
3270 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3271
3272 * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
3273 expander.
3274 (<float_cvt><vnconvert><mode>2): Ditto.
3275 (<optab><mode><vnconvert>2): Ditto.
3276 (<float_cvt><mode><vnconvert>2): Ditto.
3277 * config/riscv/vector-iterators.md: Add vnconvert.
3278
3279 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3280
3281 * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
3282 expander.
3283 (extend<v_quad_trunc><mode>2): Ditto.
3284 (trunc<mode><v_double_trunc>2): Ditto.
3285 (trunc<mode><v_quad_trunc>2): Ditto.
3286 * config/riscv/vector-iterators.md: Add VQEXTF and HF to
3287 V_QUAD_TRUNC and v_quad_trunc.
3288
3289 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3290
3291 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
3292 expander.
3293
3294 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3295
3296 * config/riscv/autovec.md (copysign<mode>3): Add expander.
3297 (xorsign<mode>3): Ditto.
3298 * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
3299 New class.
3300 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
3301 (xorsign): Ditto.
3302 (n): Ditto.
3303 (x): Ditto.
3304 * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
3305 (@pred_ncopysign<mode>_scalar): Ditto.
3306
3307 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3308
3309 * config/riscv/autovec.md: VF_AUTO -> VF.
3310 * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
3311 VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
3312 VHF_LMUL1.
3313 * config/riscv/vector.md: Use new iterators.
3314
3315 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3316
3317 * match.pd: Use element_mode and check if target supports
3318 operation with new type.
3319
3320 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3321
3322 * config/aarch64/aarch64-sve-builtins-base.cc
3323 (svdupq_impl::fold_nonconst_dupq): New method.
3324 (svdupq_impl::fold): Call fold_nonconst_dupq.
3325
3326 2023-06-27 Andrew Pinski <apinski@marvell.com>
3327
3328 PR middle-end/110420
3329 PR middle-end/103979
3330 PR middle-end/98619
3331 * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
3332
3333 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
3334
3335 * ipa-cp.cc (decide_whether_version_node): Adjust comment.
3336 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
3337 for Value_Range.
3338 (set_switch_stmt_execution_predicate): Same.
3339 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
3340
3341 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
3342
3343 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
3344 ipa_vr instead of value_range.
3345 (gt_pch_nx): Same.
3346 (gt_ggc_mx): Same.
3347 (ipa_get_value_range): Same.
3348 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
3349 ipa_vr.
3350 (gt_ggc_mx): Same.
3351
3352 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
3353
3354 * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
3355 * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
3356 (ipa_set_jfunc_vr): Take a range.
3357 (ipa_compute_jump_functions_for_edge): Pass range to
3358 ipa_set_jfunc_vr.
3359 (ipa_write_jump_function): Call streamer write helper.
3360 (ipa_read_jump_function): Call streamer read helper.
3361 * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
3362
3363 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
3364
3365 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
3366 as a probable initializer rather than a probable complete statement.
3367
3368 2023-06-27 Richard Biener <rguenther@suse.de>
3369
3370 PR tree-optimization/96208
3371 * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
3372 a non-grouped load if it is the same for all lanes.
3373 (vect_build_slp_tree_2): Handle not grouped loads.
3374 (vect_optimize_slp_pass::remove_redundant_permutations):
3375 Likewise.
3376 (vect_transform_slp_perm_load_1): Likewise.
3377 * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
3378 (get_group_load_store_type): Likewise. Handle
3379 invariant accesses.
3380 (vectorizable_load): Likewise.
3381
3382 2023-06-27 liuhongt <hongtao.liu@intel.com>
3383
3384 PR rtl-optimization/110237
3385 * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
3386 UNSPEC_MASKMOV.
3387 (maskstore<mode><avx512fmaskmodelower): Ditto.
3388 (*<avx512>_store<mode>_mask): New define_insn, it's renamed
3389 from original <avx512>_store<mode>_mask.
3390
3391 2023-06-27 liuhongt <hongtao.liu@intel.com>
3392
3393 * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
3394 Move flag_expensive_optimizations && !optimize_size to ..
3395 * config/i386/i386-options.cc (ix86_option_override_internal):
3396 .. this, it makes -mvzeroupper independent of optimization
3397 level, but still keeps the behavior of architecture
3398 tuning(emit_vzeroupper) unchanged.
3399
3400 2023-06-27 liuhongt <hongtao.liu@intel.com>
3401
3402 PR target/82735
3403 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
3404 vzeroupper for vzeroupper call_insn.
3405
3406 2023-06-27 Andrew Pinski <apinski@marvell.com>
3407
3408 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
3409 defbuiltin usage.
3410
3411 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3412
3413 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
3414 with base != 0.
3415
3416 2023-06-26 Andrew Pinski <apinski@marvell.com>
3417
3418 * doc/extend.texi (access attribute): Add
3419 cindex for it.
3420 (interrupt/interrupt_handler attribute):
3421 Likewise.
3422
3423 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3424
3425 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
3426 Use <DWI> instead of <V2XWIDE>.
3427 (aarch64_sqrshrun_n<mode>): Likewise.
3428
3429 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3430
3431 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
3432 Rename to...
3433 (aarch64_rnd_imm_p): ... This.
3434 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
3435 Rename to...
3436 (aarch64_int_rnd_operand): ... This.
3437 (aarch64_simd_rshrn_imm_vec): Delete.
3438 * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
3439 Adjust for the above.
3440 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
3441 (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
3442 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3443 (aarch64_sqrshrun_n<mode>_insn): Likewise.
3444 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
3445 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
3446 (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
3447 (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
3448 * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
3449 Rename to...
3450 (aarch64_rnd_imm_p): ... This.
3451
3452 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
3453
3454 * config/s390/s390.cc (s390_encode_section_info): Set
3455 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
3456 misaligned.
3457
3458 2023-06-26 Jan Hubicka <jh@suse.cz>
3459
3460 PR tree-optimization/109849
3461 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
3462 count of newly constructed forwarder block.
3463
3464 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
3465
3466 * doc/optinfo.texi: Fix "steam" -> "stream".
3467
3468 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3469
3470 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
3471 fix LEN_STORE.
3472 (dse_optimize_stmt): Add LEN_MASK_STORE.
3473
3474 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3475
3476 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
3477 fold of LOAD/STORE with length.
3478
3479 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
3480
3481 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
3482 Check for interdependence between operands 1 and 2.
3483
3484 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
3485
3486 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
3487 into account when costing non-widening/truncating conversions.
3488
3489 2023-06-26 Richard Biener <rguenther@suse.de>
3490
3491 PR tree-optimization/110381
3492 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
3493 Materialize permutes before fold-left reductions.
3494
3495 2023-06-26 Pan Li <pan2.li@intel.com>
3496
3497 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
3498
3499 2023-06-26 Richard Biener <rguenther@suse.de>
3500
3501 * varasm.cc (initializer_constant_valid_p_1): Also
3502 constrain the type of value to be scalar integral
3503 before dispatching to narrowing_initializer_constant_valid_p.
3504
3505 2023-06-26 Richard Biener <rguenther@suse.de>
3506
3507 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
3508 Use element_precision.
3509
3510 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3511
3512 * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
3513 vcond patterns.
3514 (vcondu<V:mode><VI:mode>): Ditto.
3515 * config/riscv/riscv-protos.h (expand_vcond): Ditto.
3516 * config/riscv/riscv-v.cc (expand_vcond): Ditto.
3517
3518 2023-06-26 Richard Biener <rguenther@suse.de>
3519
3520 PR tree-optimization/110392
3521 * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
3522 Do early exits on true/false predicate only after normalization.
3523
3524 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3525
3526 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
3527 "length".
3528
3529 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
3530
3531 * config/i386/i386.md (peephole2): Simplify zeroing a register
3532 followed by an IOR, XOR or PLUS operation on it, into a move.
3533 (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
3534 eliminate (and hide from reload) unnecessary word to doubleword
3535 extensions that are followed by left shifts by sufficiently large,
3536 but valid, bit counts.
3537
3538 2023-06-26 liuhongt <hongtao.liu@intel.com>
3539
3540 PR tree-optimization/110371
3541 PR tree-optimization/110018
3542 * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
3543 save intermediate type operand instead of "subtle" vec_dest
3544 for case NONE.
3545
3546 2023-06-26 liuhongt <hongtao.liu@intel.com>
3547
3548 PR tree-optimization/110371
3549 PR tree-optimization/110018
3550 * tree-vect-stmts.cc (vectorizable_conversion): Don't use
3551 intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
3552
3553 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
3554
3555 * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
3556 Override tune_string with arch_string if tune_string is not
3557 explicitly specified.
3558
3559 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3560
3561 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
3562 AVL propagation.
3563 * config/riscv/riscv-vsetvl.h: New function.
3564
3565 2023-06-25 Li Xu <xuli1@eswincomputing.com>
3566
3567 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
3568 emit_move_insn
3569
3570 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3571
3572 * config/riscv/autovec.md (len_load_<mode>): Remove.
3573 (len_maskload<mode><vm>): Remove.
3574 (len_store_<mode>): New pattern.
3575 (len_maskstore<mode><vm>): New pattern.
3576 * config/riscv/predicates.md (autovec_length_operand): New predicate.
3577 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3578 (expand_load_store): New function.
3579 * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
3580 (emit_nonvlmax_masked_insn): Ditto.
3581 (expand_load_store): Ditto.
3582 * config/riscv/riscv-vector-builtins.cc
3583 (function_expander::use_contiguous_store_insn): Add avl_type operand
3584 into pred_store.
3585 * config/riscv/vector.md: Ditto.
3586
3587 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3588
3589 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
3590 argument index.
3591
3592 2023-06-25 Pan Li <pan2.li@intel.com>
3593
3594 * config/riscv/vector.md: Revert.
3595
3596 2023-06-25 Pan Li <pan2.li@intel.com>
3597
3598 * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
3599 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
3600 (ADJUST_ALIGNMENT): Ditto.
3601 (RVV_TUPLE_PARTIAL_MODES): Ditto.
3602 (ADJUST_NUNITS): Ditto.
3603 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
3604 (vfloat16mf4x3_t): Ditto.
3605 (vfloat16mf4x4_t): Ditto.
3606 (vfloat16mf4x5_t): Ditto.
3607 (vfloat16mf4x6_t): Ditto.
3608 (vfloat16mf4x7_t): Ditto.
3609 (vfloat16mf4x8_t): Ditto.
3610 (vfloat16mf2x2_t): Ditto.
3611 (vfloat16mf2x3_t): Ditto.
3612 (vfloat16mf2x4_t): Ditto.
3613 (vfloat16mf2x5_t): Ditto.
3614 (vfloat16mf2x6_t): Ditto.
3615 (vfloat16mf2x7_t): Ditto.
3616 (vfloat16mf2x8_t): Ditto.
3617 (vfloat16m1x2_t): Ditto.
3618 (vfloat16m1x3_t): Ditto.
3619 (vfloat16m1x4_t): Ditto.
3620 (vfloat16m1x5_t): Ditto.
3621 (vfloat16m1x6_t): Ditto.
3622 (vfloat16m1x7_t): Ditto.
3623 (vfloat16m1x8_t): Ditto.
3624 (vfloat16m2x2_t): Ditto.
3625 (vfloat16m2x3_t): Diito.
3626 (vfloat16m2x4_t): Diito.
3627 (vfloat16m4x2_t): Diito.
3628 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
3629 (vfloat16mf4x3_t): Ditto.
3630 (vfloat16mf4x4_t): Ditto.
3631 (vfloat16mf4x5_t): Ditto.
3632 (vfloat16mf4x6_t): Ditto.
3633 (vfloat16mf4x7_t): Ditto.
3634 (vfloat16mf4x8_t): Ditto.
3635 (vfloat16mf2x2_t): Ditto.
3636 (vfloat16mf2x3_t): Ditto.
3637 (vfloat16mf2x4_t): Ditto.
3638 (vfloat16mf2x5_t): Ditto.
3639 (vfloat16mf2x6_t): Ditto.
3640 (vfloat16mf2x7_t): Ditto.
3641 (vfloat16mf2x8_t): Ditto.
3642 (vfloat16m1x2_t): Ditto.
3643 (vfloat16m1x3_t): Ditto.
3644 (vfloat16m1x4_t): Ditto.
3645 (vfloat16m1x5_t): Ditto.
3646 (vfloat16m1x6_t): Ditto.
3647 (vfloat16m1x7_t): Ditto.
3648 (vfloat16m1x8_t): Ditto.
3649 (vfloat16m2x2_t): Ditto.
3650 (vfloat16m2x3_t): Ditto.
3651 (vfloat16m2x4_t): Ditto.
3652 (vfloat16m4x2_t): Ditto.
3653 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
3654 * config/riscv/riscv.md: Ditto.
3655 * config/riscv/vector-iterators.md: Ditto.
3656
3657 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3658
3659 * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
3660 (gimple_fold_partial_load_store_mem_ref): Ditto.
3661 (gimple_fold_partial_store): Ditto.
3662 (gimple_fold_call): Ditto.
3663
3664 2023-06-25 liuhongt <hongtao.liu@intel.com>
3665
3666 PR target/110309
3667 * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
3668 Refine pattern with UNSPEC_MASKLOAD.
3669 (maskload<mode><avx512fmaskmodelower>): Ditto.
3670 (*<avx512>_load<mode>_mask): Extend mode iterator to
3671 VI12HFBF_AVX512VL.
3672 (*<avx512>_load<mode>): Ditto.
3673
3674 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3675
3676 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
3677
3678 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3679
3680 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
3681 LEN_MASK_{LOAD,STORE}
3682
3683 2023-06-25 yulong <shiyulong@iscas.ac.cn>
3684
3685 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
3686
3687 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
3688
3689 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
3690
3691 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3692
3693 * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
3694 (*fma<VI:mode><P:mode>): Ditto.
3695 (*fnma<mode>): Ditto.
3696 (*fnma<VI:mode><P:mode>): Ditto.
3697
3698 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3699
3700 * config/riscv/autovec.md (fma<mode>4): New pattern.
3701 (*fma<mode>): Ditto.
3702 (fnma<mode>4): Ditto.
3703 (*fnma<mode>): Ditto.
3704 (fms<mode>4): Ditto.
3705 (*fms<mode>): Ditto.
3706 (fnms<mode>4): Ditto.
3707 (*fnms<mode>): Ditto.
3708 * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
3709 New function.
3710 * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
3711 * config/riscv/vector.md: Fix attribute bug.
3712
3713 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3714
3715 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
3716 Apply LEN_MASK_{LOAD,STORE}.
3717
3718 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3719
3720 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
3721 Add LEN_MASK_{LOAD,STORE}.
3722
3723 2023-06-24 David Malcolm <dmalcolm@redhat.com>
3724
3725 * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
3726 * diagnostic.cc: Likewise.
3727 * text-art/box-drawing.cc: Likewise.
3728 * text-art/canvas.cc: Likewise.
3729 * text-art/ruler.cc: Likewise.
3730 * text-art/selftests.cc: Likewise.
3731 * text-art/selftests.h (text_art::canvas): New forward decl.
3732 * text-art/style.cc: Add #define INCLUDE_VECTOR.
3733 * text-art/styled-string.cc: Likewise.
3734 * text-art/table.cc: Likewise.
3735 * text-art/table.h: Remove #include <vector>.
3736 * text-art/theme.cc: Add #define INCLUDE_VECTOR.
3737 * text-art/types.h: Check that INCLUDE_VECTOR is defined.
3738 Remove #include of <vector> and <string>.
3739 * text-art/widget.cc: Add #define INCLUDE_VECTOR.
3740 * text-art/widget.h: Remove #include <vector>.
3741
3742 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3743
3744 * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
3745 (internal_load_fn_p): Add LEN_MASK_LOAD.
3746 (internal_store_fn_p): Add LEN_MASK_STORE.
3747 (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
3748 (internal_fn_stored_value_index): Add LEN_MASK_STORE.
3749 (internal_len_load_store_bias): Add LEN_MASK_{LOAD,STORE}.
3750 * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
3751 (get_len_load_store_mode): Ditto.
3752 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
3753 (get_len_load_store_mode): Ditto.
3754 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
3755 (get_all_ones_mask): New function.
3756 (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
3757 (vectorizable_load): Ditto.
3758
3759 2023-06-23 Marek Polacek <polacek@redhat.com>
3760
3761 * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
3762 -std=gnu++26. Document that for C++23, its value is 202302L.
3763 * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
3764 * dwarf2out.cc (highest_c_language): Handle GNU C++26.
3765 (gen_compile_unit_die): Likewise.
3766
3767 2023-06-23 Jan Hubicka <jh@suse.cz>
3768
3769 * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
3770 demand.
3771 (pass_phiprop::execute): Do not compute it here; return
3772 update_ssa_only_virtuals if something changed.
3773 (pass_data_phiprop): Remove TODO_update_ssa from todos.
3774
3775 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
3776 Aaron Sawdey <acsawdey@linux.ibm.com>
3777
3778 PR target/105325
3779 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
3780 allowed prefixed lwa to be generated.
3781 * config/rs6000/fusion.md: Regenerate.
3782 * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
3783 * config/rs6000/rs6000.md (prefixed attribute): Add support for load
3784 plus compare immediate fused insns.
3785 (maybe_prefixed): Likewise.
3786
3787 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
3788
3789 * simplify-rtx.cc (simplify_subreg): Optimize lowpart SUBREGs
3790 of ASHIFT to const0_rtx with sufficiently large shift count.
3791 Optimize highpart SUBREGs of ASHIFT as the shift operand when
3792 the shift count is the correct offset. Optimize SUBREGs of
3793 multi-word logic operations if the SUBREGs of both operands
3794 can be simplified.
3795
3796 2023-06-23 Richard Biener <rguenther@suse.de>
3797
3798 * varasm.cc (initializer_constant_valid_p_1): Only
3799 allow conversions between scalar floating point types.
3800
3801 2023-06-23 Richard Biener <rguenther@suse.de>
3802
3803 * tree-vect-stmts.cc (vectorizable_assignment):
3804 Properly handle non-integral operands when analyzing
3805 conversions.
3806
3807 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3808
3809 PR tree-optimization/110280
3810 * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
3811 using build_vector_from_val with the element of input operand, and
3812 mask's type if operand and mask's types don't match.
3813
3814 2023-06-23 Richard Biener <rguenther@suse.de>
3815
3816 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
3817 the truth_value_p case with !VECTOR_TYPE_P.
3818
3819 2023-06-23 Richard Biener <rguenther@suse.de>
3820
3821 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
3822 Exit early when the type isn't scalar integral.
3823
3824 2023-06-23 Richard Biener <rguenther@suse.de>
3825
3826 * match.pd ((outertype)((innertype0)a+(innertype1)b)
3827 -> ((newtype)a+(newtype)b)): Use element_precision
3828 where appropriate.
3829
3830 2023-06-23 Richard Biener <rguenther@suse.de>
3831
3832 * fold-const.cc (fold_binary_loc): Use element_precision
3833 when trying (double)float1 CMP (double)float2 to
3834 float1 CMP float2 simplification.
3835 * match.pd: Likewise.
3836
3837 2023-06-23 Richard Biener <rguenther@suse.de>
3838
3839 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
3840 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
3841
3842 2023-06-23 Richard Biener <rguenther@suse.de>
3843
3844 * tree-vect-stmts.cc (vector_vector_composition_type):
3845 Handle composition of a vector from a number of elements that
3846 happens to match its number of lanes.
3847
3848 2023-06-22 Marek Polacek <polacek@redhat.com>
3849
3850 * configure.ac (--enable-host-bind-now): New check. Add
3851 -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
3852 * configure: Regenerate.
3853 * doc/install.texi: Document --enable-host-bind-now.
3854
3855 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
3856
3857 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
3858
3859 2023-06-22 Richard Biener <rguenther@suse.de>
3860
3861 PR tree-optimization/110332
3862 * tree-ssa-phiprop.cc (propagate_with_phi): Always
3863 check aliasing with edge inserted loads.
3864
3865 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
3866 Uros Bizjak <ubizjak@gmail.com>
3867
3868 * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
3869 expansion of ptestc with equal operands as producing const1_rtx.
3870 * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
3871 estimates of UNSPEC_PTEST, where the ptest performs the PAND
3872 or PAND of its operands.
3873 * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
3874 of reg_equal_p operands into an x86_stc instruction.
3875 (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
3876 (define_split): Similar to above for strict_low_part destinations.
3877 (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
3878
3879 2023-06-22 David Malcolm <dmalcolm@redhat.com>
3880
3881 PR analyzer/106626
3882 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
3883 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
3884 text art.
3885 (fanalyzer-debug-text-art): New.
3886
3887 2023-06-22 David Malcolm <dmalcolm@redhat.com>
3888
3889 * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
3890 text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
3891 text-art/style.o, text-art/styled-string.o, text-art/table.o,
3892 text-art/theme.o, and text-art/widget.o.
3893 * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
3894 (COLOR_FG_BRIGHT_RED): New.
3895 (COLOR_FG_BRIGHT_GREEN): New.
3896 (COLOR_FG_BRIGHT_YELLOW): New.
3897 (COLOR_FG_BRIGHT_BLUE): New.
3898 (COLOR_FG_BRIGHT_MAGENTA): New.
3899 (COLOR_FG_BRIGHT_CYAN): New.
3900 (COLOR_FG_BRIGHT_WHITE): New.
3901 (COLOR_BG_BRIGHT_BLACK): New.
3902 (COLOR_BG_BRIGHT_RED): New.
3903 (COLOR_BG_BRIGHT_GREEN): New.
3904 (COLOR_BG_BRIGHT_YELLOW): New.
3905 (COLOR_BG_BRIGHT_BLUE): New.
3906 (COLOR_BG_BRIGHT_MAGENTA): New.
3907 (COLOR_BG_BRIGHT_CYAN): New.
3908 (COLOR_BG_BRIGHT_WHITE): New.
3909 * common.opt (fdiagnostics-text-art-charset=): New option.
3910 (diagnostic-text-art.h): New SourceInclude.
3911 (diagnostic_text_art_charset) New Enum and EnumValues.
3912 * configure: Regenerate.
3913 * configure.ac (gccdepdir): Add text-art to loop.
3914 * diagnostic-diagram.h: New file.
3915 * diagnostic-format-json.cc (json_emit_diagram): New.
3916 (diagnostic_output_format_init_json): Wire it up to
3917 context->m_diagrams.m_emission_cb.
3918 * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
3919 "text-art/canvas.h".
3920 (sarif_result::on_nested_diagnostic): Move code to...
3921 (sarif_result::add_related_location): ...this new function.
3922 (sarif_result::on_diagram): New.
3923 (sarif_builder::emit_diagram): New.
3924 (sarif_builder::make_message_object_for_diagram): New.
3925 (sarif_emit_diagram): New.
3926 (diagnostic_output_format_init_sarif): Set
3927 context->m_diagrams.m_emission_cb to sarif_emit_diagram.
3928 * diagnostic-text-art.h: New file.
3929 * diagnostic.cc: Include "diagnostic-text-art.h",
3930 "diagnostic-diagram.h", and "text-art/theme.h".
3931 (diagnostic_initialize): Initialize context->m_diagrams and
3932 call diagnostics_text_art_charset_init.
3933 (diagnostic_finish): Clean up context->m_diagrams.m_theme.
3934 (diagnostic_emit_diagram): New.
3935 (diagnostics_text_art_charset_init): New.
3936 * diagnostic.h (text_art::theme): New forward decl.
3937 (class diagnostic_diagram): Likewise.
3938 (diagnostic_context::m_diagrams): New field.
3939 (diagnostic_emit_diagram): New decl.
3940 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
3941 -fdiagnostics-text-art-charset=.
3942 (-fdiagnostics-plain-output): Add
3943 -fdiagnostics-text-art-charset=none.
3944 * gcc.cc: Include "diagnostic-text-art.h".
3945 (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
3946 * opts-common.cc (decode_cmdline_options_to_array): Add
3947 "-fdiagnostics-text-art-charset=none" to expanded_args for
3948 -fdiagnostics-plain-output.
3949 * opts.cc: Include "diagnostic-text-art.h".
3950 (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
3951 * pretty-print.cc (pp_unicode_character): New.
3952 * pretty-print.h (pp_unicode_character): New decl.
3953 * selftest-run-tests.cc: Include "text-art/selftests.h".
3954 (selftest::run_tests): Call text_art_tests.
3955 * text-art/box-drawing-chars.inc: New file, generated by
3956 contrib/unicode/gen-box-drawing-chars.py.
3957 * text-art/box-drawing.cc: New file.
3958 * text-art/box-drawing.h: New file.
3959 * text-art/canvas.cc: New file.
3960 * text-art/canvas.h: New file.
3961 * text-art/ruler.cc: New file.
3962 * text-art/ruler.h: New file.
3963 * text-art/selftests.cc: New file.
3964 * text-art/selftests.h: New file.
3965 * text-art/style.cc: New file.
3966 * text-art/styled-string.cc: New file.
3967 * text-art/table.cc: New file.
3968 * text-art/table.h: New file.
3969 * text-art/theme.cc: New file.
3970 * text-art/theme.h: New file.
3971 * text-art/types.h: New file.
3972 * text-art/widget.cc: New file.
3973 * text-art/widget.h: New file.
3974
3975 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
3976
3977 * function.h (emit_initial_value_sets):
3978 Change return type from int to void.
3979 (aggregate_value_p): Change return type from int to bool.
3980 (prologue_contains): Ditto.
3981 (epilogue_contains): Ditto.
3982 (prologue_epilogue_contains): Ditto.
3983 * function.cc (temp_slot): Make "in_use" variable bool.
3984 (make_slot_available): Update for changed "in_use" variable.
3985 (assign_stack_temp_for_type): Ditto.
3986 (emit_initial_value_sets): Change return type from int to void
3987 and update function body accordingly.
3988 (instantiate_virtual_regs): Ditto.
3989 (rest_of_handle_thread_prologue_and_epilogue): Ditto.
3990 (safe_insn_predicate): Change return type from int to bool.
3991 (aggregate_value_p): Change return type from int to bool
3992 and update function body accordingly.
3993 (prologue_contains): Change return type from int to bool.
3994 (prologue_epilogue_contains): Ditto.
3995
3996 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
3997
3998 * common.opt (fp_contract_mode) [on]: Remove fallback.
3999 * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
4000 * doc/invoke.texi (-ffp-contract): Update.
4001 * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
4002
4003 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4004
4005 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4006 Add alternatives to prefer to avoid same input and output Z register.
4007 (mask_gather_load<mode><v_int_container>): Likewise.
4008 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4009 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4010 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4011 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4012 Likewise.
4013 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4014 Likewise.
4015 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4016 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4017 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4018 <SVE_2BHSI:mode>_sxtw): Likewise.
4019 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4020 <SVE_2BHSI:mode>_uxtw): Likewise.
4021 (@aarch64_ldff1_gather<mode>): Likewise.
4022 (@aarch64_ldff1_gather<mode>): Likewise.
4023 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4024 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4025 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4026 <VNx4_NARROW:mode>): Likewise.
4027 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4028 <VNx2_NARROW:mode>): Likewise.
4029 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4030 <VNx2_NARROW:mode>_sxtw): Likewise.
4031 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4032 <VNx2_NARROW:mode>_uxtw): Likewise.
4033 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4034 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4035 <SVE_PARTIAL_I:mode>): Likewise.
4036
4037 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4038
4039 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4040 Convert to compact alternatives syntax.
4041 (mask_gather_load<mode><v_int_container>): Likewise.
4042 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4043 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4044 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4045 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4046 Likewise.
4047 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4048 Likewise.
4049 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4050 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4051 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4052 <SVE_2BHSI:mode>_sxtw): Likewise.
4053 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4054 <SVE_2BHSI:mode>_uxtw): Likewise.
4055 (@aarch64_ldff1_gather<mode>): Likewise.
4056 (@aarch64_ldff1_gather<mode>): Likewise.
4057 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4058 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4059 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4060 <VNx4_NARROW:mode>): Likewise.
4061 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4062 <VNx2_NARROW:mode>): Likewise.
4063 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4064 <VNx2_NARROW:mode>_sxtw): Likewise.
4065 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4066 <VNx2_NARROW:mode>_uxtw): Likewise.
4067 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4068 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4069 <SVE_PARTIAL_I:mode>): Likewise.
4070
4071 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4072
4073 Revert:
4074 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4075
4076 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4077 Convert to compact alternatives syntax.
4078 (mask_gather_load<mode><v_int_container>): Likewise.
4079 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4080 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4081 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4082 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4083 Likewise.
4084 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4085 Likewise.
4086 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4087 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4088 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4089 <SVE_2BHSI:mode>_sxtw): Likewise.
4090 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4091 <SVE_2BHSI:mode>_uxtw): Likewise.
4092 (@aarch64_ldff1_gather<mode>): Likewise.
4093 (@aarch64_ldff1_gather<mode>): Likewise.
4094 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4095 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4096 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4097 <VNx4_NARROW:mode>): Likewise.
4098 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4099 <VNx2_NARROW:mode>): Likewise.
4100 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4101 <VNx2_NARROW:mode>_sxtw): Likewise.
4102 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4103 <VNx2_NARROW:mode>_uxtw): Likewise.
4104 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4105 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4106 <SVE_PARTIAL_I:mode>): Likewise.
4107
4108 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4109
4110 * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
4111 (get_len_load_store_mode): Ditto.
4112 * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
4113 (get_len_load_store_mode): Ditto.
4114 * optabs-tree.cc (can_vec_mask_load_store_p): New function.
4115 (get_len_load_store_mode): Ditto.
4116 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
4117 (get_len_load_store_mode): Ditto.
4118 * tree-if-conv.cc: include optabs-tree instead of optabs-query
4119
4120 2023-06-21 Richard Biener <rguenther@suse.de>
4121
4122 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
4123 split_constant_offset for the POINTER_PLUS_EXPR case.
4124
4125 2023-06-21 Richard Biener <rguenther@suse.de>
4126
4127 * tree-ssa-loop-ivopts.cc (record_group_use): Use
4128 split_constant_offset.
4129
4130 2023-06-21 Richard Biener <rguenther@suse.de>
4131
4132 * tree-loop-distribution.cc (classify_builtin_st): Use
4133 split_constant_offset.
4134 * tree-ssa-loop-ivopts.h (strip_offset): Remove.
4135 * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
4136
4137 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4138
4139 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4140 Convert to compact alternatives syntax.
4141 (mask_gather_load<mode><v_int_container>): Likewise.
4142 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4143 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4144 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4145 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4146 Likewise.
4147 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4148 Likewise.
4149 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4150 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4151 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4152 <SVE_2BHSI:mode>_sxtw): Likewise.
4153 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4154 <SVE_2BHSI:mode>_uxtw): Likewise.
4155 (@aarch64_ldff1_gather<mode>): Likewise.
4156 (@aarch64_ldff1_gather<mode>): Likewise.
4157 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4158 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4159 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4160 <VNx4_NARROW:mode>): Likewise.
4161 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4162 <VNx2_NARROW:mode>): Likewise.
4163 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4164 <VNx2_NARROW:mode>_sxtw): Likewise.
4165 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4166 <VNx2_NARROW:mode>_uxtw): Likewise.
4167 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4168 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4169 <SVE_PARTIAL_I:mode>): Likewise.
4170
4171 2023-06-21 Tamar Christina <tamar.christina@arm.com>
4172
4173 PR other/110329
4174 * doc/md.texi: Replace backslashchar.
4175
4176 2023-06-21 Richard Biener <rguenther@suse.de>
4177
4178 * config/i386/i386.cc (ix86_vector_costs::finish_cost):
4179 Overload. For masked main loops make sure the vectorization
4180 factor isn't more than double the number of iterations.
4181
4182 2023-06-21 Jan Beulich <jbeulich@suse.com>
4183
4184 * config/i386/i386-expand.cc (ix86_expand_copysign): Request
4185 value duplication by ix86_build_signbit_mask() when AVX512F and
4186 not HFmode.
4187 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
4188 2-alternative form. Adjust "mode" attribute. Add "enabled"
4189 attribute.
4190 (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
4191 && !TARGET_PREFER_AVX256.
4192 (*<avx512>_vpternlog<mode>_2): Likewise.
4193 (*<avx512>_vpternlog<mode>_3): Likewise.
4194
4195 2023-06-21 liuhongt <hongtao.liu@intel.com>
4196
4197 PR target/110018
4198 * tree-vect-stmts.cc (vectorizable_conversion): Use
4199 intermiediate integer type for float_expr/fix_trunc_expr when
4200 direct optab is not existed.
4201
4202 2023-06-20 Tamar Christina <tamar.christina@arm.com>
4203
4204 PR bootstrap/110324
4205 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
4206
4207 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
4208
4209 * config/aarch64/aarch64.md (stack_tie): Hard-code the first
4210 register operand to the stack pointer. Require the second register
4211 operand to have the number specified in a separate const_int operand.
4212 * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
4213 (aarch64_allocate_and_probe_stack_space): Use it.
4214 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
4215 (aarch64_expand_epilogue): Likewise.
4216
4217 2023-06-20 Jakub Jelinek <jakub@redhat.com>
4218
4219 PR middle-end/79173
4220 * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
4221 IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
4222 type.
4223
4224 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
4225
4226 * calls.h (setjmp_call_p): Change return type from int to bool.
4227 * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
4228 (store_one_arg): Change return type from int to bool
4229 and adjust function body accordingly. Change "sibcall_failure"
4230 variable to bool.
4231 (finalize_must_preallocate): Ditto. Change *must_preallocate pointer
4232 argument to bool. Change "partial_seen" variable to bool.
4233 (load_register_parameters): Change *sibcall_failure
4234 pointer argument to bool.
4235 (check_sibcall_argument_overlap_1): Change return type from int to bool
4236 and adjust function body accordingly.
4237 (check_sibcall_argument_overlap): Ditto. Change
4238 "mark_stored_args_map" argument to bool.
4239 (emit_call_1): Change "already_popped" variable to bool.
4240 (setjmp_call_p): Change return type from int to bool
4241 and adjust function body accordingly.
4242 (initialize_argument_information): Change *must_preallocate
4243 pointer argument to bool.
4244 (expand_call): Change "pcc_struct_value", "must_preallocate"
4245 and "sibcall_failure" variables to bool.
4246 (emit_library_call_value_1): Change "pcc_struct_value"
4247 variable to bool.
4248
4249 2023-06-20 Martin Jambor <mjambor@suse.cz>
4250
4251 PR ipa/110276
4252 * ipa-sra.cc (struct caller_issues): New field there_is_one.
4253 (check_for_caller_issues): Set it.
4254 (check_all_callers_for_issues): Check it.
4255
4256 2023-06-20 Martin Jambor <mjambor@suse.cz>
4257
4258 * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
4259 (struct ipcp_transformation): Rearrange members according to
4260 C++ class coding convention, add m_uid_to_idx,
4261 get_param_index and maybe_create_parm_idx_map.
4262 * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
4263 (compare_uids): Likewise.
4264 (ipcp_transformation::maype_create_parm_idx_map): Likewise.
4265 * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
4266 (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
4267 (ipcp_update_vr): Likewise.
4268 (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
4269 out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
4270
4271 2023-06-20 Carl Love <cel@us.ibm.com>
4272
4273 * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
4274 Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
4275 Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
4276 Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
4277 Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
4278 (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
4279 CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
4280 * config/rs6000/rs6000-builtins.def
4281 (__builtin_vsx_scalar_extract_exp_to_vec,
4282 __builtin_vsx_scalar_extract_sig_to_vec,
4283 __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
4284 Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
4285 xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
4286 * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
4287 Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
4288 overloaded instance. Update comments.
4289 * config/rs6000/rs6000-overload.def
4290 (__builtin_vec_scalar_insert_exp): Add new overload definition with
4291 vector arguments.
4292 (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
4293 overloaded definitions.
4294 * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
4295 (DI_to_TI): New mode attribute.
4296 Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
4297 Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
4298 Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
4299 * doc/extend.texi (scalar_extract_exp_to_vec,
4300 scalar_extract_sig_to_vec): Add documentation for new builtins.
4301 (scalar_insert_exp): Add new overloaded builtin definition.
4302
4303 2023-06-20 Li Xu <xuli1@eswincomputing.com>
4304
4305 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
4306 size of vector mask mode to one rvv register.
4307
4308 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4309
4310 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
4311
4312 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
4313
4314 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
4315 switch handler.
4316
4317 2023-06-20 Richard Biener <rguenther@suse.de>
4318
4319 * tree-ssa-dse.cc (dse_classify_store): When we found
4320 no defs and the basic-block with the original definition
4321 ends in __builtin_unreachable[_trap] the store is dead.
4322
4323 2023-06-20 Richard Biener <rguenther@suse.de>
4324
4325 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
4326 keep the virtual SSA form up-to-date.
4327
4328 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4329
4330 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
4331 New define_insn_and_split.
4332
4333 2023-06-20 Tamar Christina <tamar.christina@arm.com>
4334
4335 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
4336
4337 2023-06-20 Jan Beulich <jbeulich@suse.com>
4338
4339 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
4340 constraint. Add new AVX512F alternative.
4341
4342 2023-06-20 Richard Biener <rguenther@suse.de>
4343
4344 PR debug/110295
4345 * dwarf2out.cc (process_scope_var): Continue processing
4346 the decl after setting a parent in case the existing DIE
4347 was in limbo.
4348
4349 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
4350
4351 * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
4352 (riscv_arg_has_vector): Simplify.
4353 (riscv_pass_in_vector_p): Adjust warning message.
4354
4355 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
4356
4357 * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
4358 (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
4359 * config/riscv/riscv.md (riscv_frcsr): New patterns.
4360 (riscv_fscsr): Likewise.
4361
4362 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
4363
4364 PR rtl-optimization/110305
4365 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4366 Handle HONOR_SNANS for x + 0.0.
4367
4368 2023-06-19 Jan Hubicka <jh@suse.cz>
4369
4370 PR tree-optimization/109811
4371 PR tree-optimization/109849
4372 * passes.def: Add phiprop to early optimization passes.
4373 * tree-ssa-phiprop.cc: Allow clonning.
4374
4375 2023-06-19 Tamar Christina <tamar.christina@arm.com>
4376
4377 * config/aarch64/aarch64.md (arches): Add nosimd.
4378 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
4379 compact syntax.
4380
4381 2023-06-19 Tamar Christina <tamar.christina@arm.com>
4382 Omar Tahir <Omar.Tahir2@arm.com>
4383
4384 * gensupport.cc (class conlist, add_constraints, add_attributes,
4385 skip_spaces, expect_char, preprocess_compact_syntax,
4386 parse_section_layout, parse_section, convert_syntax): New.
4387 (process_rtx): Check for conversion.
4388 * genoutput.cc (process_template): Check for unresolved iterators.
4389 (class data): Add compact_syntax_p.
4390 (gen_insn): Use it.
4391 * gensupport.h (compact_syntax): New.
4392 (hash-set.h): Include.
4393 * doc/md.texi: Document it.
4394
4395 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
4396
4397 * recog.h (check_asm_operands): Change return type from int to bool.
4398 (insn_invalid_p): Ditto.
4399 (verify_changes): Ditto.
4400 (apply_change_group): Ditto.
4401 (constrain_operands): Ditto.
4402 (constrain_operands_cached): Ditto.
4403 (validate_replace_rtx_subexp): Ditto.
4404 (validate_replace_rtx): Ditto.
4405 (validate_replace_rtx_part): Ditto.
4406 (validate_replace_rtx_part_nosimplify): Ditto.
4407 (added_clobbers_hard_reg_p): Ditto.
4408 (peep2_regno_dead_p): Ditto.
4409 (peep2_reg_dead_p): Ditto.
4410 (store_data_bypass_p): Ditto.
4411 (if_test_bypass_p): Ditto.
4412 * rtl.h (split_all_insns_noflow): Change
4413 return type from unsigned int to void.
4414 * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
4415 of generated added_clobbers_hard_reg_p from int to bool and adjust
4416 function body accordingly. Change "used" variable type from
4417 int to bool.
4418 * recog.cc (check_asm_operands): Change return type
4419 from int to bool and adjust function body accordingly.
4420 (insn_invalid_p): Ditto. Change "is_asm" variable to bool.
4421 (verify_changes): Change return type from int to bool.
4422 (apply_change_group): Change return type from int to bool
4423 and adjust function body accordingly.
4424 (validate_replace_rtx_subexp): Change return type from int to bool.
4425 (validate_replace_rtx): Ditto.
4426 (validate_replace_rtx_part): Ditto.
4427 (validate_replace_rtx_part_nosimplify): Ditto.
4428 (constrain_operands_cached): Ditto.
4429 (constrain_operands): Ditto. Change "lose" and "win"
4430 variables type from int to bool.
4431 (split_all_insns_noflow): Change return type from unsigned int
4432 to void and adjust function body accordingly.
4433 (peep2_regno_dead_p): Change return type from int to bool.
4434 (peep2_reg_dead_p): Ditto.
4435 (peep2_find_free_register): Change "success"
4436 variable type from int to bool
4437 (store_data_bypass_p_1): Change return type from int to bool.
4438 (store_data_bypass_p): Ditto.
4439
4440 2023-06-19 Li Xu <xuli1@eswincomputing.com>
4441
4442 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
4443 Zve32f extension.
4444
4445 2023-06-19 Pan Li <pan2.li@intel.com>
4446
4447 PR target/110299
4448 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
4449 modes.
4450 * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
4451 VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
4452 VF_ZVE63 and VF_ZVE32.
4453 * config/riscv/vector.md
4454 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
4455 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
4456 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
4457 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
4458 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
4459 (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
4460 (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
4461 (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
4462 (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
4463 (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
4464
4465 2023-06-19 Pan Li <pan2.li@intel.com>
4466
4467 PR target/110277
4468 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
4469 ret_mode.
4470 * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
4471 VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
4472 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
4473 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
4474 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
4475 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
4476 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
4477 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
4478 (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
4479 (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
4480 (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
4481 (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
4482 (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
4483 (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
4484
4485 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
4486
4487 * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
4488 (gcn_init_libfuncs): Add div and mod functions for all modes.
4489 Add placeholders for divmod functions.
4490 (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
4491
4492 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
4493
4494 * tree-vect-generic.cc: Include optabs-libfuncs.h.
4495 (get_compute_type): Check optab_libfunc.
4496 * tree-vect-stmts.cc: Include optabs-libfuncs.h.
4497 (vectorizable_operation): Check optab_libfunc.
4498
4499 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
4500
4501 * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
4502 * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
4503 (V_MOV, V_MOV_ALT): Likewise.
4504 (scalar_mode, SCALAR_MODE): Add TImode.
4505 (vnsi, VnSI, vndi, VnDI): Likewise.
4506 (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
4507 (mov<mode>, mov<mode>_unspec): Use V_MOV.
4508 (*mov<mode>_4reg): New insn.
4509 (mov<mode>_exec): New 4reg variant.
4510 (mov<mode>_sgprbase): Likewise.
4511 (reload_in<mode>, reload_out<mode>): Use V_MOV.
4512 (vec_set<mode>): Likewise.
4513 (vec_duplicate<mode><exec>): New 4reg variant.
4514 (vec_extract<mode><scalar_mode>): Likewise.
4515 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
4516 (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
4517 (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
4518 (fold_extract_last_<mode>): Use V_MOV.
4519 (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
4520 (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
4521 (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
4522 gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
4523 gather<mode>_insn_2offsets<exec>): Use V_MOV.
4524 (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
4525 scatter<mode>_insn_1offset<exec_scatter>,
4526 scatter<mode>_insn_1offset_ds<exec_scatter>,
4527 scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
4528 (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
4529 mask_scatter_store<mode><vnsi>): Likewise.
4530 * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
4531 (gcn_hard_regno_mode_ok): Likewise.
4532 (GEN_VNM): Add TImode support.
4533 (USE_TI): New macro. Separate TImode operations from non-TImode ones.
4534 (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
4535 V8TImode, and V2TImode.
4536 (print_operand): Add 'J' and 'K' print codes.
4537
4538 2023-06-19 Richard Biener <rguenther@suse.de>
4539
4540 PR tree-optimization/110298
4541 * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
4542 Clear number of iterations info before cleaning up the CFG.
4543
4544 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4545
4546 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4547 Simplify vec_concat of lowpart subreg and high part vec_select.
4548
4549 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
4550
4551 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
4552
4553 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
4554
4555 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4556 Handle null niters_skip.
4557
4558 2023-06-19 Richard Biener <rguenther@suse.de>
4559
4560 * config/aarch64/aarch64.cc
4561 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
4562 to LOOP_VINFO_MASKS.
4563
4564 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
4565
4566 PR target/105523
4567 * common/config/avr/avr-common.cc: Remove setting
4568 of OPT_fdelete_null_pointer_checks.
4569 * config/avr/avr.cc (avr_option_override): Clear
4570 flag_delete_null_pointer_checks if zero_address_valid.
4571 (avr_addr_space_zero_address_valid): New function.
4572 (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
4573 hook.
4574
4575 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4576 Robin Dapp <rdapp.gcc@gmail.com>
4577
4578 * doc/md.texi: Add len_mask{load,store}.
4579 * genopinit.cc (main): Ditto.
4580 (CMP_NAME): Ditto.
4581 * internal-fn.cc (len_maskload_direct): Ditto.
4582 (len_maskstore_direct): Ditto.
4583 (expand_call_mem_ref): Ditto.
4584 (expand_partial_load_optab_fn): Ditto.
4585 (expand_len_maskload_optab_fn): Ditto.
4586 (expand_partial_store_optab_fn): Ditto.
4587 (expand_len_maskstore_optab_fn): Ditto.
4588 (direct_len_maskload_optab_supported_p): Ditto.
4589 (direct_len_maskstore_optab_supported_p): Ditto.
4590 * internal-fn.def (LEN_MASK_LOAD): Ditto.
4591 (LEN_MASK_STORE): Ditto.
4592 * optabs.def (OPTAB_CD): Ditto.
4593
4594 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4595
4596 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
4597
4598 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4599
4600 * config/riscv/autovec.md (<optab><mode>3): Implement binop
4601 expander.
4602 * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
4603 (enum vxrm_field_enum): Rename this...
4604 (enum fixed_point_rounding_mode): ...to this.
4605 (enum frm_field_enum): Rename this...
4606 (enum floating_point_rounding_mode): ...to this.
4607 * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
4608 * config/riscv/riscv.cc (riscv_const_insns): Clarify const
4609 vector handling.
4610 (riscv_libgcc_floating_mode_supported_p): Adjust comment.
4611 (riscv_excess_precision): Do not convert to float for ZVFH.
4612 * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
4613
4614 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4615
4616 * config/riscv/vector-iterators.md: Add VI_QH iterator.
4617 * config/riscv/autovec-opt.md
4618 (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
4619 that includes sign extension.
4620 (@pred_extract_first_sextsi<mode>): Dito for SImode.
4621
4622 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4623
4624 * config/riscv/autovec.md (vec_set<mode>): Implement.
4625 (vec_extract<mode><vel>): Implement.
4626 * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
4627 (emit_vlmax_slide_insn): Declare.
4628 (emit_nonvlmax_slide_tu_insn): Declare.
4629 (emit_scalar_move_insn): Export.
4630 (emit_nonvlmax_integer_move_insn): Export.
4631 * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
4632 (emit_nonvlmax_slide_tu_insn): New function.
4633 (emit_vlmax_masked_mu_insn): No change.
4634 (emit_vlmax_integer_move_insn): Export.
4635
4636 2023-06-19 Richard Biener <rguenther@suse.de>
4637
4638 * tree-vectorizer.h (enum vect_partial_vector_style): New.
4639 (_loop_vec_info::partial_vector_style): Likewise.
4640 (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
4641 (rgroup_controls::compare_type): Add.
4642 (vec_loop_masks): Change from a typedef to auto_vec<>
4643 to a structure.
4644 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4645 Adjust. Convert niters_skip to compare_type.
4646 (vect_set_loop_condition_partial_vectors_avx512): New function
4647 implementing the AVX512 partial vector codegen.
4648 (vect_set_loop_condition): Dispatch to the correct
4649 vect_set_loop_condition_partial_vectors_* function based on
4650 LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4651 (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
4652 in the original niter type.
4653 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
4654 partial_vector_style.
4655 (can_produce_all_loop_masks_p): Adjust.
4656 (vect_verify_full_masking): Produce the rgroup_controls vector
4657 here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
4658 (vect_verify_full_masking_avx512): New function implementing
4659 verification of AVX512 style masking.
4660 (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4661 (vect_analyze_loop_2): Also try AVX512 style masking.
4662 Adjust condition.
4663 (vect_estimate_min_profitable_iters): Implement AVX512 style
4664 mask producing cost.
4665 (vect_record_loop_mask): Do not build the rgroup_controls
4666 vector here but record masks in a hash-set.
4667 (vect_get_loop_mask): Implement AVX512 style mask query,
4668 complementing the existing while_ult style.
4669
4670 2023-06-19 Richard Biener <rguenther@suse.de>
4671
4672 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
4673 argument.
4674 * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
4675 (vectorize_fold_left_reduction): Adjust.
4676 (vect_transform_reduction): Likewise.
4677 (vectorizable_live_operation): Likewise.
4678 * tree-vect-stmts.cc (vectorizable_call): Likewise.
4679 (vectorizable_operation): Likewise.
4680 (vectorizable_store): Likewise.
4681 (vectorizable_load): Likewise.
4682 (vectorizable_condition): Likewise.
4683
4684 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
4685
4686 PR target/110086
4687 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
4688 Add Optimization option property.
4689
4690 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4691
4692 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
4693 Add new pattern for the abovementioned case.
4694
4695 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4696
4697 * config/xtensa/xtensa.cc
4698 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
4699
4700 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
4701
4702 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
4703
4704 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
4705
4706 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
4707
4708 2023-06-19 liuhongt <hongtao.liu@intel.com>
4709
4710 PR target/110235
4711 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
4712 Substitute with ..
4713 (sse2_packsswb<mask_name>): .. this, ..
4714 (avx2_packsswb<mask_name>): .. this and ..
4715 (avx512bw_packsswb<mask_name>): .. this.
4716 (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
4717 (sse2_packssdw<mask_name>): .. this, ..
4718 (avx2_packssdw<mask_name>): .. this and ..
4719 (avx512bw_packssdw<mask_name>): .. this.
4720
4721 2023-06-19 liuhongt <hongtao.liu@intel.com>
4722
4723 PR target/110235
4724 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
4725 UNSPEC_US_TRUNCATE instead of original us_truncate for
4726 packusdw/packuswb.
4727 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
4728 with ..
4729 (mmx_packsswb): .. this and ..
4730 (mmx_packuswb): .. this.
4731 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
4732 us_truncate.
4733 (s_trunsuffix): Removed code iterator.
4734 (any_s_truncate): Ditto.
4735 * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
4736 UNSPEC_US_TRUNCATE instead of original us_truncate.
4737 (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
4738 * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
4739
4740 2023-06-18 Pan Li <pan2.li@intel.com>
4741
4742 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
4743
4744 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
4745
4746 * rtl.h (*rtx_equal_p_callback_function):
4747 Change return type from int to bool.
4748 (rtx_equal_p): Ditto.
4749 (*hash_rtx_callback_function): Ditto.
4750 * rtl.cc (rtx_equal_p): Change return type from int to bool
4751 and adjust function body accordingly.
4752 * early-remat.cc (scratch_equal): Ditto.
4753 * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
4754 (hash_with_unspec_callback): Ditto.
4755
4756 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
4757
4758 * config/arc/arc.md (movqi_insn): Allow certain constants to
4759 be stored into memory in the pattern's condition.
4760 (movsf_insn): Similarly.
4761
4762 2023-06-18 Honza <jh@ryzen3.suse.cz>
4763
4764 PR tree-optimization/109849
4765 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
4766 ES; handle ipa_predicate::not_sra_candidate.
4767 (evaluate_properties_for_edge): Pass es to
4768 evaluate_conditions_for_known_args.
4769 (ipa_fn_summary_t::duplicate): Handle sra candidates.
4770 (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
4771 (load_or_store_of_ptr_parameter): New function.
4772 (points_to_possible_sra_candidate_p): New function.
4773 (analyze_function_body): Initialize points_to_possible_sra_candidate;
4774 determine sra predicates.
4775 (estimate_ipcp_clone_size_and_time): Update call of
4776 evaluate_conditions_for_known_args.
4777 (remap_edge_params): Update points_to_possible_sra_candidate.
4778 (read_ipa_call_summary): Stream points_to_possible_sra_candidate
4779 (write_ipa_call_summary): Likewise.
4780 * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
4781 (dump_condition): Dump it.
4782 * ipa-predicate.h (struct inline_param_summary): Add
4783 points_to_possible_sra_candidate.
4784
4785 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
4786
4787 * config/i386/i386-expand.cc (ix86_expand_carry): New helper
4788 function for setting the carry flag.
4789 (ix86_expand_builtin) <handlecarry>: Use it here.
4790 * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
4791 * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
4792 (usubc<mode>5): Likewise.
4793
4794 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
4795
4796 * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
4797 for the immediate constant shift count.
4798 (*concat<mode><dwi>3_2): Likewise.
4799 (*concat<mode><dwi>3_3): Likewise.
4800 (*concat<mode><dwi>3_4): Likewise.
4801 (*concat<mode><dwi>3_5): Likewise.
4802 (*concat<mode><dwi>3_6): Likewise.
4803
4804 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
4805
4806 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
4807 (hash_rtx): Remove.
4808 * early-remat.cc (remat_candidate_hasher::equal): Update
4809 to call rtx_equal_p with rtx_equal_p_callback_function argument.
4810 * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
4811 (rtx_equal_p): Remove.
4812 * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
4813 argument with NULL default value.
4814 (rtx_equal_p_cb): Remove function declaration.
4815 (hash_rtx_cb): Ditto.
4816 (hash_rtx): Add hash_rtx_callback_function argument
4817 with NULL default value.
4818 * sel-sched-ir.cc (free_nop_pool): Update function comment.
4819 (skip_unspecs_callback): Ditto.
4820 (vinsn_init): Update to call hash_rtx with
4821 hash_rtx_callback_function argument.
4822 (vinsn_equal_p): Ditto.
4823
4824 2023-06-18 yulong <shiyulong@iscas.ac.cn>
4825
4826 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
4827 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
4828 (ADJUST_ALIGNMENT): Ditto.
4829 (RVV_TUPLE_PARTIAL_MODES): Ditto.
4830 (ADJUST_NUNITS): Ditto.
4831 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
4832 New types.
4833 (vfloat16mf4x3_t): Ditto.
4834 (vfloat16mf4x4_t): Ditto.
4835 (vfloat16mf4x5_t): Ditto.
4836 (vfloat16mf4x6_t): Ditto.
4837 (vfloat16mf4x7_t): Ditto.
4838 (vfloat16mf4x8_t): Ditto.
4839 (vfloat16mf2x2_t): Ditto.
4840 (vfloat16mf2x3_t): Ditto.
4841 (vfloat16mf2x4_t): Ditto.
4842 (vfloat16mf2x5_t): Ditto.
4843 (vfloat16mf2x6_t): Ditto.
4844 (vfloat16mf2x7_t): Ditto.
4845 (vfloat16mf2x8_t): Ditto.
4846 (vfloat16m1x2_t): Ditto.
4847 (vfloat16m1x3_t): Ditto.
4848 (vfloat16m1x4_t): Ditto.
4849 (vfloat16m1x5_t): Ditto.
4850 (vfloat16m1x6_t): Ditto.
4851 (vfloat16m1x7_t): Ditto.
4852 (vfloat16m1x8_t): Ditto.
4853 (vfloat16m2x2_t): Ditto.
4854 (vfloat16m2x3_t): Ditto.
4855 (vfloat16m2x4_t): Ditto.
4856 (vfloat16m4x2_t): Ditto.
4857 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
4858 (vfloat16mf4x3_t): Ditto.
4859 (vfloat16mf4x4_t): Ditto.
4860 (vfloat16mf4x5_t): Ditto.
4861 (vfloat16mf4x6_t): Ditto.
4862 (vfloat16mf4x7_t): Ditto.
4863 (vfloat16mf4x8_t): Ditto.
4864 (vfloat16mf2x2_t): Ditto.
4865 (vfloat16mf2x3_t): Ditto.
4866 (vfloat16mf2x4_t): Ditto.
4867 (vfloat16mf2x5_t): Ditto.
4868 (vfloat16mf2x6_t): Ditto.
4869 (vfloat16mf2x7_t): Ditto.
4870 (vfloat16mf2x8_t): Ditto.
4871 (vfloat16m1x2_t): Ditto.
4872 (vfloat16m1x3_t): Ditto.
4873 (vfloat16m1x4_t): Ditto.
4874 (vfloat16m1x5_t): Ditto.
4875 (vfloat16m1x6_t): Ditto.
4876 (vfloat16m1x7_t): Ditto.
4877 (vfloat16m1x8_t): Ditto.
4878 (vfloat16m2x2_t): Ditto.
4879 (vfloat16m2x3_t): Ditto.
4880 (vfloat16m2x4_t): Ditto.
4881 (vfloat16m4x2_t): Ditto.
4882 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
4883 * config/riscv/riscv.md: New.
4884 * config/riscv/vector-iterators.md: New.
4885
4886 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
4887
4888 * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
4889 CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
4890 Generalize special case for converting TImode to V1TImode to handle
4891 all 128-bit vector conversions.
4892
4893 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
4894
4895 * gcc-ar.cc (main): Refactor to slightly reduce code
4896 duplication. Avoid unnecessary elements in nargv.
4897
4898 2023-06-16 Pan Li <pan2.li@intel.com>
4899
4900 PR target/110265
4901 * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
4902 integer reduction expand.
4903 * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
4904 and the LMUL1 attr respectively.
4905 * config/riscv/vector.md
4906 (@pred_reduc_<reduc><mode><vlmul1>): Removed.
4907 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
4908 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
4909 (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
4910 (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
4911 (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
4912 (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
4913
4914 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4915
4916 PR target/110264
4917 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
4918
4919 2023-06-16 Jakub Jelinek <jakub@redhat.com>
4920
4921 PR middle-end/79173
4922 * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
4923 BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
4924 BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
4925 types.
4926 * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
4927 BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
4928 * builtins.cc (fold_builtin_addc_subc): New function.
4929 (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
4930 * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
4931
4932 2023-06-16 Jakub Jelinek <jakub@redhat.com>
4933
4934 PR tree-optimization/110271
4935 * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
4936 <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
4937 instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
4938
4939 2023-06-16 Martin Jambor <mjambor@suse.cz>
4940
4941 * configure: Regenerate.
4942
4943 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
4944 Uros Bizjak <ubizjak@gmail.com>
4945
4946 PR target/31985
4947 * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
4948 define_insn_and_split combine *add<dwi>3_doubleword with
4949 a *concat<mode><dwi>3 for more efficient lowering after reload.
4950
4951 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
4952
4953 * ira-lives.cc: Include except.h.
4954 (process_bb_node_lives): Ignore conflicts from cleanup exceptions
4955 when the pseudo does not live at the exception landing pad.
4956
4957 2023-06-16 Alex Coplan <alex.coplan@arm.com>
4958
4959 * doc/invoke.texi: Document -Welaborated-enum-base.
4960
4961 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4962
4963 * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
4964 (ushrn2_n): ... This.
4965 (sqshrn2_n): Rename builtins to...
4966 (ssqshrn2_n): ... This.
4967 (uqshrn2_n): Rename builtins to...
4968 (uqushrn2_n): ... This.
4969 * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
4970 (vqshrn_high_n_s32): Likewise.
4971 (vqshrn_high_n_s64): Likewise.
4972 (vqshrn_high_n_u16): Likewise.
4973 (vqshrn_high_n_u32): Likewise.
4974 (vqshrn_high_n_u64): Likewise.
4975 (vshrn_high_n_s16): Likewise.
4976 (vshrn_high_n_s32): Likewise.
4977 (vshrn_high_n_s64): Likewise.
4978 (vshrn_high_n_u16): Likewise.
4979 (vshrn_high_n_u32): Likewise.
4980 (vshrn_high_n_u64): Likewise.
4981 * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
4982 Rename to...
4983 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
4984 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
4985 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
4986 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
4987 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
4988 (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
4989 (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
4990 Update expander for the above.
4991
4992 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4993
4994 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
4995 (shrn2_n): ... This.
4996 (rshrn2): Rename builtins to...
4997 (rshrn2_n): ... This.
4998 * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
4999 (vrshrn_high_n_s32): Likewise.
5000 (vrshrn_high_n_s64): Likewise.
5001 (vrshrn_high_n_u16): Likewise.
5002 (vrshrn_high_n_u32): Likewise.
5003 (vrshrn_high_n_u64): Likewise.
5004 (vshrn_high_n_s16): Likewise.
5005 (vshrn_high_n_s32): Likewise.
5006 (vshrn_high_n_s64): Likewise.
5007 (vshrn_high_n_u16): Likewise.
5008 (vshrn_high_n_u32): Likewise.
5009 (vshrn_high_n_u64): Likewise.
5010 * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
5011 Delete.
5012 (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
5013 (aarch64_shrn2<mode>_insn_le): Likewise.
5014 (aarch64_shrn2<mode>_insn_be): Likewise.
5015 (aarch64_shrn2<mode>): Likewise.
5016 (aarch64_rshrn2<mode>_insn_le): Likewise.
5017 (aarch64_rshrn2<mode>_insn_be): Likewise.
5018 (aarch64_rshrn2<mode>): Likewise.
5019 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
5020 (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
5021 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
5022 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
5023 (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
5024 (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
5025 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
5026 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
5027 (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
5028 (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
5029 (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
5030 (aarch64_sqshrun2_n<mode>): New define_expand.
5031 (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
5032 (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
5033 (aarch64_sqrshrun2_n<mode>): New define_expand.
5034 * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
5035 UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
5036 Delete unspec values.
5037 (VQSHRN_N): Delete int iterator.
5038
5039 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5040
5041 * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
5042 * config/aarch64/aarch64-simd.md
5043 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
5044 (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
5045 Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
5046 * config/aarch64/iterators.md (shrn_s): New code attribute.
5047
5048 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5049
5050 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
5051 Rename to...
5052 (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes.
5053 (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
5054 (aarch64_sqrshrun_n<mode>_insn): Likewise.
5055 (aarch64_sqshrun_n<mode>_insn): Likewise.
5056 (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
5057 (aarch64_sqshrun_n<mode>): Likewise.
5058 (aarch64_sqrshrun_n<mode>): Likewise.
5059 * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
5060
5061 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5062
5063 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
5064 (shrn_n): ... This.
5065 (rshrn): Rename builtins to...
5066 (rshrn_n): ... This.
5067 * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
5068 (vshrn_n_s32): Likewise.
5069 (vshrn_n_s64): Likewise.
5070 (vshrn_n_u16): Likewise.
5071 (vshrn_n_u32): Likewise.
5072 (vshrn_n_u64): Likewise.
5073 (vrshrn_n_s16): Likewise.
5074 (vrshrn_n_s32): Likewise.
5075 (vrshrn_n_s64): Likewise.
5076 (vrshrn_n_u16): Likewise.
5077 (vrshrn_n_u32): Likewise.
5078 (vrshrn_n_u64): Likewise.
5079 * config/aarch64/aarch64-simd.md
5080 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
5081 (aarch64_shrn<mode>): Likewise.
5082 (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
5083 (aarch64_rshrn<mode>): Likewise.
5084 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
5085 (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
5086 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
5087 (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
5088 (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
5089 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
5090 (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
5091 (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
5092 (aarch64_sqshrun_n<mode>): Likewise.
5093 (aarch64_sqrshrun_n<mode>): Likewise.
5094 * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
5095 (TRUNCEXTEND): New code attribute.
5096 (TRUNC_SHIFT): Likewise.
5097 (shrn_op): Likewise.
5098 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
5099 New predicate.
5100
5101 2023-06-16 Pan Li <pan2.li@intel.com>
5102
5103 * config/riscv/riscv-vsetvl.cc
5104 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
5105
5106 2023-06-16 Richard Biener <rguenther@suse.de>
5107
5108 PR tree-optimization/110278
5109 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
5110 (x != (typeof x)(x == 0) -> true): Likewise.
5111
5112 2023-06-16 Pali Rohár <pali@kernel.org>
5113
5114 * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
5115 (REAL_LIBGCC_SPEC): New define.
5116 * config/i386/mingw.opt: Add mcrtdll=
5117 * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
5118 (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
5119 (STARTFILE_SPEC): Adjust for -mcrtdll=.
5120 * doc/invoke.texi: Add mcrtdll= documentation.
5121
5122 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
5123
5124 * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
5125 (mips_handle_code_readable_attr):New static function.
5126 (mips_get_code_readable_attr):New static enum function.
5127 (mips_set_current_function):Set the code_readable mode.
5128 (mips_option_override):Same as above.
5129 * doc/extend.texi:Document code_readable.
5130
5131 2023-06-16 Richard Biener <rguenther@suse.de>
5132
5133 PR tree-optimization/110269
5134 * fold-const.cc (fold_binary_loc): Merge x != 0 folding
5135 with tree_expr_nonzero_p ...
5136 * match.pd (cmp (convert? addr@0) integer_zerop): With this
5137 pattern.
5138
5139 2023-06-15 Marek Polacek <polacek@redhat.com>
5140
5141 * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie.
5142 Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to
5143 ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie.
5144 * configure.ac (--enable-host-shared): Don't set PICFLAG here.
5145 (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this
5146 check.
5147 * configure: Regenerate.
5148 * doc/install.texi: Document --enable-host-pie.
5149
5150 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
5151
5152 * regcprop.cc (maybe_mode_change): Enable stack pointer
5153 propagation.
5154
5155 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
5156
5157 PR tree-optimization/110266
5158 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
5159 complex type.
5160 (adjust_realpart_expr): Ditto.
5161
5162 2023-06-15 Jan Beulich <jbeulich@suse.com>
5163
5164 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
5165 vmovddup.
5166
5167 2023-06-15 Jan Beulich <jbeulich@suse.com>
5168
5169 * config/i386/constraints.md: Mention k and r for B.
5170
5171 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
5172 Andrew Pinski <apinski@marvell.com>
5173
5174 PR target/110136
5175 * config/loongarch/loongarch.md: Modify the register constraints for template
5176 "jumptable" and "indirect_jump" from "r" to "e".
5177
5178 2023-06-15 Xi Ruoyao <xry111@xry111.site>
5179
5180 * config/loongarch/loongarch-tune.h (loongarch_align): New
5181 struct.
5182 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
5183 array.
5184 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
5185 the array.
5186 * config/loongarch/loongarch.cc
5187 (loongarch_option_override_internal): Set the value of
5188 -falign-functions= if -falign-functions is enabled but no value
5189 is given. Likewise for -falign-labels=.
5190
5191 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5192
5193 PR middle-end/79173
5194 * internal-fn.def (UADDC, USUBC): New internal functions.
5195 * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
5196 (commutative_ternary_fn_p): Return true also for IFN_UADDC.
5197 * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
5198 * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
5199 match_uaddc_usubc): New functions.
5200 (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
5201 for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
5202 other optimizations have been successful for those.
5203 * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
5204 * fold-const-call.cc (fold_const_call): Likewise.
5205 * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
5206 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
5207 * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
5208 patterns.
5209 * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
5210 define_expand patterns.
5211 (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
5212 into NOTE_INSN_DELETED note rather than nop instruction.
5213 (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
5214 Likewise.
5215
5216 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5217
5218 PR middle-end/79173
5219 * config/i386/i386.md (subborrow<mode>): Add alternative with
5220 memory destination and add for it define_peephole2
5221 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
5222 destination in these patterns.
5223
5224 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5225
5226 PR middle-end/79173
5227 * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
5228 addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
5229 define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
5230 using memory destination in these patterns.
5231
5232 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5233
5234 * gimple-fold.cc (gimple_fold_call): Move handling of arg0
5235 as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
5236 and .{ADD,SUB,MUL}_OVERFLOW calls from here...
5237 * fold-const-call.cc (fold_const_call): ... here.
5238
5239 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
5240
5241 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
5242 Rename to <su>abd<mode>3.
5243 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
5244 to <su>abd<mode>3.
5245
5246 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
5247
5248 * doc/md.texi (sabd, uabd): Document them.
5249 * internal-fn.def (ABD): Use new optab.
5250 * optabs.def (sabd_optab, uabd_optab): New optabs,
5251 * tree-vect-patterns.cc (vect_recog_absolute_difference):
5252 Recognize the following idiom abs (a - b).
5253 (vect_recog_sad_pattern): Refactor to use
5254 vect_recog_absolute_difference.
5255 (vect_recog_abd_pattern): Use patterns found by
5256 vect_recog_absolute_difference to build a new ABD
5257 internal call.
5258
5259 2023-06-15 chenxiaolong <chenxl04200420@163.com>
5260
5261 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
5262 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
5263
5264 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5265
5266 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
5267 (expand_vec_perm_const_1): Add merge optmization.
5268
5269 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
5270
5271 PR target/110119
5272 * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
5273 (riscv_pass_by_reference): Return true for vector mode
5274
5275 2023-06-15 Pan Li <pan2.li@intel.com>
5276
5277 * config/riscv/autovec-opt.md: Align the predictor sytle.
5278 * config/riscv/autovec.md: Ditto.
5279
5280 2023-06-15 Pan Li <pan2.li@intel.com>
5281
5282 * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
5283 Take elen instead of scalar BITS_PER_WORD.
5284 (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
5285 instead of scaler BITS_PER_WORD.
5286
5287 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
5288
5289 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
5290
5291 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5292
5293 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
5294 Fix signed comparison warning in loop from npats to enelts.
5295
5296 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
5297
5298 * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
5299 to offloading compilation.
5300 * config/gcn/mkoffload.cc (main): Adjust.
5301 * config/nvptx/mkoffload.cc (main): Likewise.
5302 * doc/invoke.texi (foffload-options): Update example.
5303
5304 2023-06-14 liuhongt <hongtao.liu@intel.com>
5305
5306 PR target/110227
5307 * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
5308 for alternative 2 since there's no evex version for vpcmpeqd
5309 ymm, ymm, ymm.
5310
5311 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
5312
5313 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
5314
5315 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
5316
5317 * config/sh/divtab.cc: Remove.
5318
5319 2023-06-13 Jakub Jelinek <jakub@redhat.com>
5320
5321 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
5322 superfluous spaces around \t for vpcmpeqd.
5323
5324 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
5325
5326 * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
5327 clearing vectors with only a single element. Set CLEARED if the
5328 vector was initialized to zero.
5329
5330 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
5331
5332 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
5333 #include.
5334 (ENTRY): Undef.
5335 (TUPLE_ENTRY): Undef.
5336
5337 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5338
5339 * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
5340 (shuffle_generic_patterns): Ditto.
5341 (expand_vec_perm_const_1): Ditto.
5342
5343 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5344
5345 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
5346 (shuffle_decompress_patterns): Ditto.
5347
5348 2023-06-13 Richard Biener <rguenther@suse.de>
5349
5350 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
5351
5352 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
5353 Kito Cheng <kito.cheng@sifive.com>
5354
5355 * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
5356 warning flag if func is not builtin
5357 * config/riscv/riscv.cc
5358 (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
5359 (riscv_arg_has_vector): Determine whether the arg is vector type.
5360 (riscv_pass_in_vector_p): Check the vector type param is passed by value.
5361 (riscv_init_cumulative_args): The same as header.
5362 (riscv_get_arg_info): Add the checking.
5363 (riscv_function_value): Check the func return and set warning flag
5364 * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
5365 determine whether warning psabi or not.
5366
5367 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5368
5369 * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
5370 Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
5371 * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
5372 * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
5373 with TP_TPIDRURO.
5374 (arm_output_load_tpidr): Define.
5375 * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
5376 * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
5377 assembly.
5378 (reload_tp_hard): Likewise.
5379 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
5380 arm_tp_type.
5381 * doc/invoke.texi (Arm Options, mtp): Document new values.
5382
5383 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5384
5385 PR target/108779
5386 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
5387 AARCH64_TPIDRRO_EL0 value.
5388 * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
5389 * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
5390 tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
5391 * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
5392
5393 2023-06-13 Alexandre Oliva <oliva@adacore.com>
5394
5395 * range-op-float.cc (frange_nextafter): Drop inline.
5396 (frelop_early_resolve): Add static.
5397 (frange_float): Likewise.
5398
5399 2023-06-13 Richard Biener <rguenther@suse.de>
5400
5401 PR middle-end/110232
5402 * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
5403 to check whether the buffer covers the whole vector.
5404
5405 2023-06-13 Richard Biener <rguenther@suse.de>
5406
5407 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
5408 .MASK_LOAD and friends set the size of the access to unknown.
5409
5410 2023-06-13 Tejas Belagod <tbelagod@arm.com>
5411
5412 PR target/96339
5413 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
5414 calls that have a constant input predicate vector.
5415 (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
5416 (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
5417 (svlast_impl::vect_all_same): Check if all vector elements are equal.
5418
5419 2023-06-13 Andi Kleen <ak@linux.intel.com>
5420
5421 * config/i386/gcc-auto-profile: Regenerate.
5422
5423 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5424
5425 * config/riscv/vector-iterators.md: Fix requirement.
5426
5427 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5428
5429 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
5430 (shuffle_decompress_patterns): New function.
5431 (expand_vec_perm_const_1): Add decompress optimization.
5432
5433 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
5434
5435 PR rtl-optimization/101188
5436 * postreload.cc (reload_cse_move2add_invalidate): New function,
5437 extracted from...
5438 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
5439
5440 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5441
5442 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
5443 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
5444 and if maxv == 1, use constant element for duplicating into register.
5445
5446 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
5447
5448 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
5449 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
5450 (gimplify_adjust_omp_clauses): Change
5451 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
5452 GOMP_MAP_FORCE_PRESENT.
5453 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
5454 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
5455 to/from clauses with present modifier.
5456
5457 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5458
5459 PR tree-optimization/110205
5460 * range-op-float.cc (range_operator::fold_range): Add default FII
5461 fold routine.
5462 * range-op-mixed.h (class operator_gt): Add missing final overrides.
5463 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
5464 (operator_lshift ::update_bitmask): Add final override.
5465 (operator_rshift ::update_bitmask): Add final override.
5466 * range-op.h (range_operator::fold_range): Add FII prototype.
5467
5468 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5469
5470 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
5471 Use range_op_handler directly.
5472 * range-op.cc (range_op_handler::range_op_handler): Unsigned
5473 param instead of tree-code.
5474 (ptr_op_widen_plus_signed): Delete.
5475 (ptr_op_widen_plus_unsigned): Delete.
5476 (ptr_op_widen_mult_signed): Delete.
5477 (ptr_op_widen_mult_unsigned): Delete.
5478 (range_op_table::initialize_integral_ops): Add new opcodes.
5479 * range-op.h (range_op_handler): Use unsigned.
5480 (OP_WIDEN_MULT_SIGNED): New.
5481 (OP_WIDEN_MULT_UNSIGNED): New.
5482 (OP_WIDEN_PLUS_SIGNED): New.
5483 (OP_WIDEN_PLUS_UNSIGNED): New.
5484 (RANGE_OP_TABLE_SIZE): New.
5485 (range_op_table::operator []): Use unsigned.
5486 (range_op_table::set): Use unsigned.
5487 (m_range_tree): Make unsigned.
5488 (ptr_op_widen_mult_signed): Remove.
5489 (ptr_op_widen_mult_unsigned): Remove.
5490 (ptr_op_widen_plus_signed): Remove.
5491 (ptr_op_widen_plus_unsigned): Remove.
5492
5493 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5494
5495 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
5496 manually as there is no access to the default operator.
5497 (cfn_copysign::fold_range): Don't check for validity.
5498 (cfn_ubsan::fold_range): Ditto.
5499 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
5500 * range-op.cc (default_operator): New.
5501 (range_op_handler::range_op_handler): Use default_operator
5502 instead of NULL.
5503 (range_op_handler::operator bool): Move from header, compare
5504 against default operator.
5505 (range_op_handler::range_op): New.
5506 * range-op.h (range_op_handler::operator bool): Move.
5507
5508 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5509
5510 * range-op.cc (unified_table): Delete.
5511 (range_op_table operator_table): Instantiate.
5512 (range_op_table::range_op_table): Rename from unified_table.
5513 (range_op_handler::range_op_handler): Use range_op_table.
5514 * range-op.h (range_op_table::operator []): Inline.
5515 (range_op_table::set): Inline.
5516
5517 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5518
5519 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
5520 pass type.
5521 * gimple-range-op.cc (get_code): Rename from get_code_and_type
5522 and simplify.
5523 (gimple_range_op_handler::supported_p): No need for type.
5524 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
5525 (cfn_copysign::fold_range): Ditto.
5526 (cfn_ubsan::fold_range): Ditto.
5527 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
5528 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
5529 * range-op-float.cc (operator_plus::op1_range): Ditto.
5530 (operator_mult::op1_range): Ditto.
5531 (range_op_float_tests): Ditto.
5532 * range-op.cc (get_op_handler): Remove.
5533 (range_op_handler::set_op_handler): Remove.
5534 (operator_plus::op1_range): No need for type.
5535 (operator_minus::op1_range): Ditto.
5536 (operator_mult::op1_range): Ditto.
5537 (operator_exact_divide::op1_range): Ditto.
5538 (operator_cast::op1_range): Ditto.
5539 (perator_bitwise_not::fold_range): Ditto.
5540 (operator_negate::fold_range): Ditto.
5541 * range-op.h (range_op_handler::range_op_handler): Remove type param.
5542 (range_cast): No need for type.
5543 (range_op_table::operator[]): Check for enum_code >= 0.
5544 * tree-data-ref.cc (compute_distributive_range): No need for type.
5545 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
5546 * value-query.cc (range_query::get_tree_range): Ditto.
5547 * value-relation.cc (relation_oracle::validate_relation): Ditto.
5548 * vr-values.cc (range_of_var_in_loop): Ditto.
5549 (simplify_using_ranges::fold_cond_with_ops): Ditto.
5550
5551 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5552
5553 * range-op-mixed.h (operator_max): Remove final.
5554 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
5555 (pointer_table::pointer_table): Remove.
5556 (class hybrid_max_operator): New.
5557 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
5558 * range-op.cc (pointer_tree_table): Remove.
5559 (unified_table::unified_table): Comment out MAX_EXPR.
5560 (get_op_handler): Remove check of pointer table.
5561 * range-op.h (class pointer_table): Remove.
5562
5563 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5564
5565 * range-op-mixed.h (operator_min): Remove final.
5566 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
5567 (class hybrid_min_operator): New.
5568 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
5569 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
5570
5571 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5572
5573 * range-op-mixed.h (operator_bitwise_or): Remove final.
5574 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
5575 (class hybrid_or_operator): New.
5576 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
5577 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
5578
5579 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5580
5581 * range-op-mixed.h (operator_bitwise_and): Remove final.
5582 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
5583 (class hybrid_and_operator): New.
5584 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
5585 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
5586
5587 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5588
5589 * Makefile.in (OBJS): Add range-op-ptr.o.
5590 * range-op-mixed.h (update_known_bitmask): Move prototype here.
5591 (minus_op1_op2_relation_effect): Move prototype here.
5592 (wi_includes_zero_p): Move function to here.
5593 (wi_zero_p): Ditto.
5594 * range-op.cc (update_known_bitmask): Remove static.
5595 (wi_includes_zero_p): Move to header.
5596 (wi_zero_p): Move to header.
5597 (minus_op1_op2_relation_effect): Remove static.
5598 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
5599 (pointer_plus_operator): Ditto.
5600 (pointer_min_max_operator): Ditto.
5601 (pointer_and_operator): Ditto.
5602 (pointer_or_operator): Ditto.
5603 (pointer_table): Ditto.
5604 (range_op_table::initialize_pointer_ops): Ditto.
5605 * range-op-ptr.cc: New.
5606
5607 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5608
5609 * range-op-mixed.h (class operator_max): Move from...
5610 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
5611 (get_op_handler): Remove the integral table.
5612 (class operator_max): Move from here.
5613 (integral_table::integral_table): Delete.
5614 * range-op.h (class integral_table): Delete.
5615
5616 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5617
5618 * range-op-mixed.h (class operator_min): Move from...
5619 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
5620 (class operator_min): Move from here.
5621 (integral_table::integral_table): Remove MIN_EXPR.
5622
5623 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5624
5625 * range-op-mixed.h (class operator_bitwise_or): Move from...
5626 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
5627 (class operator_bitwise_or): Move from here.
5628 (integral_table::integral_table): Remove BIT_IOR_EXPR.
5629
5630 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5631
5632 * range-op-mixed.h (class operator_bitwise_and): Move from...
5633 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
5634 (get_op_handler): Check for a pointer table entry first.
5635 (class operator_bitwise_and): Move from here.
5636 (integral_table::integral_table): Remove BIT_AND_EXPR.
5637
5638 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5639
5640 * range-op-mixed.h (class operator_bitwise_xor): Move from...
5641 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
5642 (class operator_bitwise_xor): Move from here.
5643 (integral_table::integral_table): Remove BIT_XOR_EXPR.
5644 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
5645
5646 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5647
5648 * range-op-mixed.h (class operator_bitwise_not): Move from...
5649 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
5650 (class operator_bitwise_not): Move from here.
5651 (integral_table::integral_table): Remove BIT_NOT_EXPR.
5652 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
5653
5654 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5655
5656 * range-op-mixed.h (class operator_addr_expr): Move from...
5657 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
5658 (class operator_addr_expr): Move from here.
5659 (integral_table::integral_table): Remove ADDR_EXPR.
5660 (pointer_table::pointer_table): Remove ADDR_EXPR.
5661
5662 2023-06-12 Pan Li <pan2.li@intel.com>
5663
5664 * config/riscv/riscv-vector-builtins-types.def
5665 (vfloat16m1_t): Add type to lmul1 ops.
5666 (vfloat16m2_t): Likewise.
5667 (vfloat16m4_t): Likewise.
5668
5669 2023-06-12 Richard Biener <rguenther@suse.de>
5670
5671 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
5672 .MASK_STORE and friend set the size of the access to
5673 unknown.
5674
5675 2023-06-12 Tamar Christina <tamar.christina@arm.com>
5676
5677 * config.in: Regenerate.
5678 * configure: Regenerate.
5679 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
5680
5681 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5682
5683 * config/riscv/autovec-opt.md
5684 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
5685 (*<any_shiftrt:optab>trunc<mode>): Ditto.
5686 * config/riscv/autovec.md (<optab><mode>3): Change to
5687 define_insn_and_split.
5688 (v<optab><mode>3): Ditto.
5689 (trunc<mode><v_double_trunc>2): Ditto.
5690
5691 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5692
5693 * simplify-rtx.cc (simplify_const_unary_operation):
5694 Handle US_TRUNCATE, SS_TRUNCATE.
5695
5696 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
5697
5698 PR modula2/109952
5699 * doc/gm2.texi (Standard procedures): Fix Next link.
5700
5701 2023-06-12 Tamar Christina <tamar.christina@arm.com>
5702
5703 * config.in: Regenerate.
5704
5705 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
5706
5707 PR middle-end/110142
5708 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
5709 subtype to vect_widened_op_tree and remove subtype parameter, also
5710 remove superfluous overloaded function definition.
5711 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
5712 to call to vect_recog_widen_op_pattern.
5713 (vect_recog_widen_minus_pattern): Likewise.
5714
5715 2023-06-12 liuhongt <hongtao.liu@intel.com>
5716
5717 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
5718 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
5719 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
5720 (vec_unpacks_lo_<mode>): Ditto.
5721 (vec_unpacks_hi_<mode>): Ditto.
5722 (sse_movlhps_<mode>): New define_insn.
5723 (ssse3_palignr<mode>_perm): Extend to V_128H.
5724 (V_128H): New mode iterator.
5725 (ssepackPHmode): New mode attribute.
5726 (vunpck_extract_mode): Ditto.
5727 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
5728 (vpckfloat_temp_mode): Ditto.
5729 (vpckfloat_op_mode): Ditto.
5730 (vunpckfixt_mode): Extend to VxHF.
5731 (vunpckfixt_model): Ditto.
5732 (vunpckfixt_extract_mode): Ditto.
5733
5734 2023-06-12 Richard Biener <rguenther@suse.de>
5735
5736 PR middle-end/110200
5737 * genmatch.cc (expr::gen_transform): Put braces around
5738 the if arm for the (convert ...) short-cut.
5739
5740 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
5741
5742 PR target/109932
5743 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
5744 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
5745
5746 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
5747
5748 PR target/110011
5749 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
5750 floating constant itself for real_to_target call.
5751
5752 2023-06-12 Pan Li <pan2.li@intel.com>
5753
5754 * config/riscv/riscv-vector-builtins-types.def
5755 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
5756 (vfloat16mf2_t): Ditto.
5757 (vfloat16m1_t): Ditto.
5758 (vfloat16m2_t): Ditto.
5759 (vfloat16m4_t): Ditto.
5760
5761 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
5762
5763 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
5764 Do not require a stack frame when debugging is enabled for AIX.
5765
5766 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
5767
5768 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
5769 Remove attribute values.
5770 (insv_notbit): New post-reload insn.
5771 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
5772 (*insv.not-bit.0_split, *insv.not-bit.7_split)
5773 (*insv.xor-extract_split): Split to insv_notbit.
5774 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
5775 (*insv.xor-extract): Remove post-reload insns.
5776 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
5777 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
5778 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
5779 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
5780
5781 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
5782
5783 PR target/109907
5784 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
5785 (MSB, SIZE): New mode attributes.
5786 (any_shift): New code iterator.
5787 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
5788 (*lshr<mode>3_const_split): Add constraint alternative for
5789 the case of shift-offset = MSB. Ditch "length" attribute.
5790 (extzv<mode): New. replaces extzv. Adjust following patterns.
5791 Use avr_out_extr, avr_out_extr_not to print asm.
5792 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
5793 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
5794 * config/avr/constraints.md (C15, C23, C31, Yil): New
5795 * config/avr/predicates.md (reg_or_low_io_operand)
5796 (const7_operand, reg_or_low_io_operand)
5797 (const15_operand, const_0_to_15_operand)
5798 (const23_operand, const_0_to_23_operand)
5799 (const31_operand, const_0_to_31_operand): New.
5800 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
5801 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
5802 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
5803 MSB case to new insn constraint "r" for operands[1].
5804 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
5805 Handle these cases.
5806 (avr_rtx_costs_1): Adjust cost for a new pattern.
5807
5808 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5809
5810 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
5811 (vector_insn_info::parse_insn): Add rtx_insn parse.
5812 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
5813 (get_first_vsetvl): New function.
5814 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
5815 (pass_vsetvl::cleanup_insns): Remove it.
5816 (pass_vsetvl::ssa_post_optimization): New function.
5817 (has_no_uses): Ditto.
5818 (pass_vsetvl::propagate_avl): Remove it.
5819 (pass_vsetvl::df_post_optimization): New function.
5820 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
5821 * config/riscv/riscv-vsetvl.h: Adapt declaration.
5822
5823 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
5824
5825 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
5826 (ipcp_vr_lattice::print): Call dump method.
5827 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
5828 Value_Range.
5829 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
5830 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
5831 range.
5832 (initialize_node_lattices): Pass type when appropriate.
5833 (ipa_vr_operation_and_type_effects): Make type agnostic.
5834 (ipa_value_range_from_jfunc): Same.
5835 (propagate_vr_across_jump_function): Same.
5836 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
5837 (evaluate_properties_for_edge): Same.
5838 * ipa-prop.cc (ipa_vr::get_vrange): Same.
5839 (ipcp_update_vr): Same.
5840 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
5841 (ipa_range_set_and_normalize): Same.
5842
5843 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
5844
5845 PR target/109650
5846 PR target/92729
5847 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
5848 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
5849 (avr_pass_data_ifelse): New pass_data for it.
5850 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
5851 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
5852 (avr_out_cmp_ext): New functions.
5853 (compare_condtition): Make sure REG_CC dies in the branch insn.
5854 (avr_rtx_costs_1): Add computation of cbranch costs.
5855 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
5856 [ADJUST_LEN_CMP_SEXT]Handle them.
5857 (TARGET_CANONICALIZE_COMPARISON): New define.
5858 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
5859 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
5860 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
5861 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
5862 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
5863 (avr_out_cmp_zext): New Protos
5864 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
5865 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
5866 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
5867 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
5868 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
5869 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
5870 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
5871 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
5872 (adjust_len) [add_set_ZN, cmp_zext]: New.
5873 (QIPSI): New mode iterator.
5874 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
5875 (gelt): New code iterator.
5876 (gelt_eqne): New code attribute.
5877 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
5878 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
5879 (*cmpqi_sign_extend): Remove insns.
5880 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
5881 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
5882 * config/avr/predicates.md (scratch_or_d_register_operand): New.
5883 * config/avr/constraints.md (Yxx): New constraint.
5884
5885 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5886
5887 * config/riscv/autovec.md (select_vl<mode>): New pattern.
5888 * config/riscv/riscv-protos.h (expand_select_vl): New function.
5889 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
5890
5891 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5892
5893 * range-op-float.cc (foperator_mult_div_base): Delete.
5894 (foperator_mult_div_base::find_range): Make static local function.
5895 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
5896 (operator_mult::op1_range): Rename from foperator_mult.
5897 (operator_mult::op2_range): Ditto.
5898 (operator_mult::rv_fold): Ditto.
5899 (float_table::float_table): Remove MULT_EXPR.
5900 (class foperator_div): Inherit from range_operator.
5901 (float_table::float_table): Delete.
5902 * range-op-mixed.h (class operator_mult): Combined from integer
5903 and float files.
5904 * range-op.cc (float_tree_table): Delete.
5905 (op_mult): New object.
5906 (unified_table::unified_table): Add MULT_EXPR.
5907 (get_op_handler): Do not check float table any longer.
5908 (class cross_product_operator): Move to range-op-mixed.h.
5909 (class operator_mult): Move to range-op-mixed.h.
5910 (integral_table::integral_table): Remove MULT_EXPR.
5911 (pointer_table::pointer_table): Remove MULT_EXPR.
5912 * range-op.h (float_table): Remove.
5913
5914 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5915
5916 * range-op-float.cc (foperator_negate): Remove. Move prototypes
5917 to range-op-mixed.h
5918 (operator_negate::fold_range): Rename from foperator_negate.
5919 (operator_negate::op1_range): Ditto.
5920 (float_table::float_table): Remove NEGATE_EXPR.
5921 * range-op-mixed.h (class operator_negate): Combined from integer
5922 and float files.
5923 * range-op.cc (op_negate): New object.
5924 (unified_table::unified_table): Add NEGATE_EXPR.
5925 (class operator_negate): Move to range-op-mixed.h.
5926 (integral_table::integral_table): Remove NEGATE_EXPR.
5927 (pointer_table::pointer_table): Remove NEGATE_EXPR.
5928
5929 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5930
5931 * range-op-float.cc (foperator_minus): Remove. Move prototypes
5932 to range-op-mixed.h
5933 (operator_minus::fold_range): Rename from foperator_minus.
5934 (operator_minus::op1_range): Ditto.
5935 (operator_minus::op2_range): Ditto.
5936 (operator_minus::rv_fold): Ditto.
5937 (float_table::float_table): Remove MINUS_EXPR.
5938 * range-op-mixed.h (class operator_minus): Combined from integer
5939 and float files.
5940 * range-op.cc (op_minus): New object.
5941 (unified_table::unified_table): Add MINUS_EXPR.
5942 (class operator_minus): Move to range-op-mixed.h.
5943 (integral_table::integral_table): Remove MINUS_EXPR.
5944 (pointer_table::pointer_table): Remove MINUS_EXPR.
5945
5946 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5947
5948 * range-op-float.cc (foperator_abs): Remove. Move prototypes
5949 to range-op-mixed.h
5950 (operator_abs::fold_range): Rename from foperator_abs.
5951 (operator_abs::op1_range): Ditto.
5952 (float_table::float_table): Remove ABS_EXPR.
5953 * range-op-mixed.h (class operator_abs): Combined from integer
5954 and float files.
5955 * range-op.cc (op_abs): New object.
5956 (unified_table::unified_table): Add ABS_EXPR.
5957 (class operator_abs): Move to range-op-mixed.h.
5958 (integral_table::integral_table): Remove ABS_EXPR.
5959 (pointer_table::pointer_table): Remove ABS_EXPR.
5960
5961 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5962
5963 * range-op-float.cc (foperator_plus): Remove. Move prototypes
5964 to range-op-mixed.h
5965 (operator_plus::fold_range): Rename from foperator_plus.
5966 (operator_plus::op1_range): Ditto.
5967 (operator_plus::op2_range): Ditto.
5968 (operator_plus::rv_fold): Ditto.
5969 (float_table::float_table): Remove PLUS_EXPR.
5970 * range-op-mixed.h (class operator_plus): Combined from integer
5971 and float files.
5972 * range-op.cc (op_plus): New object.
5973 (unified_table::unified_table): Add PLUS_EXPR.
5974 (class operator_plus): Move to range-op-mixed.h.
5975 (integral_table::integral_table): Remove PLUS_EXPR.
5976 (pointer_table::pointer_table): Remove PLUS_EXPR.
5977
5978 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5979
5980 * range-op-mixed.h (class operator_cast): Combined from integer
5981 and float files.
5982 * range-op.cc (op_cast): New object.
5983 (unified_table::unified_table): Add op_cast
5984 (class operator_cast): Move to range-op-mixed.h.
5985 (integral_table::integral_table): Remove op_cast
5986 (pointer_table::pointer_table): Remove op_cast.
5987
5988 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5989
5990 * range-op-float.cc (operator_cst::fold_range): New.
5991 * range-op-mixed.h (class operator_cst): Move from integer file.
5992 * range-op.cc (op_cst): New object.
5993 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
5994 (class operator_cst): Move to range-op-mixed.h.
5995 (integral_table::integral_table): Remove op_cst.
5996 (pointer_table::pointer_table): Remove op_cst.
5997
5998 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5999
6000 * range-op-float.cc (foperator_identity): Remove. Move prototypes
6001 to range-op-mixed.h
6002 (operator_identity::fold_range): Rename from foperator_identity.
6003 (operator_identity::op1_range): Ditto.
6004 (float_table::float_table): Remove fop_identity.
6005 * range-op-mixed.h (class operator_identity): Combined from integer
6006 and float files.
6007 * range-op.cc (op_identity): New object.
6008 (unified_table::unified_table): Add op_identity.
6009 (class operator_identity): Move to range-op-mixed.h.
6010 (integral_table::integral_table): Remove identity.
6011 (pointer_table::pointer_table): Remove identity.
6012
6013 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6014
6015 * range-op-float.cc (foperator_ge): Remove. Move prototypes
6016 to range-op-mixed.h
6017 (operator_ge::fold_range): Rename from foperator_ge.
6018 (operator_ge::op1_range): Ditto.
6019 (float_table::float_table): Remove GE_EXPR.
6020 * range-op-mixed.h (class operator_ge): Combined from integer
6021 and float files.
6022 * range-op.cc (op_ge): New object.
6023 (unified_table::unified_table): Add GE_EXPR.
6024 (class operator_ge): Move to range-op-mixed.h.
6025 (ge_op1_op2_relation): Fold into
6026 operator_ge::op1_op2_relation.
6027 (integral_table::integral_table): Remove GE_EXPR.
6028 (pointer_table::pointer_table): Remove GE_EXPR.
6029 * range-op.h (ge_op1_op2_relation): Delete.
6030
6031 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6032
6033 * range-op-float.cc (foperator_gt): Remove. Move prototypes
6034 to range-op-mixed.h
6035 (operator_gt::fold_range): Rename from foperator_gt.
6036 (operator_gt::op1_range): Ditto.
6037 (float_table::float_table): Remove GT_EXPR.
6038 * range-op-mixed.h (class operator_gt): Combined from integer
6039 and float files.
6040 * range-op.cc (op_gt): New object.
6041 (unified_table::unified_table): Add GT_EXPR.
6042 (class operator_gt): Move to range-op-mixed.h.
6043 (gt_op1_op2_relation): Fold into
6044 operator_gt::op1_op2_relation.
6045 (integral_table::integral_table): Remove GT_EXPR.
6046 (pointer_table::pointer_table): Remove GT_EXPR.
6047 * range-op.h (gt_op1_op2_relation): Delete.
6048
6049 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6050
6051 * range-op-float.cc (foperator_le): Remove. Move prototypes
6052 to range-op-mixed.h
6053 (operator_le::fold_range): Rename from foperator_le.
6054 (operator_le::op1_range): Ditto.
6055 (float_table::float_table): Remove LE_EXPR.
6056 * range-op-mixed.h (class operator_le): Combined from integer
6057 and float files.
6058 * range-op.cc (op_le): New object.
6059 (unified_table::unified_table): Add LE_EXPR.
6060 (class operator_le): Move to range-op-mixed.h.
6061 (le_op1_op2_relation): Fold into
6062 operator_le::op1_op2_relation.
6063 (integral_table::integral_table): Remove LE_EXPR.
6064 (pointer_table::pointer_table): Remove LE_EXPR.
6065 * range-op.h (le_op1_op2_relation): Delete.
6066
6067 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6068
6069 * range-op-float.cc (foperator_lt): Remove. Move prototypes
6070 to range-op-mixed.h
6071 (operator_lt::fold_range): Rename from foperator_lt.
6072 (operator_lt::op1_range): Ditto.
6073 (float_table::float_table): Remove LT_EXPR.
6074 * range-op-mixed.h (class operator_lt): Combined from integer
6075 and float files.
6076 * range-op.cc (op_lt): New object.
6077 (unified_table::unified_table): Add LT_EXPR.
6078 (class operator_lt): Move to range-op-mixed.h.
6079 (lt_op1_op2_relation): Fold into
6080 operator_lt::op1_op2_relation.
6081 (integral_table::integral_table): Remove LT_EXPR.
6082 (pointer_table::pointer_table): Remove LT_EXPR.
6083 * range-op.h (lt_op1_op2_relation): Delete.
6084
6085 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6086
6087 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
6088 to range-op-mixed.h
6089 (operator_equal::fold_range): Rename from foperator_not_equal.
6090 (operator_equal::op1_range): Ditto.
6091 (float_table::float_table): Remove NE_EXPR.
6092 * range-op-mixed.h (class operator_not_equal): Combined from integer
6093 and float files.
6094 * range-op.cc (op_equal): New object.
6095 (unified_table::unified_table): Add NE_EXPR.
6096 (class operator_not_equal): Move to range-op-mixed.h.
6097 (not_equal_op1_op2_relation): Fold into
6098 operator_not_equal::op1_op2_relation.
6099 (integral_table::integral_table): Remove NE_EXPR.
6100 (pointer_table::pointer_table): Remove NE_EXPR.
6101 * range-op.h (not_equal_op1_op2_relation): Delete.
6102
6103 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6104
6105 * range-op-float.cc (foperator_equal): Remove. Move prototypes
6106 to range-op-mixed.h
6107 (operator_equal::fold_range): Rename from foperator_equal.
6108 (operator_equal::op1_range): Ditto.
6109 (float_table::float_table): Remove EQ_EXPR.
6110 * range-op-mixed.h (class operator_equal): Combined from integer
6111 and float files.
6112 * range-op.cc (op_equal): New object.
6113 (unified_table::unified_table): Add EQ_EXPR.
6114 (class operator_equal): Move to range-op-mixed.h.
6115 (equal_op1_op2_relation): Fold into
6116 operator_equal::op1_op2_relation.
6117 (integral_table::integral_table): Remove EQ_EXPR.
6118 (pointer_table::pointer_table): Remove EQ_EXPR.
6119 * range-op.h (equal_op1_op2_relation): Delete.
6120
6121 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6122
6123 * range-op-float.cc (class float_table): Move to header.
6124 (float_table::float_table): Move float only operators to...
6125 (range_op_table::initialize_float_ops): Here.
6126 * range-op-mixed.h: New.
6127 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
6128 to top of file.
6129 (float_tree_table): Moved from range-op-float.cc.
6130 (unified_tree_table): New.
6131 (unified_table::unified_table): New. Call initialize routines.
6132 (get_op_handler): Check unified table first.
6133 (range_op_handler::range_op_handler): Handle no type constructor.
6134 (integral_table::integral_table): Move integral only operators to...
6135 (range_op_table::initialize_integral_ops): Here.
6136 (pointer_table::pointer_table): Move pointer only operators to...
6137 (range_op_table::initialize_pointer_ops): Here.
6138 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
6139 (get_bool_state): Ditto.
6140 (empty_range_varying): Ditto.
6141 (relop_early_resolve): Ditto.
6142 (class range_op_table): Add new init methods for range types.
6143 (class integral_table): Move declaration to here.
6144 (class pointer_table): Move declaration to here.
6145 (class float_table): Move declaration to here.
6146
6147 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6148 Richard Sandiford <richard.sandiford@arm.com>
6149 Richard Biener <rguenther@suse.de>
6150
6151 * doc/md.texi: Add SELECT_VL support.
6152 * internal-fn.def (SELECT_VL): Ditto.
6153 * optabs.def (OPTAB_D): Ditto.
6154 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
6155 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
6156 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
6157 (vectorizable_store): Ditto.
6158 (vectorizable_load): Ditto.
6159 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
6160
6161 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
6162
6163 PR ipa/109886
6164 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
6165 type as well.
6166
6167 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
6168
6169 * range-op.cc (range_cast): Move to...
6170 * range-op.h (range_cast): Here and add generic a version.
6171
6172 2023-06-09 Marek Polacek <polacek@redhat.com>
6173
6174 PR c/39589
6175 PR c++/96868
6176 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
6177 warn about designated initializers in C only.
6178
6179 2023-06-09 Andrew Pinski <apinski@marvell.com>
6180
6181 PR tree-optimization/97711
6182 PR tree-optimization/110155
6183 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
6184 ((zero_one != 0) ? z <op> y : y): Likewise.
6185
6186 2023-06-09 Andrew Pinski <apinski@marvell.com>
6187
6188 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
6189 multiply rather than negation/bit_and.
6190
6191 2023-06-09 Andrew Pinski <apinski@marvell.com>
6192
6193 * match.pd (`X & -Y -> X * Y`): Allow for truncation
6194 and the same type for unsigned types.
6195
6196 2023-06-09 Andrew Pinski <apinski@marvell.com>
6197
6198 PR tree-optimization/110165
6199 PR tree-optimization/110166
6200 * match.pd (zero_one_valued_p): Don't accept
6201 signed 1-bit integers.
6202
6203 2023-06-09 Richard Biener <rguenther@suse.de>
6204
6205 * match.pd (two conversions in a row): Use element_precision
6206 to DTRT for VECTOR_TYPE.
6207
6208 2023-06-09 Pan Li <pan2.li@intel.com>
6209
6210 * config/riscv/riscv.md (enabled): Move to another place, and
6211 add fp_vector_disabled to the cond.
6212 (fp_vector_disabled): New attr defined for disabling fp.
6213 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
6214
6215 2023-06-09 Pan Li <pan2.li@intel.com>
6216
6217 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
6218 literal to int.
6219
6220 2023-06-09 liuhongt <hongtao.liu@intel.com>
6221
6222 PR target/110108
6223 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
6224 view_convert_expr mask to signed type when folding pblendvb
6225 builtins.
6226
6227 2023-06-09 liuhongt <hongtao.liu@intel.com>
6228
6229 PR target/110108
6230 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
6231 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
6232 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
6233 TARGET_64BIT.
6234 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
6235 real codename for __builtin_ia32_pabs{b,w,d}.
6236
6237 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6238
6239 * gimple-range-op.cc
6240 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
6241 (gimple_range_op_handler::maybe_builtin_call): Adjust.
6242 * gimple-range-op.h (operand1, operand2): Use m_operator.
6243 * range-op.cc (integral_table, pointer_table): Relocate.
6244 (get_op_handler): Rename from get_handler and handle all types.
6245 (range_op_handler::range_op_handler): Relocate.
6246 (range_op_handler::set_op_handler): Relocate and adjust.
6247 (range_op_handler::range_op_handler): Relocate.
6248 (dispatch_trio): New.
6249 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
6250 (range_op_handler::dispatch_kind): New.
6251 (range_op_handler::fold_range): Relocate and Use new dispatch value.
6252 (range_op_handler::op1_range): Ditto.
6253 (range_op_handler::op2_range): Ditto.
6254 (range_op_handler::lhs_op1_relation): Ditto.
6255 (range_op_handler::lhs_op2_relation): Ditto.
6256 (range_op_handler::op1_op2_relation): Ditto.
6257 (range_op_handler::set_op_handler): Use m_operator member.
6258 * range-op.h (range_op_handler::operator bool): Use m_operator.
6259 (range_op_handler::dispatch_kind): New.
6260 (range_op_handler::m_valid): Delete.
6261 (range_op_handler::m_int): Delete
6262 (range_op_handler::m_float): Delete
6263 (range_op_handler::m_operator): New.
6264 (range_op_table::operator[]): Relocate from .cc file.
6265 (range_op_table::set): Ditto.
6266 * value-range.h (class vrange): Make range_op_handler a friend.
6267
6268 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6269
6270 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
6271 (cfn_pass_through_arg1): Adjust using statemenmt.
6272 (cfn_signbit): Change base class, adjust using statement.
6273 (cfn_copysign): Ditto.
6274 (cfn_sqrt): Ditto.
6275 (cfn_sincos): Ditto.
6276 * range-op-float.cc (fold_range): Change class to range_operator.
6277 (rv_fold): Ditto.
6278 (op1_range): Ditto
6279 (op2_range): Ditto
6280 (lhs_op1_relation): Ditto.
6281 (lhs_op2_relation): Ditto.
6282 (op1_op2_relation): Ditto.
6283 (foperator_*): Ditto.
6284 (class float_table): New. Inherit from range_op_table.
6285 (floating_tree_table) Change to range_op_table pointer.
6286 (class floating_op_table): Delete.
6287 * range-op.cc (operator_equal): Adjust using statement.
6288 (operator_not_equal): Ditto.
6289 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
6290 (operator_minus, operator_cast): Ditto.
6291 (operator_bitwise_and, pointer_plus_operator): Ditto.
6292 (get_float_handle): Change return type.
6293 * range-op.h (range_operator_float): Delete. Relocate all methods
6294 into class range_operator.
6295 (range_op_handler::m_float): Change type to range_operator.
6296 (floating_op_table): Delete.
6297 (floating_tree_table): Change type.
6298
6299 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6300
6301 * range-op.cc (range_operator::fold_range): Call virtual routine.
6302 (range_operator::update_bitmask): New.
6303 (operator_equal::update_bitmask): New.
6304 (operator_not_equal::update_bitmask): New.
6305 (operator_lt::update_bitmask): New.
6306 (operator_le::update_bitmask): New.
6307 (operator_gt::update_bitmask): New.
6308 (operator_ge::update_bitmask): New.
6309 (operator_ge::update_bitmask): New.
6310 (operator_plus::update_bitmask): New.
6311 (operator_minus::update_bitmask): New.
6312 (operator_pointer_diff::update_bitmask): New.
6313 (operator_min::update_bitmask): New.
6314 (operator_max::update_bitmask): New.
6315 (operator_mult::update_bitmask): New.
6316 (operator_div:operator_div):New.
6317 (operator_div::update_bitmask): New.
6318 (operator_div::m_code): New member.
6319 (operator_exact_divide::operator_exact_divide): New constructor.
6320 (operator_lshift::update_bitmask): New.
6321 (operator_rshift::update_bitmask): New.
6322 (operator_bitwise_and::update_bitmask): New.
6323 (operator_bitwise_or::update_bitmask): New.
6324 (operator_bitwise_xor::update_bitmask): New.
6325 (operator_trunc_mod::update_bitmask): New.
6326 (op_ident, op_unknown, op_ptr_min_max): New.
6327 (op_nop, op_convert): Delete.
6328 (op_ssa, op_paren, op_obj_type): Delete.
6329 (op_realpart, op_imagpart): Delete.
6330 (op_ptr_min, op_ptr_max): Delete.
6331 (pointer_plus_operator:update_bitmask): New.
6332 (range_op_table::set): Do not use m_code.
6333 (integral_table::integral_table): Adjust to single instances.
6334 * range-op.h (range_operator::range_operator): Delete.
6335 (range_operator::m_code): Delete.
6336 (range_operator::update_bitmask): New.
6337
6338 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6339
6340 * range-op-float.cc (range_operator_float::fold_range): Return
6341 NAN of the result type.
6342
6343 2023-06-08 Jakub Jelinek <jakub@redhat.com>
6344
6345 * optabs.cc (expand_ffs): Add forward declaration.
6346 (expand_doubleword_clz): Rename to ...
6347 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
6348 handle also doubleword CTZ and FFS in addition to CLZ.
6349 (expand_unop): Adjust caller. Also call it for doubleword
6350 ctz_optab and ffs_optab.
6351
6352 2023-06-08 Jakub Jelinek <jakub@redhat.com>
6353
6354 PR target/110152
6355 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
6356 n_words == 2 recurse with mmx_ok as first argument rather than false.
6357
6358 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
6359
6360 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
6361 avoid sign extension/undefined behaviour when setting each bit.
6362
6363 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
6364 Uros Bizjak <ubizjak@gmail.com>
6365
6366 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
6367 Use new x86_stc instruction when the carry flag must be set.
6368 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
6369 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
6370 * config/i386/i386.h (TARGET_SLOW_STC): New define.
6371 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
6372 (x86_stc): New define_insn.
6373 (define_peephole2): Convert x86_stc into alternate implementation
6374 on pentium4 without -Os when a QImode register is available.
6375 (*x86_cmc): New define_insn.
6376 (define_peephole2): Convert *x86_cmc into alternate implementation
6377 on pentium4 without -Os when a QImode register is available.
6378 (*setccc): New define_insn_and_split for a no-op CCCmode move.
6379 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
6380 recognize (and eliminate) the carry flag being copied to itself.
6381 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
6382 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
6383
6384 2023-06-07 Andrew Pinski <apinski@marvell.com>
6385
6386 * match.pd: Fix comment for the
6387 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
6388
6389 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
6390 Jeff Law <jlaw@ventanamicro.com>
6391
6392 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
6393 (rotrsi3_sext): Expose generator.
6394 (rotlsi3 pattern): Hide generator.
6395 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
6396 declaration.
6397 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
6398 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
6399 (mulsi3, <optab>si3): Likewise.
6400 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
6401 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
6402 (<u>mulsidi3): Likewise.
6403 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
6404 (mulsi3_extended, <optab>si3_extended): Likewise.
6405 (splitter for shadd feeding divison): Update RTL pattern to account
6406 for changes in how 32 bit ops are expanded for TARGET_64BIT.
6407 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
6408
6409 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
6410
6411 PR target/109725
6412 * config/riscv/riscv.cc (riscv_print_operand): Calculate
6413 memmodel only when it is valid.
6414
6415 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
6416
6417 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
6418 for constant element of a vector.
6419
6420 2023-06-07 Jakub Jelinek <jakub@redhat.com>
6421
6422 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
6423 instead compare tree_nonzero_bits <= 1U rather than just == 1.
6424
6425 2023-06-07 Alex Coplan <alex.coplan@arm.com>
6426
6427 PR target/110132
6428 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
6429 New. Use it ...
6430 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
6431 names for builtins.
6432 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
6433 setup if in_lto_p, just like we do for SVE.
6434 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
6435 (__arm_st64b): Delete.
6436 (__arm_st64bv): Delete.
6437 (__arm_st64bv0): Delete.
6438
6439 2023-06-07 Alex Coplan <alex.coplan@arm.com>
6440
6441 PR target/110100
6442 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
6443 Use input operand for the destination address.
6444 * config/aarch64/aarch64.md (st64b): Fix constraint on address
6445 operand.
6446
6447 2023-06-07 Alex Coplan <alex.coplan@arm.com>
6448
6449 PR target/110100
6450 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
6451 Replace eight consecutive spaces with tabs.
6452 (aarch64_init_ls64_builtins): Likewise.
6453 (aarch64_expand_builtin_ls64): Likewise.
6454 * config/aarch64/aarch64.md (ld64b): Likewise.
6455 (st64b): Likewise.
6456 (st64bv): Likewise
6457 (st64bv0): Likewise.
6458
6459 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
6460
6461 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
6462 offset table pseudo to a general reg subset.
6463
6464 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6465
6466 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
6467 Rename to...
6468 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
6469 with RTL codes.
6470 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
6471 (aarch64_sqxtun2<mode>_le): Likewise.
6472 (aarch64_sqxtun2<mode>_be): Likewise.
6473 (aarch64_sqxtun2<mode>): Adjust for the above.
6474 (aarch64_sqmovun<mode>): New define_expand.
6475 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
6476 (half_mask): New mode attribute.
6477 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
6478 New predicate.
6479
6480 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6481
6482 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
6483 Reimplement as...
6484 (aarch64_addp<mode>_insn): ... This...
6485 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
6486 (aarch64_addp<mode>): New define_expand.
6487
6488 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6489
6490 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
6491 * config/riscv/riscv-v.cc
6492 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
6493 handling.
6494 (rvv_builder::single_step_npatterns_p): New function.
6495 (rvv_builder::npatterns_all_equal_p): Ditto.
6496 (const_vec_all_in_range_p): Support POLY handling.
6497 (gen_const_vector_dup): Ditto.
6498 (emit_vlmax_gather_insn): Add vrgatherei16.
6499 (emit_vlmax_masked_gather_mu_insn): Ditto.
6500 (expand_const_vector): Add VLA SLP const vector support.
6501 (expand_vec_perm): Support POLY.
6502 (struct expand_vec_perm_d): New struct.
6503 (shuffle_generic_patterns): New function.
6504 (expand_vec_perm_const_1): Ditto.
6505 (expand_vec_perm_const): Ditto.
6506 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
6507 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
6508
6509 2023-06-07 Andrew Pinski <apinski@marvell.com>
6510
6511 PR middle-end/110117
6512 * expr.cc (expand_single_bit_test): Handle
6513 const_int from expand_expr.
6514
6515 2023-06-07 Andrew Pinski <apinski@marvell.com>
6516
6517 * expr.cc (do_store_flag): Rearrange the
6518 TER code so that it overrides the nonzero bits
6519 info if we had `a & POW2`.
6520
6521 2023-06-07 Andrew Pinski <apinski@marvell.com>
6522
6523 PR tree-optimization/110134
6524 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
6525 types.
6526 (-A CMP CST -> B CMP (-CST)): Likewise.
6527
6528 2023-06-07 Andrew Pinski <apinski@marvell.com>
6529
6530 PR tree-optimization/89263
6531 PR tree-optimization/99069
6532 PR tree-optimization/20083
6533 PR tree-optimization/94898
6534 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
6535 one of the operands are constant.
6536
6537 2023-06-07 Andrew Pinski <apinski@marvell.com>
6538
6539 * match.pd (zero_one_valued_p): Match 0 integer constant
6540 too.
6541
6542 2023-06-07 Pan Li <pan2.li@intel.com>
6543
6544 * config/riscv/riscv-vector-builtins-types.def
6545 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
6546 (vfloat32m1_t): Ditto.
6547 (vfloat32m2_t): Ditto.
6548 (vfloat32m4_t): Ditto.
6549 (vfloat32m8_t): Ditto.
6550 (vint16mf4_t): Ditto.
6551 (vint16mf2_t): Ditto.
6552 (vint16m1_t): Ditto.
6553 (vint16m2_t): Ditto.
6554 (vint16m4_t): Ditto.
6555 (vint16m8_t): Ditto.
6556 (vuint16mf4_t): Ditto.
6557 (vuint16mf2_t): Ditto.
6558 (vuint16m1_t): Ditto.
6559 (vuint16m2_t): Ditto.
6560 (vuint16m4_t): Ditto.
6561 (vuint16m8_t): Ditto.
6562 (vint32mf2_t): Ditto.
6563 (vint32m1_t): Ditto.
6564 (vint32m2_t): Ditto.
6565 (vint32m4_t): Ditto.
6566 (vint32m8_t): Ditto.
6567 (vuint32mf2_t): Ditto.
6568 (vuint32m1_t): Ditto.
6569 (vuint32m2_t): Ditto.
6570 (vuint32m4_t): Ditto.
6571 (vuint32m8_t): Ditto.
6572
6573 2023-06-07 Jason Merrill <jason@redhat.com>
6574
6575 PR c++/58487
6576 * doc/invoke.texi: Document it.
6577
6578 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
6579
6580 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
6581 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
6582 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
6583 NOT (BITREVERSE x) as BITREVERSE (NOT x).
6584 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
6585 Optimize PARITY (BITREVERSE x) as PARITY x.
6586 Optimize BITREVERSE (BITREVERSE x) as x.
6587 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
6588 BITREVERSE of a constant integer at compile-time.
6589 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
6590 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
6591 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
6592 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
6593 Optimize COPYSIGN (x, ABS y) as ABS x.
6594 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
6595 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
6596 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
6597 arguments at compile-time.
6598
6599 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
6600
6601 * rtl.h (function_invariant_p): Change return type from int to bool.
6602 * reload1.cc (function_invariant_p): Change return type from
6603 int to bool and adjust function body accordingly.
6604
6605 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6606
6607 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
6608 (*single_<optab>mult_plus<mode>): Ditto.
6609 (*double_<optab>mult_plus<mode>): Ditto.
6610 (*sign_zero_extend_fma): Ditto.
6611 (*zero_sign_extend_fma): Ditto.
6612 * config/riscv/riscv-protos.h (enum insn_type): New enum.
6613
6614 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
6615 Tobias Burnus <tobias@codesourcery.com>
6616
6617 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
6618 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
6619 set.
6620 (omp_get_attachment): Handle map clauses with 'present' modifier.
6621 (omp_group_base): Likewise.
6622 (gimplify_scan_omp_clauses): Reorder present maps to come first.
6623 Set GOVD flags for present defaultmaps.
6624 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
6625 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
6626 clauses.
6627 (lower_omp_target): Handle map clauses with 'present' modifier.
6628 Handle 'to' and 'from' clauses with 'present'.
6629 * tree-core.h (enum omp_clause_defaultmap_kind): Add
6630 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
6631 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
6632 'from' clauses with 'present' modifier. Handle present defaultmap.
6633 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
6634
6635 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
6636
6637 * config/rs6000/genfusion.pl: Delete some dead code.
6638
6639 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
6640
6641 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
6642 split out from...
6643 (gen_ld_cmpi_p10): ... this.
6644
6645 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
6646
6647 PR target/106907
6648 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
6649 duplicate expression.
6650
6651 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6652
6653 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
6654 Handle unsigned reduc_plus_scal_ builtins.
6655 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
6656 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
6657 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
6658 __builtin_aarch64_reduc_plus_scal_v2di.
6659 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
6660
6661 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6662
6663 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
6664 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
6665 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
6666
6667 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6668
6669 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
6670 (aarch64_shrn<mode>_insn_be): Delete.
6671 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
6672 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
6673 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
6674 (aarch64_rshrn<mode>_insn_le): Delete.
6675 (aarch64_rshrn<mode>_insn_be): Delete.
6676 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
6677 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
6678
6679 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6680
6681 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
6682 Define prototype.
6683 (aarch64_pars_overlap_p): Likewise.
6684 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
6685 Express in terms of UNSPEC_ADDV.
6686 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
6687 (*aarch64_<su>addlv<mode>_reduction): Define.
6688 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
6689 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
6690 (aarch64_pars_overlap_p): Likewise.
6691 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
6692 (VQUADW): New mode attribute.
6693 (VWIDE2X_S): Likewise.
6694 (USADDLV): Delete.
6695 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
6696 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
6697
6698 2023-06-06 Richard Biener <rguenther@suse.de>
6699
6700 PR middle-end/110055
6701 * gimplify.cc (gimplify_target_expr): Do not emit
6702 CLOBBERs for variables which have static storage duration
6703 after gimplifying their initializers.
6704
6705 2023-06-06 Richard Biener <rguenther@suse.de>
6706
6707 PR tree-optimization/109143
6708 * tree-ssa-structalias.cc (solution_set_expand): Avoid
6709 one bitmap iteration and optimize bit range setting.
6710
6711 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
6712
6713 PR bootstrap/110120
6714 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
6715 XVECEXP, not XEXP, to access first item of a PARALLEL.
6716
6717 2023-06-06 Pan Li <pan2.li@intel.com>
6718
6719 * config/riscv/riscv-vector-builtins-types.def
6720 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
6721 (vfloat16mf2_t): Likewise.
6722 (vfloat16m1_t): Likewise.
6723 (vfloat16m2_t): Likewise.
6724 (vfloat16m4_t): Likewise.
6725 (vfloat16m8_t): Likewise.
6726 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
6727 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
6728
6729 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
6730
6731 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
6732 for cfi reg/mem machmode
6733 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
6734
6735 2023-06-06 Li Xu <xuli1@eswincomputing.com>
6736
6737 * config/riscv/vector-iterators.md:
6738 Fix 'REQUIREMENT' for machine_mode 'MODE'.
6739 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
6740 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
6741 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
6742
6743 2023-06-06 Pan Li <pan2.li@intel.com>
6744
6745 * config/riscv/vector-iterators.md: Fix typo in mode attr.
6746
6747 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
6748 Joel Hutton <joel.hutton@arm.com>
6749
6750 * doc/generic.texi: Remove old tree codes.
6751 * expr.cc (expand_expr_real_2): Remove old tree code cases.
6752 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
6753 * optabs-tree.cc (optab_for_tree_code): Likewise.
6754 (supportable_half_widening_operation): Likewise.
6755 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
6756 * tree-inline.cc (estimate_operator_cost): Likewise.
6757 (op_symbol_code): Likewise.
6758 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
6759 (vect_analyze_data_ref_accesses): Likewise.
6760 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
6761 * cfgexpand.cc (expand_debug_expr): Likewise.
6762 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
6763 (supportable_widening_operation): Likewise.
6764 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
6765 Likewise.
6766 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
6767 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
6768 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
6769 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
6770 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
6771 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
6772 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
6773 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
6774
6775 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
6776 Joel Hutton <joel.hutton@arm.com>
6777 Tamar Christina <tamar.christina@arm.com>
6778
6779 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
6780 this ...
6781 (vec_widen_<su>add_lo_<mode>): ... to this.
6782 (vec_widen_<su>addl_hi_<mode>): Rename this ...
6783 (vec_widen_<su>add_hi_<mode>): ... to this.
6784 (vec_widen_<su>subl_lo_<mode>): Rename this ...
6785 (vec_widen_<su>sub_lo_<mode>): ... to this.
6786 (vec_widen_<su>subl_hi_<mode>): Rename this ...
6787 (vec_widen_<su>sub_hi_<mode>): ...to this.
6788 * doc/generic.texi: Document new IFN codes.
6789 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
6790 (commutative_binary_fn_p): Add widen_plus fn's.
6791 (widening_fn_p): New function.
6792 (narrowing_fn_p): New function.
6793 (direct_internal_fn_optab): Change visibility.
6794 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
6795 internal_fn that expands into multiple internal_fns for widening.
6796 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
6797 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
6798 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
6799 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
6800 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
6801 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
6802 (lookup_hilo_internal_fn): Likewise.
6803 (widening_fn_p): Likewise.
6804 (Narrowing_fn_p): Likewise.
6805 * optabs.cc (commutative_optab_p): Add widening plus optabs.
6806 * optabs.def (OPTAB_D): Define widen add, sub optabs.
6807 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
6808 patterns with a hi/lo or even/odd split.
6809 (vect_recog_sad_pattern): Refactor to use new IFN codes.
6810 (vect_recog_widen_plus_pattern): Likewise.
6811 (vect_recog_widen_minus_pattern): Likewise.
6812 (vect_recog_average_pattern): Likewise.
6813 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
6814 _HILO IFNs.
6815 (supportable_widening_operation): Likewise.
6816 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
6817
6818 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
6819 Joel Hutton <joel.hutton@arm.com>
6820
6821 * tree-vect-patterns.cc: Add include for gimple-iterator.
6822 (vect_recog_widen_op_pattern): Refactor to use code_helper.
6823 (vect_gimple_build): New function.
6824 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
6825 code_helper.
6826 (vectorizable_call): Likewise.
6827 (vect_gen_widened_results_half): Likewise.
6828 (vect_create_vectorized_demotion_stmts): Likewise.
6829 (vect_create_vectorized_promotion_stmts): Likewise.
6830 (vect_create_half_widening_stmts): Likewise.
6831 (vectorizable_conversion): Likewise.
6832 (supportable_widening_operation): Likewise.
6833 (supportable_narrowing_operation): Likewise.
6834 * tree-vectorizer.h (supportable_widening_operation): Change
6835 prototype to use code_helper.
6836 (supportable_narrowing_operation): Likewise.
6837 (vect_gimple_build): New function prototype.
6838 * tree.h (code_helper::safe_as_tree_code): New function.
6839 (code_helper::safe_as_fn_code): New function.
6840
6841 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
6842
6843 * wide-int.cc (wi::bitreverse_large): New function implementing
6844 bit reversal of an integer.
6845 * wide-int.h (wi::bitreverse): New (template) function prototype.
6846 (bitreverse_large): Prototype helper function/implementation.
6847 (wi::bitreverse): New template wrapper around bitreverse_large.
6848
6849 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
6850
6851 * rtl.h (print_rtl_single): Change return type from int to void.
6852 (print_rtl_single_with_indent): Ditto.
6853 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
6854 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
6855 (rtx_writer::print_rtx_operand_code_0): Ditto.
6856 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
6857 (rtx_writer::print_rtx_operand_code_i): Ditto.
6858 (rtx_writer::print_rtx_operand_code_u): Ditto.
6859 (rtx_writer::print_rtx_operand): Ditto.
6860 (rtx_writer::print_rtx): Ditto.
6861 (rtx_writer::finish_directive): Ditto.
6862 (print_rtl_single): Change return type from int to void
6863 and adjust function body accordingly.
6864 (rtx_writer::print_rtl_single_with_indent): Ditto.
6865
6866 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
6867
6868 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
6869 (reg_class_subset_p): Ditto.
6870 * reginfo.cc (reg_classes_intersect_p): Ditto.
6871 (reg_class_subset_p): Ditto.
6872
6873 2023-06-05 Pan Li <pan2.li@intel.com>
6874
6875 * config/riscv/riscv-vector-builtins-types.def
6876 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
6877 (vfloat32m1_t): Ditto.
6878 (vfloat32m2_t): Ditto.
6879 (vfloat32m4_t): Ditto.
6880 (vfloat32m8_t): Ditto.
6881 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
6882 (vint16mf2_t): Ditto.
6883 (vint16m1_t): Ditto.
6884 (vint16m2_t): Ditto.
6885 (vint16m4_t): Ditto.
6886 (vint16m8_t): Ditto.
6887 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
6888 (vuint16mf2_t): Ditto.
6889 (vuint16m1_t): Ditto.
6890 (vuint16m2_t): Ditto.
6891 (vuint16m4_t): Ditto.
6892 (vuint16m8_t): Ditto.
6893 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
6894 (vint32m1_t): Ditto.
6895 (vint32m2_t): Ditto.
6896 (vint32m4_t): Ditto.
6897 (vint32m8_t): Ditto.
6898 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
6899 (vuint32m1_t): Ditto.
6900 (vuint32m2_t): Ditto.
6901 (vuint32m4_t): Ditto.
6902 (vuint32m8_t): Ditto.
6903 * config/riscv/vector-iterators.md: Add FP=16 support for V,
6904 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
6905
6906 2023-06-05 Andrew Pinski <apinski@marvell.com>
6907
6908 PR bootstrap/110085
6909 * Makefile.in (clean): Remove the removing of
6910 MULTILIB_DIR/MULTILIB_OPTIONS directories.
6911
6912 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
6913
6914 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
6915 prototype.
6916 * config/mips/mips.cc (speculation_barrier_libfunc): New static
6917 variable.
6918 (mips_init_libfuncs): Initialize it.
6919 (mips_emit_speculation_barrier): New function.
6920 * config/mips/mips.md (speculation_barrier): Call
6921 mips_emit_speculation_barrier.
6922
6923 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6924
6925 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
6926 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
6927 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
6928 (rvv_builder::get_merged_repeating_sequence): Ditto.
6929 (rvv_builder::get_merge_scalar_mask): Ditto.
6930 (emit_scalar_move_insn): Ditto.
6931 (emit_vlmax_integer_move_insn): Ditto.
6932 (emit_nonvlmax_integer_move_insn): Ditto.
6933 (emit_vlmax_gather_insn): Ditto.
6934 (emit_vlmax_masked_gather_mu_insn): Ditto.
6935 (get_repeating_sequence_dup_machine_mode): Ditto.
6936
6937 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6938
6939 * config/riscv/autovec.md: Split arguments.
6940 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
6941 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
6942
6943 2023-06-04 Andrew Pinski <apinski@marvell.com>
6944
6945 * expr.cc (do_store_flag): Improve for single bit testing
6946 not against zero but against that single bit.
6947
6948 2023-06-04 Andrew Pinski <apinski@marvell.com>
6949
6950 * expr.cc (do_store_flag): Extend the one bit checking case
6951 to handle the case where we don't have an and but rather still
6952 one bit is known to be non-zero.
6953
6954 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
6955
6956 * config/h8300/constraints.md (Zz): Make this a normal
6957 constraint.
6958 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
6959 * config/h8300/logical.md (H8/SX bit patterns): Remove.
6960
6961 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6962
6963 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
6964 New insn_and_split patterns.
6965
6966 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6967
6968 PR target/110109
6969 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
6970 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
6971 (@vlmul_extx4<mode>): Ditto.
6972 (@vlmul_extx8<mode>): Ditto.
6973 (@vlmul_extx16<mode>): Ditto.
6974 (@vlmul_extx32<mode>): Ditto.
6975 (@vlmul_extx64<mode>): Ditto.
6976 (*vlmul_extx2<mode>): Ditto.
6977 (*vlmul_extx4<mode>): Ditto.
6978 (*vlmul_extx8<mode>): Ditto.
6979 (*vlmul_extx16<mode>): Ditto.
6980 (*vlmul_extx32<mode>): Ditto.
6981 (*vlmul_extx64<mode>): Ditto.
6982
6983 2023-06-04 Pan Li <pan2.li@intel.com>
6984
6985 * config/riscv/riscv-vector-builtins-types.def
6986 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
6987 (vfloat32m1_t): Likewise.
6988 (vfloat32m2_t): Likewise.
6989 (vfloat32m4_t): Likewise.
6990 (vfloat32m8_t): Likewise.
6991 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
6992 * config/riscv/vector-iterators.md: Add single to half machine
6993 mode conversion.
6994
6995 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6996
6997 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
6998 (*n<optab><mode>): Ditto.
6999 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
7000 (*n<optab><mode>): Ditto.
7001 * config/riscv/vector.md: Ditto.
7002
7003 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
7004
7005 PR target/110083
7006 * config/i386/i386-features.cc (scalar_chain::convert_compare):
7007 Update or delete REG_EQUAL notes, converting CONST_INT and
7008 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
7009
7010 2023-06-04 Jason Merrill <jason@redhat.com>
7011
7012 PR c++/97720
7013 * tree-eh.cc (lower_resx): Pass the exception pointer to the
7014 failure_decl.
7015 * except.h: Tweak comment.
7016
7017 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
7018
7019 * postreload.cc (move2add_use_add2_insn): Handle
7020 trivial single_sets. Rename variable PAT to SET.
7021 (move2add_use_add3_insn, reload_cse_move2add): Similar.
7022
7023 2023-06-04 Pan Li <pan2.li@intel.com>
7024
7025 * config/riscv/riscv-vector-builtins-types.def
7026 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
7027 (vfloat16mf2_t): Likewise.
7028 (vfloat16m1_t): Likewise.
7029 (vfloat16m2_t): Likewise.
7030 (vfloat16m4_t): Likewise.
7031 (vfloat16m8_t): Likewise.
7032 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
7033 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
7034 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
7035 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
7036 vlmul and ratio.
7037
7038 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
7039
7040 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
7041 correct offset.
7042
7043 2023-06-03 Die Li <lidie@eswincomputing.com>
7044
7045 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
7046
7047 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7048
7049 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
7050
7051 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7052
7053 * config/riscv/vector.md: Add vector-opt.md.
7054 * config/riscv/autovec-opt.md: New file.
7055
7056 2023-06-03 liuhongt <hongtao.liu@intel.com>
7057
7058 PR tree-optimization/110067
7059 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
7060 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
7061
7062 2023-06-03 liuhongt <hongtao.liu@intel.com>
7063
7064 PR target/92658
7065 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
7066 (truncv2si<mode>2): Ditto.
7067
7068 2023-06-02 Andrew Pinski <apinski@marvell.com>
7069
7070 PR rtl-optimization/102733
7071 * dse.cc (store_info): Add addrspace field.
7072 (record_store): Record the address space
7073 and check to make sure they are the same.
7074
7075 2023-06-02 Andrew Pinski <apinski@marvell.com>
7076
7077 PR rtl-optimization/110042
7078 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
7079 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
7080
7081 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
7082
7083 PR target/110044
7084 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
7085 Make sure that we do not have a cap on field alignment before altering
7086 the struct layout based on the type alignment of the first entry.
7087
7088 2023-06-02 David Faust <david.faust@oracle.com>
7089
7090 PR debug/110073
7091 * btfout.cc (btf_absolute_func_id): New function.
7092 (btf_asm_func_type): Call it here. Change index parameter from
7093 size_t to ctf_id_t. Use PRIu64 formatter.
7094
7095 2023-06-02 Alex Coplan <alex.coplan@arm.com>
7096
7097 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
7098 (btf_asm_datasec_type): Likewise.
7099
7100 2023-06-02 Carl Love <cel@us.ibm.com>
7101
7102 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
7103 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
7104
7105 2023-06-02 Jason Merrill <jason@redhat.com>
7106
7107 PR c++/110070
7108 PR c++/105838
7109 * tree.h (DECL_MERGEABLE): New.
7110 * tree-core.h (struct tree_decl_common): Mention it.
7111 * gimplify.cc (gimplify_init_constructor): Check it.
7112 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
7113 * varasm.cc (categorize_decl_for_section): Likewise.
7114
7115 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
7116
7117 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
7118 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
7119 (stack_regs_mentioned_p): Change return type from int to bool
7120 and adjust function body accordingly.
7121 (stack_regs_mentioned): Ditto.
7122 (check_asm_stack_operands): Ditto. Change "malformed_asm"
7123 variable to bool.
7124 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
7125 (swap_rtx_condition_1): Change return type from int to bool
7126 and adjust function body accordingly. Change "r" variable to bool.
7127 (swap_rtx_condition): Change return type from int to bool
7128 and adjust function body accordingly.
7129 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
7130 (subst_stack_regs): Ditto.
7131 (convert_regs_entry): Change return type from int to bool and adjust
7132 function body accordingly. Change "inserted" variable to bool.
7133 (convert_regs_1): Recode handling of control_flow_insn_deleted.
7134 (convert_regs_2): Recode handling of cfg_altered.
7135 (convert_regs): Ditto. Change "inserted" variable to bool.
7136
7137 2023-06-02 Jason Merrill <jason@redhat.com>
7138
7139 PR c++/95226
7140 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
7141 (initializer_constant_valid_p_1): Compare float precision.
7142
7143 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
7144
7145 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
7146 semantics.
7147
7148 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7149
7150 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
7151 (vect_set_loop_condition_partial_vectors): Ditto.
7152
7153 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
7154
7155 PR target/110088
7156 * config/avr/avr.md: Add an RTL peephole to optimize operations on
7157 non-LD_REGS after a move from LD_REGS.
7158 (piaop): New code iterator.
7159
7160 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
7161
7162 PR testsuite/66005
7163 * doc/install.texi: Document (optional) Perl usage for parallel
7164 testing of libgomp.
7165
7166 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
7167
7168 PR bootstrap/82856
7169 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
7170 later)".
7171
7172 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7173 KuanLin Chen <best124612@gmail.com>
7174
7175 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
7176 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
7177
7178 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7179
7180 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
7181
7182 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7183
7184 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
7185
7186 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7187
7188 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
7189 __RISCV_ prefix.
7190 (DEF_RVV_FRM_ENUM): Ditto.
7191
7192 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7193
7194 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
7195 intrinsic API expander
7196 * config/riscv/vector.md
7197 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
7198 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
7199 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
7200
7201 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7202
7203 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
7204 * config/riscv/predicates.md (vector_perm_operand): New predicate.
7205 * config/riscv/riscv-protos.h (enum insn_type): New enum.
7206 (expand_vec_perm): New function.
7207 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
7208 (gen_const_vector_dup): Ditto.
7209 (emit_vlmax_gather_insn): Ditto.
7210 (emit_vlmax_masked_gather_mu_insn): Ditto.
7211 (expand_vec_perm): Ditto.
7212
7213 2023-06-01 Jason Merrill <jason@redhat.com>
7214
7215 * doc/invoke.texi (-Wpedantic): Improve clarity.
7216
7217 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
7218
7219 * rtl.h (exp_equiv_p): Change return type from int to bool.
7220 * cse.cc (mention_regs): Change return type from int to bool
7221 and adjust function body accordingly.
7222 (exp_equiv_p): Ditto.
7223 (insert_regs): Ditto. Change "modified" function argument to bool
7224 and update usage accordingly.
7225 (record_jump_cond): Remove always zero "reversed_nonequality"
7226 function argument and update usage accordingly.
7227 (fold_rtx): Change "changed" variable to bool.
7228 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
7229 (is_dead_reg): Change return type from int to bool.
7230
7231 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7232
7233 * config/xtensa/xtensa.md (adddi3, subdi3):
7234 New RTL generation patterns implemented according to the instruc-
7235 tion idioms described in the Xtensa ISA reference manual (p. 600).
7236
7237 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
7238 Uros Bizjak <ubizjak@gmail.com>
7239
7240 PR target/109973
7241 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
7242 CODE_for_sse4_1_ptestzv2di.
7243 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
7244 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
7245 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
7246 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
7247 when expanding UNSPEC_PTEST to compare against zero.
7248 * config/i386/i386-features.cc (scalar_chain::convert_compare):
7249 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
7250 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
7251 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
7252 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
7253 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
7254 check for suitable matching modes for the UNSPEC_PTEST pattern.
7255 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
7256 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
7257 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
7258 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
7259 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
7260 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
7261 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
7262 current behavior.
7263 (*ptest<mode>_and): Specify CCZ to only perform this optimization
7264 when only the Z flag is required.
7265
7266 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
7267
7268 PR target/109954
7269 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
7270
7271 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7272
7273 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
7274 Add =r,m and =r,m alternatives.
7275 (load_pair<DREG:mode><DREG2:mode>): Likewise.
7276 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
7277
7278 2023-06-01 Pan Li <pan2.li@intel.com>
7279
7280 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
7281 and zvfh.
7282 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
7283 (main): Disable FP16 tuple.
7284 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
7285 (TARGET_VECTOR_ELEN_FP_16): Ditto.
7286 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
7287 Add FP16.
7288 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
7289 (vfloat16mf2_t): Ditto.
7290 (vfloat16m1_t): Ditto.
7291 (vfloat16m2_t): Ditto.
7292 (vfloat16m4_t): Ditto.
7293 (vfloat16m8_t): Ditto.
7294 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
7295 New macro.
7296 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
7297 machine mode based on TARGET_VECTOR_ELEN_FP_16.
7298
7299 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7300
7301 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
7302 (DEF_RVV_FRM_ENUM): New macro.
7303 (handle_pragma_vector): Add FRM enum
7304 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
7305 (RNE): Ditto.
7306 (RTZ): Ditto.
7307 (RDN): Ditto.
7308 (RUP): Ditto.
7309 (RMM): Ditto.
7310
7311 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
7312 Richard Sandiford <richard.sandiford@arm.com>
7313
7314 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
7315 Update call to wi::bswap.
7316 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
7317 Update call to wi::bswap.
7318 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
7319 Update calls to wi::bswap.
7320 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
7321 (wi::bswap_large): New function, with revised API.
7322 * wide-int.h (wi::bswap): New (template) function prototype.
7323 (wide_int_storage::bswap): Remove method.
7324 (sext_large, zext_large): Consistent indentation/line wrapping.
7325 (bswap_large): Prototype helper function containing implementation.
7326 (wi::bswap): New template wrapper around bswap_large.
7327
7328 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7329
7330 PR target/99195
7331 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
7332 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
7333 (usdot_prod<vsi2qi>): Rename to...
7334 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
7335 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
7336 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
7337 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
7338 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
7339 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
7340 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
7341 ... This.
7342
7343 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7344
7345 PR target/99195
7346 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
7347 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
7348 (aarch64_sq<r>dmulh_n<mode>): Rename to...
7349 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
7350 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
7351 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
7352 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
7353 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
7354 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
7355 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
7356 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
7357 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
7358 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
7359 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
7360
7361 2023-05-31 David Faust <david.faust@oracle.com>
7362
7363 * btfout.cc (btf_kind_names): New.
7364 (btf_kind_name): New.
7365 (btf_absolute_var_id): New utility function.
7366 (btf_relative_var_id): Likewise.
7367 (btf_relative_func_id): Likewise.
7368 (btf_absolute_datasec_id): Likewise.
7369 (btf_asm_type_ref): New.
7370 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
7371 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
7372 (btf_asm_varent): Likewise.
7373 (btf_asm_func_arg): Likewise.
7374 (btf_asm_datasec_entry): Likewise.
7375 (btf_asm_datasec_type): Likewise.
7376 (btf_asm_func_type): Likewise. Add index parameter.
7377 (btf_asm_enum_const): Likewise.
7378 (btf_asm_sou_member): Likewise.
7379 (output_btf_vars): Update btf_asm_* call accordingly.
7380 (output_asm_btf_sou_fields): Likewise.
7381 (output_asm_btf_enum_list): Likewise.
7382 (output_asm_btf_func_args_list): Likewise.
7383 (output_asm_btf_vlen_bytes): Likewise.
7384 (output_btf_func_types): Add ctf_container_ref parameter.
7385 Pass it to btf_asm_func_type.
7386 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
7387 (btf_output): Update output_btf_func_types call similarly.
7388
7389 2023-05-31 David Faust <david.faust@oracle.com>
7390
7391 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
7392 and BTF_KIND_FWD which do not use the size/type field at all.
7393
7394 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
7395
7396 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
7397 (active_insn_p): Ditto.
7398 (in_sequence_p): Ditto.
7399 (unshare_all_rtl): Change return type from int to void.
7400 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
7401 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
7402 and adjust function body accordingly.
7403 (mem_expr_equal_p): Ditto.
7404 (unshare_all_rtl): Change return type from int to void
7405 and adjust function body accordingly.
7406 (verify_rtx_sharing): Remove unneeded return.
7407 (active_insn_p): Change return type from int to bool
7408 and adjust function body accordingly.
7409 (in_sequence_p): Ditto.
7410
7411 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
7412
7413 * rtl.h (true_dependence): Change return type from int to bool.
7414 (canon_true_dependence): Ditto.
7415 (read_dependence): Ditto.
7416 (anti_dependence): Ditto.
7417 (canon_anti_dependence): Ditto.
7418 (output_dependence): Ditto.
7419 (canon_output_dependence): Ditto.
7420 (may_alias_p): Ditto.
7421 * alias.h (alias_sets_conflict_p): Ditto.
7422 (alias_sets_must_conflict_p): Ditto.
7423 (objects_must_conflict_p): Ditto.
7424 (nonoverlapping_memrefs_p): Ditto.
7425 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
7426 (record_set): Ditto.
7427 (base_alias_check): Ditto.
7428 (find_base_value): Ditto.
7429 (mems_in_disjoint_alias_sets_p): Ditto.
7430 (get_alias_set_entry): Ditto.
7431 (decl_for_component_ref): Ditto.
7432 (write_dependence_p): Ditto.
7433 (memory_modified_1): Ditto.
7434 (mems_in_disjoint_alias_set_p): Change return type from int to bool
7435 and adjust function body accordingly.
7436 (alias_sets_conflict_p): Ditto.
7437 (alias_sets_must_conflict_p): Ditto.
7438 (objects_must_conflict_p): Ditto.
7439 (rtx_equal_for_memref_p): Ditto.
7440 (base_alias_check): Ditto.
7441 (read_dependence): Ditto.
7442 (nonoverlapping_memrefs_p): Ditto.
7443 (true_dependence_1): Ditto.
7444 (true_dependence): Ditto.
7445 (canon_true_dependence): Ditto.
7446 (write_dependence_p): Ditto.
7447 (anti_dependence): Ditto.
7448 (canon_anti_dependence): Ditto.
7449 (output_dependence): Ditto.
7450 (canon_output_dependence): Ditto.
7451 (may_alias_p): Ditto.
7452 (init_alias_analysis): Change "changed" variable to bool.
7453
7454 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7455
7456 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
7457 expand into define_insn_and_split.
7458
7459 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7460
7461 * config/riscv/vector.md: Remove FRM.
7462
7463 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7464
7465 * config/riscv/vector.md: Remove FRM.
7466
7467 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7468
7469 * config/riscv/vector.md: Remove FRM.
7470
7471 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
7472
7473 PR target/110039
7474 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
7475 pattern.
7476
7477 2023-05-31 Richard Biener <rguenther@suse.de>
7478
7479 PR ipa/109983
7480 PR tree-optimization/109143
7481 * tree-ssa-structalias.cc (struct topo_info): Remove.
7482 (init_topo_info): Likewise.
7483 (free_topo_info): Likewise.
7484 (compute_topo_order): Simplify API, put the component
7485 with ESCAPED last so it's processed first.
7486 (topo_visit): Adjust.
7487 (solve_graph): Likewise.
7488
7489 2023-05-31 Richard Biener <rguenther@suse.de>
7490
7491 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
7492 New.
7493 (add_graph_edge): Count redundant edges we avoid to create.
7494 (dump_sa_stats): Dump them.
7495 (ipa_pta_execute): Do not dump generating constraints when
7496 we are not dumping them.
7497
7498 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7499
7500 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
7501 output template to avoid explicit switch on which_alternative.
7502 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
7503 (and<mode>3): Likewise.
7504 (ior<mode>3): Likewise.
7505 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
7506
7507 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7508
7509 * config/xtensa/predicates.md (xtensa_bit_join_operator):
7510 New predicate.
7511 * config/xtensa/xtensa.md (ior_op): Remove.
7512 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
7513 insn_and_split pattern of the same name to express and capture
7514 the bit-combining operation with both sides swapped.
7515 In addition, replace use of code iterator with new operator
7516 predicate.
7517 (*shlrd_const, *shlrd_per_byte):
7518 Likewise regarding the code iterator.
7519
7520 2023-05-31 Cui, Lili <lili.cui@intel.com>
7521
7522 PR tree-optimization/110038
7523 * params.opt: Add a limit on tree-reassoc-width.
7524 * tree-ssa-reassoc.cc
7525 (rewrite_expr_tree_parallel): Add width limit.
7526
7527 2023-05-31 Pan Li <pan2.li@intel.com>
7528
7529 * common/config/riscv/riscv-common.cc:
7530 (riscv_implied_info): Add zvfh item.
7531 (riscv_ext_version_table): Ditto.
7532 (riscv_ext_flag_table): Ditto.
7533 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
7534 (TARGET_ZVFH): Ditto.
7535
7536 2023-05-30 liuhongt <hongtao.liu@intel.com>
7537
7538 PR tree-optimization/108804
7539 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
7540 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
7541 Add new parameter narrow_src_p.
7542 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
7543 vectorization by truncating to lower precision.
7544 * tree-vectorizer.h (vect_get_range_info): New declare.
7545
7546 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
7547
7548 * lra-int.h (lra_update_sp_offset): Add the prototype.
7549 * lra.cc (setup_sp_offset): Change the return type. Use
7550 lra_update_sp_offset.
7551 * lra-eliminations.cc (lra_update_sp_offset): New function.
7552 (lra_process_new_insns): Push the current insn to reprocess if the
7553 input reload changes sp offset.
7554
7555 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
7556
7557 PR target/110041
7558 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
7559 Fix misleading identation.
7560
7561 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
7562
7563 * rtl.h (comparison_dominates_p): Change return type from int to bool.
7564 (condjump_p): Ditto.
7565 (any_condjump_p): Ditto.
7566 (any_uncondjump_p): Ditto.
7567 (simplejump_p): Ditto.
7568 (returnjump_p): Ditto.
7569 (eh_returnjump_p): Ditto.
7570 (onlyjump_p): Ditto.
7571 (invert_jump_1): Ditto.
7572 (invert_jump): Ditto.
7573 (rtx_renumbered_equal_p): Ditto.
7574 (redirect_jump_1): Ditto.
7575 (redirect_jump): Ditto.
7576 (condjump_in_parallel_p): Ditto.
7577 * jump.cc (invert_exp_1): Adjust forward declaration.
7578 (comparison_dominates_p): Change return type from int to bool
7579 and adjust function body accordingly.
7580 (simplejump_p): Ditto.
7581 (condjump_p): Ditto.
7582 (condjump_in_parallel_p): Ditto.
7583 (any_uncondjump_p): Ditto.
7584 (any_condjump_p): Ditto.
7585 (returnjump_p): Ditto.
7586 (eh_returnjump_p): Ditto.
7587 (onlyjump_p): Ditto.
7588 (redirect_jump_1): Ditto.
7589 (redirect_jump): Ditto.
7590 (invert_exp_1): Ditto.
7591 (invert_jump_1): Ditto.
7592 (invert_jump): Ditto.
7593 (rtx_renumbered_equal_p): Ditto.
7594
7595 2023-05-30 Andrew Pinski <apinski@marvell.com>
7596
7597 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
7598 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
7599 Add ne as a possible cmp.
7600 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
7601
7602 2023-05-30 Andrew Pinski <apinski@marvell.com>
7603
7604 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
7605 pattern.
7606
7607 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
7608
7609 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
7610 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
7611 (and (extend X) C) as (zero_extend (and X C)), to also optimize
7612 modes wider than HOST_WIDE_INT.
7613
7614 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
7615
7616 PR target/107172
7617 * simplify-rtx.cc (simplify_const_relational_operation): Return
7618 early if we have a MODE_CC comparison that isn't a COMPARE against
7619 const0_rtx.
7620
7621 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
7622
7623 * config/riscv/riscv.cc (riscv_const_insns): Allow
7624 const_vec_duplicates.
7625
7626 2023-05-30 liuhongt <hongtao.liu@intel.com>
7627
7628 PR middle-end/108938
7629 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
7630 function, cut from original find_bswap_or_nop function.
7631 (find_bswap_or_nop): Add a new parameter, detect bswap +
7632 rotate and save rotate result in the new parameter.
7633 (bswap_replace): Add a new parameter to indicate rotate and
7634 generate rotate stmt if needed.
7635 (maybe_optimize_vector_constructor): Adjust for new rotate
7636 parameter in the upper 2 functions.
7637 (pass_optimize_bswap::execute): Ditto.
7638 (imm_store_chain_info::output_merged_store): Ditto.
7639
7640 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7641
7642 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
7643 (aarch64_<su>adalp<mode>): New define_expand.
7644 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
7645 (aarch64_<su>addlp<mode>): Convert to define_expand.
7646 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
7647 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
7648 (ADALP): Likewise.
7649 (USADDLP): Likewise.
7650 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
7651
7652 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7653
7654 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
7655 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
7656 srhadd, urhadd builtin codes for standard optab ones.
7657 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
7658 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
7659 unspec.
7660 (<u>avg<mode>3_ceil): Rename to...
7661 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
7662 unspec.
7663 (aarch64_<su>hsub<mode>): New define_expand.
7664 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
7665 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
7666 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
7667
7668 2023-05-30 Andreas Schwab <schwab@suse.de>
7669
7670 PR target/110036
7671 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
7672 match libsanitizer.
7673
7674 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7675
7676 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
7677 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
7678 Declare prototype.
7679 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7680 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
7681 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
7682 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
7683 (aarch64_<sra_op>sra_n<mode>): New define_expand.
7684 (aarch64_<sra_op>rsra_n<mode>): Likewise.
7685 (aarch64_<sur>sra_n<mode>): Rename to...
7686 (aarch64_<sur>sra_ndi): ... This.
7687 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
7688 any_target_p argument.
7689 (aarch64_extract_vec_duplicate_wide_int): Define.
7690 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7691 (aarch64_const_vec_rnd_cst_p): Likewise.
7692 (aarch64_vector_mode_supported_any_target_p): Likewise.
7693 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
7694 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
7695 (VSRA): Adjust for the above.
7696 (sur): Likewise.
7697 (V2XWIDE): New mode_attr.
7698 (vec_or_offset): Likewise.
7699 (SHIFTEXTEND): Likewise.
7700 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
7701 predicate.
7702 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7703 clarify that it applies to current target options.
7704 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
7705 * doc/tm.texi.in: Regenerate.
7706 * stor-layout.cc (mode_for_vector): Check
7707 vector_mode_supported_any_target_p when iterating through vector modes.
7708 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7709 clarify that it applies to current target options.
7710 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
7711
7712 2023-05-30 Lili Cui <lili.cui@intel.com>
7713
7714 PR tree-optimization/98350
7715 * tree-ssa-reassoc.cc
7716 (rewrite_expr_tree_parallel): Rewrite this function.
7717 (rank_ops_for_fma): New.
7718 (reassociate_bb): Handle new function.
7719
7720 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
7721
7722 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
7723 (rtx_unstable_p): Ditto.
7724 (reg_mentioned_p): Ditto.
7725 (reg_referenced_p): Ditto.
7726 (reg_used_between_p): Ditto.
7727 (reg_set_between_p): Ditto.
7728 (modified_between_p): Ditto.
7729 (no_labels_between_p): Ditto.
7730 (modified_in_p): Ditto.
7731 (reg_set_p): Ditto.
7732 (multiple_sets): Ditto.
7733 (set_noop_p): Ditto.
7734 (noop_move_p): Ditto.
7735 (reg_overlap_mentioned_p): Ditto.
7736 (dead_or_set_p): Ditto.
7737 (dead_or_set_regno_p): Ditto.
7738 (find_reg_fusage): Ditto.
7739 (find_regno_fusage): Ditto.
7740 (side_effects_p): Ditto.
7741 (volatile_refs_p): Ditto.
7742 (volatile_insn_p): Ditto.
7743 (may_trap_p_1): Ditto.
7744 (may_trap_p): Ditto.
7745 (may_trap_or_fault_p): Ditto.
7746 (computed_jump_p): Ditto.
7747 (auto_inc_p): Ditto.
7748 (loc_mentioned_in_p): Ditto.
7749 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
7750 (rtx_unstable_p): Change return type from int to bool
7751 and adjust function body accordingly.
7752 (rtx_addr_can_trap_p): Ditto.
7753 (reg_mentioned_p): Ditto.
7754 (no_labels_between_p): Ditto.
7755 (reg_used_between_p): Ditto.
7756 (reg_referenced_p): Ditto.
7757 (reg_set_between_p): Ditto.
7758 (reg_set_p): Ditto.
7759 (modified_between_p): Ditto.
7760 (modified_in_p): Ditto.
7761 (multiple_sets): Ditto.
7762 (set_noop_p): Ditto.
7763 (noop_move_p): Ditto.
7764 (reg_overlap_mentioned_p): Ditto.
7765 (dead_or_set_p): Ditto.
7766 (dead_or_set_regno_p): Ditto.
7767 (find_reg_fusage): Ditto.
7768 (find_regno_fusage): Ditto.
7769 (remove_node_from_insn_list): Ditto.
7770 (volatile_insn_p): Ditto.
7771 (volatile_refs_p): Ditto.
7772 (side_effects_p): Ditto.
7773 (may_trap_p_1): Ditto.
7774 (may_trap_p): Ditto.
7775 (may_trap_or_fault_p): Ditto.
7776 (computed_jump_p): Ditto.
7777 (auto_inc_p): Ditto.
7778 (loc_mentioned_in_p): Ditto.
7779 * combine.cc (can_combine_p): Update indirect function.
7780
7781 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7782
7783 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
7784 * config/riscv/iterators.md: New attribute.
7785 * config/riscv/vector-iterators.md: New attribute.
7786
7787 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
7788
7789 * config/riscv/riscv.md: Fix signed and unsigned comparison
7790 warning.
7791
7792 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7793
7794 * config/riscv/autovec.md (fnma<mode>4): New pattern.
7795 (*fnma<mode>): Ditto.
7796
7797 2023-05-29 Die Li <lidie@eswincomputing.com>
7798
7799 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
7800 Delete.
7801 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
7802 process for TARGET_XTHEADCONDMOV
7803
7804 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
7805
7806 PR target/110021
7807 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
7808 TARGET_AVX512BW to generate truncv16hiv16qi2.
7809
7810 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
7811
7812 * config/riscv/riscv.md (and<mode>3): New expander.
7813 (*and<mode>3) New pattern.
7814 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
7815 predicate.
7816
7817 2023-05-29 Pan Li <pan2.li@intel.com>
7818
7819 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
7820 comments and rename local variables.
7821 (emit_nonvlmax_insn): Diito.
7822 (emit_vlmax_merge_insn): Ditto.
7823 (emit_vlmax_cmp_insn): Ditto.
7824 (emit_vlmax_cmp_mu_insn): Ditto.
7825 (emit_scalar_move_insn): Ditto.
7826
7827 2023-05-29 Pan Li <pan2.li@intel.com>
7828
7829 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
7830 magic number.
7831 (emit_nonvlmax_insn): Ditto.
7832 (emit_vlmax_merge_insn): Ditto.
7833 (emit_vlmax_cmp_insn): Ditto.
7834 (emit_vlmax_cmp_mu_insn): Ditto.
7835 (expand_vec_series): Ditto.
7836
7837 2023-05-29 Pan Li <pan2.li@intel.com>
7838
7839 * config/riscv/riscv-protos.h (enum insn_type): New type.
7840 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
7841 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
7842 class member.
7843 (rvv_builder::get_merged_repeating_sequence): Ditto.
7844 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
7845 to evaluate the optimization cost.
7846 (rvv_builder::get_merge_scalar_mask): New function to get the merge
7847 mask.
7848 (emit_scalar_move_insn): New function to emit vmv.s.x.
7849 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
7850 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
7851 vmv.v.x.
7852 (get_repeating_sequence_dup_machine_mode): New function to get the dup
7853 machine mode.
7854 (expand_vector_init_merge_repeating_sequence): New function to perform
7855 the optimization.
7856 (expand_vec_init): Add this vector init optimization.
7857 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
7858
7859 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
7860
7861 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
7862 put onto the increment when it is inserted after the position.
7863
7864 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
7865
7866 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
7867 on constants.
7868
7869 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7870
7871 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
7872
7873 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7874
7875 * config/riscv/autovec.md (fma<mode>4): New pattern.
7876 (*fma<mode>): Ditto.
7877 * config/riscv/riscv-protos.h (enum insn_type): New enum.
7878 (emit_vlmax_ternary_insn): New function.
7879 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
7880
7881 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7882
7883 * config/riscv/vector.md: Fix vimuladd instruction bug.
7884
7885 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7886
7887 * config/riscv/riscv.cc (global_state_unknown_p): New function.
7888 (riscv_mode_after): Fix incorrect VXM.
7889
7890 2023-05-29 Pan Li <pan2.li@intel.com>
7891
7892 * common/config/riscv/riscv-common.cc:
7893 (riscv_implied_info): Add zvfhmin item.
7894 (riscv_ext_version_table): Ditto.
7895 (riscv_ext_flag_table): Ditto.
7896 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
7897 (TARGET_ZFHMIN): Align indent.
7898 (TARGET_ZFH): Ditto.
7899 (TARGET_ZVFHMIN): New macro.
7900
7901 2023-05-27 liuhongt <hongtao.liu@intel.com>
7902
7903 PR target/100711
7904 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
7905 to VI_AVX2 to cover more modes.
7906
7907 2023-05-27 liuhongt <hongtao.liu@intel.com>
7908
7909 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
7910 Remove ATOM and ICELAKE(and later) core processors.
7911
7912 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
7913
7914 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
7915 (abs<mode>2): Add.
7916 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
7917 Declare.
7918 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
7919 function.
7920
7921 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
7922 Juzhe Zhong <juzhe.zhong@rivai.ai>
7923
7924 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
7925 expander.
7926 (<optab><v_quad_trunc><mode>2): Dito.
7927 (<optab><v_oct_trunc><mode>2): Dito.
7928 (trunc<mode><v_double_trunc>2): Dito.
7929 (trunc<mode><v_quad_trunc>2): Dito.
7930 (trunc<mode><v_oct_trunc>2): Dito.
7931 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
7932 (autovectorize_vector_modes): Define.
7933 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
7934 hook.
7935 (autovectorize_vector_modes): Implement hook.
7936 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
7937 Implement target hook.
7938 (riscv_vectorize_related_mode): Implement target hook.
7939 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
7940 (TARGET_VECTORIZE_RELATED_MODE): Define.
7941 * config/riscv/vector-iterators.md: Add lowercase versions of
7942 mode_attr iterators.
7943
7944 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
7945 Tobias Burnus <tobias@codesourcery.com>
7946
7947 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
7948 (ASM_SPEC): Use XNACKOPT.
7949 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
7950 (enum hsaco_attr_type): ... this, and generalize the names.
7951 (TARGET_XNACK): New macro.
7952 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
7953 but -mxnack=off.
7954 (output_file_start): Update xnack handling.
7955 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
7956 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
7957 (sram_ecc_type): Rename to ...
7958 (hsaco_attr_type: ... this.)
7959 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
7960 (TEST_XNACK): Delete.
7961 (TEST_XNACK_ANY): New macro.
7962 (TEST_XNACK_ON): New macro.
7963 (main): Support the new -mxnack=on/off/any syntax.
7964 * doc/invoke.texi (-mxnack): Update for new syntax.
7965
7966 2023-05-26 Andrew Pinski <apinski@marvell.com>
7967
7968 * genmatch.cc (emit_debug_printf): New function.
7969 (dt_simplify::gen_1): Emit printf into the code
7970 before the `return true` or returning the folded result
7971 instead of emitting it always.
7972
7973 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7974
7975 * config/xtensa/xtensa-protos.h
7976 (xtensa_expand_block_set_unrolled_loop,
7977 xtensa_expand_block_set_small_loop): Remove.
7978 (xtensa_expand_block_set): New prototype.
7979 * config/xtensa/xtensa.cc
7980 (xtensa_expand_block_set_libcall): New subfunction.
7981 (xtensa_expand_block_set_unrolled_loop,
7982 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
7983 (xtensa_expand_block_set): New function that calls the above
7984 subfunctions.
7985 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
7986 xtensa_expand_block_set().
7987
7988 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7989
7990 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
7991 New prototype.
7992 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
7993 New function.
7994 * config/xtensa/constraints.md (O):
7995 Change to use the above function.
7996 * config/xtensa/xtensa.md (*subsi3_from_const):
7997 New insn_and_split pattern.
7998
7999 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8000
8001 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
8002 Retract excessive line folding, and correct the value of
8003 the "length" insn attribute related to TARGET_DENSITY.
8004 (*extzvsi-1bit_addsubx): Ditto.
8005
8006 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
8007
8008 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
8009 Do not disable call to ix86_expand_vecop_qihi2.
8010
8011 2023-05-26 liuhongt <hongtao.liu@intel.com>
8012
8013 PR target/109610
8014 PR target/109858
8015 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
8016 calculation when !hard_regno_mode_ok for GENERAL_REGS and
8017 mode, otherwise still use GENERAL_REGS.
8018
8019 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8020
8021 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
8022 explict VL and drop VL in ops.
8023
8024 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
8025
8026 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
8027 in different BB blocks.
8028
8029 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
8030
8031 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
8032 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
8033 instructions when available. Emulate truncation via
8034 ix86_expand_vec_perm_const_1 when native truncate insn
8035 is not available.
8036 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
8037 when available. Trivially rename some variables.
8038 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
8039 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
8040 calculation of V*QImode emulations to account for generation of
8041 2x-wider mode instructions.
8042 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
8043 emulations to account for generation of 2x-wider mode instructions.
8044
8045 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
8046
8047 PR target/104327
8048 * config/avr/avr.cc (avr_can_inline_p): New static function.
8049 (TARGET_CAN_INLINE_P): Define to that function.
8050
8051 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
8052
8053 PR target/82931
8054 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
8055 Handle any bit position and use mode QISI.
8056 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
8057 of 2 insns for bit-transfer of respective style.
8058
8059 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
8060
8061 * config/arm/iterators.md (MVE_6): Remove.
8062 * config/arm/mve.md: Replace MVE_6 with MVE_5.
8063
8064 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8065 Richard Sandiford <richard.sandiford@arm.com>
8066
8067 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
8068 function.
8069 (vect_set_loop_controls_directly): Add decrement IV support.
8070 (vect_set_loop_condition_partial_vectors): Ditto.
8071 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
8072 variable.
8073 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
8074 macro.
8075
8076 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8077
8078 PR target/99195
8079 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
8080 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
8081 Fix canonicalization of PLUS operands.
8082 (aarch64_fcmla<rot><mode>): Rename to...
8083 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
8084 Fix canonicalization of PLUS operands.
8085 (aarch64_fcmla_lane<rot><mode>): Rename to...
8086 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
8087 Fix canonicalization of PLUS operands.
8088 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
8089 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
8090 Fix canonicalization of PLUS operands.
8091 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
8092
8093 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
8094
8095 * config/arm/arm.md (rbitsi2): Rename to...
8096 (arm_rbit): ... This.
8097 (ctzsi2): Adjust for the above.
8098 (arm_rev16si2): Convert to define_expand.
8099 (arm_rev16si2_alt1): New pattern.
8100 (arm_rev16si2_alt): Rename to...
8101 (*arm_rev16si2_alt2): ... This.
8102 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
8103 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
8104 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
8105 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
8106
8107 2023-05-25 Alex Coplan <alex.coplan@arm.com>
8108
8109 PR target/109800
8110 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
8111 instead of DFmode.
8112 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
8113 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
8114 DFmode as an rvalue.
8115
8116 2023-05-25 Richard Biener <rguenther@suse.de>
8117
8118 PR target/109955
8119 * tree-vect-stmts.cc (vectorizable_condition): For
8120 embedded comparisons also handle the case when the target
8121 only provides vec_cmp and vcond_mask.
8122
8123 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
8124
8125 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
8126 TLS Local Dynamic.
8127
8128 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
8129
8130 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
8131 (seq_cost_ignoring_scalar_moves): Likewise.
8132 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
8133
8134 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8135
8136 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
8137 (vcage_f32): Likewise.
8138 (vcages_f32): Likewise.
8139 (vcageq_f32): Likewise.
8140 (vcaged_f64): Likewise.
8141 (vcageq_f64): Likewise.
8142 (vcagts_f32): Likewise.
8143 (vcagt_f32): Likewise.
8144 (vcagt_f64): Likewise.
8145 (vcagtq_f32): Likewise.
8146 (vcagtd_f64): Likewise.
8147 (vcagtq_f64): Likewise.
8148 (vcale_f32): Likewise.
8149 (vcale_f64): Likewise.
8150 (vcaled_f64): Likewise.
8151 (vcales_f32): Likewise.
8152 (vcaleq_f32): Likewise.
8153 (vcaleq_f64): Likewise.
8154 (vcalt_f32): Likewise.
8155 (vcalt_f64): Likewise.
8156 (vcaltd_f64): Likewise.
8157 (vcaltq_f32): Likewise.
8158 (vcaltq_f64): Likewise.
8159 (vcalts_f32): Likewise.
8160
8161 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
8162
8163 PR target/109173
8164 PR target/109174
8165 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
8166 int to const int or const int to const unsigned int.
8167 (_mm512_mask_srli_epi16): Ditto.
8168 (_mm512_slli_epi16): Ditto.
8169 (_mm512_mask_slli_epi16): Ditto.
8170 (_mm512_maskz_slli_epi16): Ditto.
8171 (_mm512_srai_epi16): Ditto.
8172 (_mm512_mask_srai_epi16): Ditto.
8173 (_mm512_maskz_srai_epi16): Ditto.
8174 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
8175 (_mm512_mask_slli_epi64): Ditto.
8176 (_mm512_maskz_slli_epi64): Ditto.
8177 (_mm512_srli_epi64): Ditto.
8178 (_mm512_mask_srli_epi64): Ditto.
8179 (_mm512_maskz_srli_epi64): Ditto.
8180 (_mm512_srai_epi64): Ditto.
8181 (_mm512_mask_srai_epi64): Ditto.
8182 (_mm512_maskz_srai_epi64): Ditto.
8183 (_mm512_slli_epi32): Ditto.
8184 (_mm512_mask_slli_epi32): Ditto.
8185 (_mm512_maskz_slli_epi32): Ditto.
8186 (_mm512_srli_epi32): Ditto.
8187 (_mm512_mask_srli_epi32): Ditto.
8188 (_mm512_maskz_srli_epi32): Ditto.
8189 (_mm512_srai_epi32): Ditto.
8190 (_mm512_mask_srai_epi32): Ditto.
8191 (_mm512_maskz_srai_epi32): Ditto.
8192 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
8193 (_mm256_maskz_srai_epi16): Ditto.
8194 (_mm_mask_srai_epi16): Ditto.
8195 (_mm_maskz_srai_epi16): Ditto.
8196 (_mm256_mask_slli_epi16): Ditto.
8197 (_mm256_maskz_slli_epi16): Ditto.
8198 (_mm_mask_slli_epi16): Ditto.
8199 (_mm_maskz_slli_epi16): Ditto.
8200 (_mm_maskz_srli_epi16): Ditto.
8201 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
8202 (_mm256_maskz_srli_epi32): Ditto.
8203 (_mm_mask_srli_epi32): Ditto.
8204 (_mm_maskz_srli_epi32): Ditto.
8205 (_mm256_mask_srli_epi64): Ditto.
8206 (_mm256_maskz_srli_epi64): Ditto.
8207 (_mm_mask_srli_epi64): Ditto.
8208 (_mm_maskz_srli_epi64): Ditto.
8209 (_mm256_mask_srai_epi32): Ditto.
8210 (_mm256_maskz_srai_epi32): Ditto.
8211 (_mm_mask_srai_epi32): Ditto.
8212 (_mm_maskz_srai_epi32): Ditto.
8213 (_mm256_srai_epi64): Ditto.
8214 (_mm256_mask_srai_epi64): Ditto.
8215 (_mm256_maskz_srai_epi64): Ditto.
8216 (_mm_srai_epi64): Ditto.
8217 (_mm_mask_srai_epi64): Ditto.
8218 (_mm_maskz_srai_epi64): Ditto.
8219 (_mm_mask_slli_epi32): Ditto.
8220 (_mm_maskz_slli_epi32): Ditto.
8221 (_mm_mask_slli_epi64): Ditto.
8222 (_mm_maskz_slli_epi64): Ditto.
8223 (_mm256_mask_slli_epi32): Ditto.
8224 (_mm256_maskz_slli_epi32): Ditto.
8225 (_mm256_mask_slli_epi64): Ditto.
8226 (_mm256_maskz_slli_epi64): Ditto.
8227
8228 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8229
8230 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
8231 instructions.
8232
8233 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8234
8235 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
8236 * data-streamer-out.cc (streamer_write_vrange): Same.
8237 * value-range.h (class vrange): Make streamer_write_vrange a friend.
8238
8239 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8240
8241 * value-query.cc (range_query::get_tree_range): Set NAN directly
8242 if necessary.
8243 * value-range.cc (frange::set): Assert that bounds are not NAN.
8244
8245 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8246
8247 * value-range.cc (add_vrange): Handle known NANs.
8248
8249 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8250
8251 * value-range.h (frange::set_nan): New.
8252
8253 2023-05-25 Alexandre Oliva <oliva@adacore.com>
8254
8255 PR target/100106
8256 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
8257 requires stricter alignment than MEM's.
8258
8259 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8260
8261 PR tree-optimization/107822
8262 PR tree-optimization/107986
8263 * Makefile.in (OBJS): Add gimple-range-phi.o.
8264 * gimple-range-cache.h (ranger_cache::m_estimate): New
8265 phi_analyzer pointer member.
8266 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
8267 phi_analyzer if no loop info is available.
8268 * gimple-range-phi.cc: New file.
8269 * gimple-range-phi.h: New file.
8270 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
8271
8272 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8273
8274 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
8275 to contructors.
8276 (fold_range): Add range_query parameter.
8277 (fur_relation::fur_relation): New.
8278 (fur_relation::trio): New.
8279 (fur_relation::register_relation): New.
8280 (fold_relations): New.
8281 * gimple-range-fold.h (fold_range): Adjust prototypes.
8282 (fold_relations): New.
8283
8284 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8285
8286 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
8287 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
8288 (ranger_cache::const_query): New.
8289 * gimple-range.cc (gimple_ranger::const_query): New.
8290 * gimple-range.h (gimple_ranger::const_query): New prototype.
8291
8292 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8293
8294 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
8295 (ssa_cache::dump_range_query): Delete.
8296 (ssa_lazy_cache::dump_range_query): Delete.
8297 (ssa_lazy_cache::get_range): Move from header file.
8298 (ssa_lazy_cache::clear_range): ditto.
8299 (ssa_lazy_cache::clear): Ditto.
8300 * gimple-range-cache.h (class ssa_cache): Virtualize.
8301 (class ssa_lazy_cache): Inherit and virtualize.
8302
8303 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
8304
8305 * value-range.h (vrange::kind): Remove.
8306
8307 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
8308
8309 PR middle-end/109840
8310 * match.pd <popcount optimizations>: Preserve zero-extension when
8311 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
8312 popcount((T)x), so the popcount's argument keeps the same type.
8313 <parity optimizations>: Likewise preserve extensions when
8314 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
8315 parity((T)x), so that the parity's argument type is the same.
8316
8317 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
8318
8319 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
8320 (ipcp_store_vr_results): Same.
8321 * ipa-prop.cc (ipa_vr::ipa_vr): New.
8322 (ipa_vr::get_vrange): New.
8323 (ipa_vr::set_unknown): New.
8324 (ipa_vr::streamer_read): New.
8325 (ipa_vr::streamer_write): New.
8326 (write_ipcp_transformation_info): Use new ipa_vr API.
8327 (read_ipcp_transformation_info): Same.
8328 (ipa_vr::nonzero_p): Delete.
8329 (ipcp_update_vr): Use new ipa_vr API.
8330 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
8331 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
8332
8333 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
8334
8335 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
8336 silence overflow warnings later on.
8337
8338 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
8339
8340 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
8341 Remove handling of V8QImode.
8342 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
8343 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
8344 (v<insn>v4qi3): Ditto.
8345 * config/i386/sse.md (v<insn>v8qi3): Remove.
8346
8347 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8348
8349 PR target/99195
8350 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
8351 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
8352 (aarch64_simd_ashr<mode>): Rename to...
8353 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
8354 (aarch64_simd_imm_shl<mode>): Rename to...
8355 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
8356 (aarch64_simd_reg_sshl<mode>): Rename to...
8357 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
8358 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
8359 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
8360 (aarch64_simd_reg_shl<mode>_signed): Rename to...
8361 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
8362 (vec_shr_<mode>): Rename to...
8363 (vec_shr_<mode><vczle><vczbe>): ... This.
8364 (aarch64_<sur>shl<mode>): Rename to...
8365 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
8366 (aarch64_<sur>q<r>shl<mode>): Rename to...
8367 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
8368
8369 2023-05-24 Richard Biener <rguenther@suse.de>
8370
8371 PR target/109944
8372 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
8373 Perform final vector composition using
8374 ix86_expand_vector_init_general instead of setting
8375 the highpart and lowpart which causes spilling.
8376
8377 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8378
8379 PR tree-optimization/109695
8380 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
8381 changed param.
8382 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
8383 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
8384 flag to set_global_range.
8385 (gimple_ranger::prefill_stmt_dependencies): Ditto.
8386
8387 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8388
8389 PR tree-optimization/109695
8390 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
8391 a positive int.
8392 (temporal_cache::current_p): Check always_current method.
8393 (temporal_cache::set_always_current): Add param and set value
8394 appropriately.
8395 (temporal_cache::always_current_p): New.
8396 (ranger_cache::get_global_range): Adjust.
8397 (ranger_cache::set_global_range): set always current first.
8398
8399 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8400
8401 PR tree-optimization/109695
8402 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
8403 fold_range with global query to choose an initial value.
8404
8405 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8406
8407 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
8408 prefix.
8409
8410 2023-05-24 Richard Biener <rguenther@suse.de>
8411
8412 PR tree-optimization/109849
8413 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
8414 expressions but take the first sets.
8415
8416 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
8417
8418 PR modula2/109952
8419 * doc/gm2.texi (High procedure function): New node.
8420 (Using): New menu entry for High procedure function.
8421
8422 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
8423
8424 PR rtl-optimization/109940
8425 * early-remat.cc (postorder_index): Rename to...
8426 (rpo_index): ...this.
8427 (compare_candidates): Sort by decreasing rpo_index rather than
8428 increasing postorder_index.
8429 (early_remat::sort_candidates): Calculate the forward RPO from
8430 DF_FORWARD.
8431 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
8432 rather than DF_BACKWARD in reverse.
8433
8434 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8435
8436 PR target/109939
8437 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
8438 qualifier_none for the return operand.
8439
8440 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8441
8442 * config/riscv/autovec.md (<optab><mode>3): New pattern.
8443 (one_cmpl<mode>2): Ditto.
8444 (*<optab>not<mode>): Ditto.
8445 (*n<optab><mode>): Ditto.
8446 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
8447 one_cmpl.
8448
8449 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
8450
8451 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
8452 calculation on n_perms by considering nvectors_per_build.
8453
8454 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8455 Richard Sandiford <richard.sandiford@arm.com>
8456
8457 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
8458 (vec_cmp<mode><vm>): New pattern.
8459 (vec_cmpu<mode><vm>): New pattern.
8460 (vcond<V:mode><VI:mode>): New pattern.
8461 (vcondu<V:mode><VI:mode>): New pattern.
8462 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
8463 (emit_vlmax_merge_insn): New function.
8464 (emit_vlmax_cmp_insn): Ditto.
8465 (emit_vlmax_cmp_mu_insn): Ditto.
8466 (expand_vec_cmp): Ditto.
8467 (expand_vec_cmp_float): Ditto.
8468 (expand_vcond): Ditto.
8469 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
8470 (emit_vlmax_cmp_insn): Ditto.
8471 (emit_vlmax_cmp_mu_insn): Ditto.
8472 (get_cmp_insn_code): Ditto.
8473 (expand_vec_cmp): Ditto.
8474 (expand_vec_cmp_float): Ditto.
8475 (expand_vcond): Ditto.
8476
8477 2023-05-24 Pan Li <pan2.li@intel.com>
8478
8479 * config/riscv/genrvv-type-indexer.cc (main): Add
8480 unsigned_eew*_lmul1_interpret for indexer.
8481 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8482 Register vuint*m1_t interpret function.
8483 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
8484 New macro for vuint8m1_t.
8485 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8486 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8487 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8488 (vbool1_t): Add to unsigned_eew*_interpret_ops.
8489 (vbool2_t): Likewise.
8490 (vbool4_t): Likewise.
8491 (vbool8_t): Likewise.
8492 (vbool16_t): Likewise.
8493 (vbool32_t): Likewise.
8494 (vbool64_t): Likewise.
8495 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
8496 New macro for vuint*m1_t.
8497 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8498 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8499 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8500 (required_extensions_p): Add vuint*m1_t interpret case.
8501 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
8502 Add vuint*m1_t interpret to base type.
8503 (unsigned_eew16_lmul1_interpret): Likewise.
8504 (unsigned_eew32_lmul1_interpret): Likewise.
8505 (unsigned_eew64_lmul1_interpret): Likewise.
8506
8507 2023-05-24 Pan Li <pan2.li@intel.com>
8508
8509 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
8510 for the eew size list.
8511 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
8512 (main): Add signed_eew*_lmul1_interpret for indexer.
8513 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8514 Register vint*m1_t interpret function.
8515 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
8516 New macro for vint8m1_t.
8517 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8518 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8519 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8520 (vbool1_t): Add to signed_eew*_interpret_ops.
8521 (vbool2_t): Likewise.
8522 (vbool4_t): Likewise.
8523 (vbool8_t): Likewise.
8524 (vbool16_t): Likewise.
8525 (vbool32_t): Likewise.
8526 (vbool64_t): Likewise.
8527 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
8528 New macro for vint*m1_t.
8529 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8530 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8531 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8532 (required_extensions_p): Add vint8m1_t interpret case.
8533 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
8534 Add vint*m1_t interpret to base type.
8535 (signed_eew16_lmul1_interpret): Likewise.
8536 (signed_eew32_lmul1_interpret): Likewise.
8537 (signed_eew64_lmul1_interpret): Likewise.
8538
8539 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8540
8541 * config/riscv/autovec.md: Adjust for new interface.
8542 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
8543 (emit_nonvlmax_insn): Add AVL operand.
8544 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
8545 (emit_nonvlmax_insn): Add AVL operand.
8546 (sew64_scalar_helper): Adjust for new interface.
8547 (expand_tuple_move): Ditto.
8548 * config/riscv/vector.md: Ditto.
8549
8550 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8551
8552 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
8553 (expand_const_vector): Ditto.
8554 (legitimize_move): Ditto.
8555 (sew64_scalar_helper): Ditto.
8556 (expand_tuple_move): Ditto.
8557 (expand_vector_init_insert_elems): Ditto.
8558 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8559
8560 2023-05-24 liuhongt <hongtao.liu@intel.com>
8561
8562 PR target/109900
8563 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
8564 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
8565 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
8566 (ix86_masked_all_ones): Handle 64-bit mask.
8567 * config/i386/i386-builtin.def: Replace icode of related
8568 non-mask simd abs builtins with CODE_FOR_nothing.
8569
8570 2023-05-23 Martin Uecker <uecker@tugraz.at>
8571
8572 PR c/109450
8573 * function.cc (gimplify_parm_type): Remove function.
8574 (gimplify_parameters): Call gimplify_type_sizes.
8575
8576 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8577
8578 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
8579 and change to also accept '*subx' pattern.
8580 (*subx): Remove.
8581
8582 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8583
8584 * config/xtensa/predicates.md (addsub_operator): New.
8585 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
8586 *extzvsi-1bit_addsubx): New insn_and_split patterns.
8587 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
8588 Add a special case about ifcvt 'noce_try_cmove()' to handle
8589 constant loads that do not fit into signed 12 bits in the
8590 patterns added above.
8591
8592 2023-05-23 Richard Biener <rguenther@suse.de>
8593
8594 PR tree-optimization/109747
8595 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
8596 the SLP node only once to the cost hook.
8597
8598 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
8599
8600 * config/avr/avr.cc (avr_insn_cost): New static function.
8601 (TARGET_INSN_COST): Define to that function.
8602
8603 2023-05-23 Richard Biener <rguenther@suse.de>
8604
8605 PR target/109944
8606 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
8607 For vector construction or splats apply GPR->XMM move
8608 costing. QImode memory can be handled directly only
8609 with SSE4.1 pinsrb.
8610
8611 2023-05-23 Richard Biener <rguenther@suse.de>
8612
8613 PR tree-optimization/108752
8614 * tree-vect-stmts.cc (vectorizable_operation): For bit
8615 operations with generic word_mode vectors do not cost
8616 an extra stmt. For plus, minus and negate also cost the
8617 constant materialization.
8618
8619 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
8620
8621 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
8622 Call ix86_expand_vec_shift_qihi_constant for shifts
8623 with constant count operand.
8624 * config/i386/i386.cc (ix86_shift_rotate_cost):
8625 Handle V4QImode and V8QImode.
8626 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
8627 (<insn>v4qi3): Ditto.
8628
8629 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8630
8631 * config/riscv/vector.md: Add mode.
8632
8633 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
8634
8635 PR tree-optimization/109934
8636 * value-range.cc (irange::invert): Remove buggy special case.
8637
8638 2023-05-23 Richard Biener <rguenther@suse.de>
8639
8640 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
8641 ANTIC_OUT.
8642
8643 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
8644
8645 PR target/109632
8646 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
8647 subregs between any scalars that are 64 bits or smaller.
8648 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
8649 (bits_etype): New int attribute.
8650 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
8651 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
8652 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
8653
8654 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
8655
8656 * doc/md.texi: Document that <FOO> can be used to refer to the
8657 numerical value of an int iterator FOO. Tweak other parts of
8658 the int iterator documentation.
8659 * read-rtl.cc (iterator_group::has_self_attr): New field.
8660 (map_attr_string): When has_self_attr is true, make <FOO>
8661 expand to the current value of iterator FOO.
8662 (initialize_iterators): Set has_self_attr for int iterators.
8663
8664 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8665
8666 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
8667 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
8668 (RVV_UNOP_NUM): New macro.
8669 (RVV_BINOP_NUM): Ditto.
8670 (legitimize_move): Refactor the framework of RVV auto-vectorization.
8671 (emit_vlmax_op): Ditto.
8672 (emit_vlmax_reg_op): Ditto.
8673 (emit_len_op): Ditto.
8674 (emit_len_binop): Ditto.
8675 (emit_vlmax_tany_many): Ditto.
8676 (emit_nonvlmax_tany_many): Ditto.
8677 (sew64_scalar_helper): Ditto.
8678 (expand_tuple_move): Ditto.
8679 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
8680 (emit_pred_binop): Ditto.
8681 (emit_vlmax_op): Ditto.
8682 (emit_vlmax_tany_many): New function.
8683 (emit_len_op): Remove.
8684 (emit_nonvlmax_tany_many): New function.
8685 (emit_vlmax_reg_op): Remove.
8686 (emit_len_binop): Ditto.
8687 (emit_index_op): Ditto.
8688 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
8689 (expand_const_vector): Ditto.
8690 (legitimize_move): Ditto.
8691 (sew64_scalar_helper): Ditto.
8692 (expand_tuple_move): Ditto.
8693 (expand_vector_init_insert_elems): Ditto.
8694 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8695 * config/riscv/vector.md: Ditto.
8696
8697 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8698
8699 PR target/109855
8700 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
8701 and constraint for operand 0.
8702 (add_vec_concat_subst_be): Likewise.
8703
8704 2023-05-23 Richard Biener <rguenther@suse.de>
8705
8706 PR tree-optimization/109849
8707 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
8708 and use that to determine what to hoist.
8709
8710 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
8711
8712 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
8713 specific treatment for bit-fields only if they have an integral type
8714 and filter out non-integral bit-fields that do not start and end on
8715 a byte boundary.
8716
8717 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
8718
8719 PR tree-optimization/109920
8720 * value-range.h (RESIZABLE>::~int_range): Use delete[].
8721
8722 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
8723
8724 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
8725 calcuation of integer vector mode costs to reflect generated
8726 instruction sequences of different integer vector modes and
8727 different target ABIs. Remove "speed" function argument.
8728 (ix86_rtx_costs): Update call for removed function argument.
8729 (ix86_vector_costs::add_stmt_cost): Ditto.
8730
8731 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
8732
8733 * value-range.h (class Value_Range): Implement set_zero,
8734 set_nonzero, and nonzero_p.
8735
8736 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
8737
8738 * config/i386/i386.cc (ix86_multiplication_cost): Add
8739 the cost of a memory read to the cost of V?QImode sequences.
8740
8741 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8742
8743 * config/riscv/riscv-v.cc: Add "m_" prefix.
8744
8745 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8746
8747 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
8748 multiple-rgroup of length.
8749 * tree-vect-stmts.cc (vectorizable_store): Ditto.
8750 (vectorizable_load): Ditto.
8751 * tree-vectorizer.h (vect_get_loop_len): Ditto.
8752
8753 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8754
8755 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
8756 codes.
8757
8758 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
8759
8760 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
8761 handling for the case index == count.
8762
8763 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
8764
8765 PR target/90622
8766 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
8767 Don't fold to XOR / AND / XOR if just one bit is copied to the
8768 same position.
8769
8770 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
8771
8772 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
8773 builtin for bit reversal using brev instruction.
8774 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
8775 NVPTX_BUILTIN_BREVLL.
8776 (nvptx_init_builtins): Define "brev" and "brevll".
8777 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
8778 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
8779 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
8780 section, document __builtin_nvptx_brev{,ll}.
8781
8782 2023-05-21 Jakub Jelinek <jakub@redhat.com>
8783
8784 PR tree-optimization/109505
8785 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
8786 Combine successive equal operations with constants,
8787 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
8788 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
8789 operands.
8790
8791 2023-05-21 Andrew Pinski <apinski@marvell.com>
8792
8793 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
8794
8795 2023-05-21 Pan Li <pan2.li@intel.com>
8796
8797 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
8798 rest bool size, aka 2, 4, 8, 16, 32, 64.
8799 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8800 Register vbool[2|4|8|16|32|64] interpret function.
8801 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
8802 New macro for vbool2_t.
8803 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
8804 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
8805 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
8806 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
8807 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
8808 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
8809 (vint16m1_t): Likewise.
8810 (vint32m1_t): Likewise.
8811 (vint64m1_t): Likewise.
8812 (vuint8m1_t): Likewise.
8813 (vuint16m1_t): Likewise.
8814 (vuint32m1_t): Likewise.
8815 (vuint64m1_t): Likewise.
8816 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
8817 New macro for vbool2_t.
8818 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
8819 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
8820 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
8821 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
8822 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
8823 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
8824 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
8825 vbool2_t interprect to base type.
8826 (bool4_interpret): Likewise.
8827 (bool8_interpret): Likewise.
8828 (bool16_interpret): Likewise.
8829 (bool32_interpret): Likewise.
8830 (bool64_interpret): Likewise.
8831
8832 2023-05-21 Andrew Pinski <apinski@marvell.com>
8833
8834 PR middle-end/109919
8835 * expr.cc (expand_single_bit_test): Don't use the
8836 target for expand_expr.
8837
8838 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
8839
8840 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
8841 section.
8842
8843 2023-05-20 Pan Li <pan2.li@intel.com>
8844
8845 * mode-switching.cc (entity_map): Initialize the array to zero.
8846 (bb_info): Ditto.
8847
8848 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
8849
8850 PR target/105753
8851 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
8852 Remove superfluous "parallel" in insn pattern.
8853 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
8854 printing error text to assembly.
8855
8856 2023-05-20 Andrew Pinski <apinski@marvell.com>
8857
8858 * expr.cc (fold_single_bit_test): Rename to ...
8859 (expand_single_bit_test): This and expand directly.
8860 (do_store_flag): Update for the rename function.
8861
8862 2023-05-20 Andrew Pinski <apinski@marvell.com>
8863
8864 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
8865 instead of shift/and.
8866
8867 2023-05-20 Andrew Pinski <apinski@marvell.com>
8868
8869 * expr.cc (fold_single_bit_test): Add an assert
8870 and simplify based on code being NE_EXPR or EQ_EXPR.
8871
8872 2023-05-20 Andrew Pinski <apinski@marvell.com>
8873
8874 * expr.cc (fold_single_bit_test): Take inner and bitnum
8875 instead of arg0 and arg1. Update the code.
8876 (do_store_flag): Don't create a tree when calling
8877 fold_single_bit_test instead just call it with the bitnum
8878 and the inner tree.
8879
8880 2023-05-20 Andrew Pinski <apinski@marvell.com>
8881
8882 * expr.cc (fold_single_bit_test): Use get_def_for_expr
8883 instead of checking the inner's code.
8884
8885 2023-05-20 Andrew Pinski <apinski@marvell.com>
8886
8887 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
8888 (fold_single_bit_test): This and simplify.
8889
8890 2023-05-20 Andrew Pinski <apinski@marvell.com>
8891
8892 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
8893 expr.cc.
8894 (fold_single_bit_test): Likewise.
8895 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
8896 (fold_single_bit_test): Likewise and make static.
8897 * fold-const.h (fold_single_bit_test): Remove declaration.
8898
8899 2023-05-20 Die Li <lidie@eswincomputing.com>
8900
8901 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
8902 checking.
8903
8904 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
8905
8906 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
8907
8908 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
8909
8910 PR target/106888
8911 * config/riscv/bitmanip.md
8912 (<bitmanip_optab>disi2): Match with any_extend.
8913 (<bitmanip_optab>disi2_sext): New pattern to match
8914 with sign extend using an ANDI instruction.
8915
8916 2023-05-19 Nathan Sidwell <nathan@acm.org>
8917
8918 PR other/99451
8919 * opts.h (handle_deferred_dump_options): Declare.
8920 * opts-global.cc (handle_common_deferred_options): Do not handle
8921 dump options here.
8922 (handle_deferred_dump_options): New.
8923 * toplev.cc (toplev::main): Call it after plugin init.
8924
8925 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
8926
8927 * config/riscv/constraints.md (DsS, DsD): Restore agreement
8928 with shiftm1 mode attribute.
8929
8930 2023-05-19 Andrew Pinski <apinski@marvell.com>
8931
8932 PR driver/33980
8933 * gcc.cc (default_compilers["@c-header"]): Add %w
8934 after the --output-pch.
8935
8936 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
8937
8938 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
8939 to hival, ASHIFT the corresponding regs.
8940
8941 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
8942
8943 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
8944
8945 2023-05-19 Jakub Jelinek <jakub@redhat.com>
8946
8947 PR tree-optimization/105776
8948 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
8949 non-NULL, allow division statement to have a cast as single imm use
8950 rather than comparison/condition.
8951 (match_arith_overflow): In that case remove the cast stmt in addition
8952 to the division statement.
8953
8954 2023-05-19 Jakub Jelinek <jakub@redhat.com>
8955
8956 PR tree-optimization/101856
8957 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
8958 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
8959 support it but umul_highpart_optab does.
8960
8961 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
8962
8963 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
8964 of tree_to_shwi on array indices. Minor tweaks.
8965
8966 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
8967
8968 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
8969 * attribs.cc (diag_attr_exclusions): Ditto.
8970 (decl_attributes): Ditto.
8971 (build_type_attribute_qual_variant): Ditto.
8972 * builtins.cc (fold_builtin_carg): Ditto.
8973 (fold_builtin_next_arg): Ditto.
8974 (do_mpc_arg2): Ditto.
8975 * cfgexpand.cc (expand_return): Ditto.
8976 * cgraph.h (decl_in_symtab_p): Ditto.
8977 (symtab_node::get_create): Ditto.
8978 * dwarf2out.cc (base_type_die): Ditto.
8979 (implicit_ptr_descriptor): Ditto.
8980 (gen_array_type_die): Ditto.
8981 (gen_type_die_with_usage): Ditto.
8982 (optimize_location_into_implicit_ptr): Ditto.
8983 * expr.cc (do_store_flag): Ditto.
8984 * fold-const.cc (negate_expr_p): Ditto.
8985 (fold_negate_expr_1): Ditto.
8986 (fold_convert_const): Ditto.
8987 (fold_convert_loc): Ditto.
8988 (constant_boolean_node): Ditto.
8989 (fold_binary_op_with_conditional_arg): Ditto.
8990 (build_fold_addr_expr_with_type_loc): Ditto.
8991 (fold_comparison): Ditto.
8992 (fold_checksum_tree): Ditto.
8993 (tree_unary_nonnegative_warnv_p): Ditto.
8994 (integer_valued_real_unary_p): Ditto.
8995 (fold_read_from_constant_string): Ditto.
8996 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
8997 * gimple-expr.cc (useless_type_conversion_p): Ditto.
8998 (is_gimple_reg): Ditto.
8999 (is_gimple_asm_val): Ditto.
9000 (mark_addressable): Ditto.
9001 * gimple-expr.h (is_gimple_variable): Ditto.
9002 (virtual_operand_p): Ditto.
9003 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
9004 * gimplify.cc (gimplify_bind_expr): Ditto.
9005 (gimplify_return_expr): Ditto.
9006 (gimple_add_padding_init_for_auto_var): Ditto.
9007 (gimplify_addr_expr): Ditto.
9008 (omp_add_variable): Ditto.
9009 (omp_notice_variable): Ditto.
9010 (omp_get_base_pointer): Ditto.
9011 (omp_strip_components_and_deref): Ditto.
9012 (omp_strip_indirections): Ditto.
9013 (omp_accumulate_sibling_list): Ditto.
9014 (omp_build_struct_sibling_lists): Ditto.
9015 (gimplify_adjust_omp_clauses_1): Ditto.
9016 (gimplify_adjust_omp_clauses): Ditto.
9017 (gimplify_omp_for): Ditto.
9018 (goa_lhs_expr_p): Ditto.
9019 (gimplify_one_sizepos): Ditto.
9020 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
9021 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
9022 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
9023 (propagate_controlled_uses): Ditto.
9024 * ipa-sra.cc (type_prevails_p): Ditto.
9025 (scan_expr_access): Ditto.
9026 * optabs-tree.cc (optab_for_tree_code): Ditto.
9027 * toplev.cc (wrapup_global_declaration_1): Ditto.
9028 * trans-mem.cc (transaction_invariant_address_p): Ditto.
9029 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
9030 (verify_gimple_comparison): Ditto.
9031 (verify_gimple_assign_binary): Ditto.
9032 (verify_gimple_assign_single): Ditto.
9033 * tree-complex.cc (get_component_ssa_name): Ditto.
9034 * tree-emutls.cc (lower_emutls_2): Ditto.
9035 * tree-inline.cc (copy_tree_body_r): Ditto.
9036 (estimate_move_cost): Ditto.
9037 (copy_decl_for_dup_finish): Ditto.
9038 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
9039 (note_nonlocal_vla_type): Ditto.
9040 (convert_local_omp_clauses): Ditto.
9041 (remap_vla_decls): Ditto.
9042 (fixup_vla_decls): Ditto.
9043 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
9044 * tree-pretty-print.cc (print_declaration): Ditto.
9045 (print_call_name): Ditto.
9046 * tree-sra.cc (compare_access_positions): Ditto.
9047 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
9048 * tree-ssa-ccp.cc (get_default_value): Ditto.
9049 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
9050 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
9051 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
9052 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
9053 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
9054 * tree-ssa-sink.cc (statement_sink_location): Ditto.
9055 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
9056 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
9057 * tree-ssa-uninit.cc (warn_uninit): Ditto.
9058 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
9059 (non_rewritable_mem_ref_base): Ditto.
9060 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
9061 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
9062 * tree-vect-generic.cc (do_binop): Ditto.
9063 (do_cond): Ditto.
9064 * tree-vect-stmts.cc (vect_init_vector): Ditto.
9065 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
9066 * tree.cc (sign_mask_for): Ditto.
9067 (verify_type_variant): Ditto.
9068 (gimple_canonical_types_compatible_p): Ditto.
9069 (verify_type): Ditto.
9070 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
9071 * var-tracking.cc (prepare_call_arguments): Ditto.
9072 (vt_add_function_parameters): Ditto.
9073 * varasm.cc (decode_addr_const): Ditto.
9074
9075 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9076
9077 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
9078 (lower_reduction_clauses): Ditto.
9079 (lower_send_clauses): Ditto.
9080 (lower_omp_task_reductions): Ditto.
9081 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
9082 (worker_single_copy): Ditto.
9083 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
9084 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
9085
9086 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9087
9088 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
9089 tree.h.
9090 (lto_read_body_or_constructor): Ditto.
9091 * lto-streamer-out.cc (tree_is_indexable): Ditto.
9092 (lto_output_var_decl_ref): Ditto.
9093 (DFS::DFS_write_tree_body): Ditto.
9094 (wrap_refs): Ditto.
9095 (write_symbol_extension_info): Ditto.
9096
9097 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9098
9099 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
9100 defines from tree.h.
9101 (aarch64_mangle_type): Ditto.
9102 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
9103 (alpha_gimplify_va_arg_1): Ditto.
9104 * config/arc/arc.cc (arc_encode_section_info): Ditto.
9105 (arc_is_aux_reg_p): Ditto.
9106 (arc_is_uncached_mem_p): Ditto.
9107 (arc_handle_aux_attribute): Ditto.
9108 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
9109 (arm_handle_cmse_nonsecure_call): Ditto.
9110 (arm_set_default_type_attributes): Ditto.
9111 (arm_is_segment_info_known): Ditto.
9112 (arm_mangle_type): Ditto.
9113 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
9114 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
9115 (avr_decl_absdata_p): Ditto.
9116 (avr_insert_attributes): Ditto.
9117 (avr_section_type_flags): Ditto.
9118 (avr_encode_section_info): Ditto.
9119 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
9120 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
9121 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
9122 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
9123 (csky_mangle_type): Ditto.
9124 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
9125 * config/darwin.cc (is_objc_metadata): Ditto.
9126 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
9127 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
9128 * config/frv/frv.cc (frv_emit_movsi): Ditto.
9129 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
9130 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
9131 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
9132 * config/i386/i386-expand.cc: Ditto.
9133 * config/i386/i386.cc (type_natural_mode): Ditto.
9134 (ix86_function_arg): Ditto.
9135 (ix86_data_alignment): Ditto.
9136 (ix86_local_alignment): Ditto.
9137 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
9138 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
9139 (i386_pe_type_dllexport_p): Ditto.
9140 (i386_pe_adjust_class_at_definition): Ditto.
9141 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
9142 (i386_pe_binds_local_p): Ditto.
9143 (i386_pe_section_type_flags): Ditto.
9144 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
9145 (ia64_gimplify_va_arg): Ditto.
9146 (ia64_in_small_data_p): Ditto.
9147 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
9148 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
9149 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
9150 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
9151 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
9152 (mcore_encode_section_info): Ditto.
9153 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
9154 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
9155 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
9156 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
9157 (pass_in_memory): Ditto.
9158 (nvptx_generate_vector_shuffle): Ditto.
9159 (nvptx_lockless_update): Ditto.
9160 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
9161 (pa_function_value): Ditto.
9162 (pa_function_arg): Ditto.
9163 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
9164 (TEXT_SPACE_P): Ditto.
9165 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
9166 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
9167 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
9168 (riscv_mangle_type): Ditto.
9169 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
9170 (rl78_addsi3_internal): Ditto.
9171 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
9172 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
9173 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
9174 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
9175 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
9176 (rs6000_function_arg_advance_1): Ditto.
9177 (rs6000_function_arg): Ditto.
9178 (rs6000_pass_by_reference): Ditto.
9179 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
9180 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
9181 (rs6000_set_default_type_attributes): Ditto.
9182 (rs6000_elf_in_small_data_p): Ditto.
9183 (IN_NAMED_SECTION): Ditto.
9184 (rs6000_xcoff_encode_section_info): Ditto.
9185 (rs6000_function_value): Ditto.
9186 (invalid_arg_for_unprototyped_fn): Ditto.
9187 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
9188 (s390_vec_n_elem): Ditto.
9189 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
9190 (s390_function_arg_integer): Ditto.
9191 (s390_return_in_memory): Ditto.
9192 (s390_encode_section_info): Ditto.
9193 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
9194 (sh_function_value): Ditto.
9195 * config/sol2.cc (solaris_insert_attributes): Ditto.
9196 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
9197 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
9198 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
9199 (xstormy16_handle_below100_attribute): Ditto.
9200 * config/v850/v850.cc (v850_encode_section_info): Ditto.
9201 (v850_insert_attributes): Ditto.
9202 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
9203 (visium_return_in_memory): Ditto.
9204 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
9205
9206 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
9207
9208 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
9209 (ix86_expand_vecop_qihi): Add op2vec bool variable.
9210 Do not set REG_EQUAL note.
9211 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
9212 Add prototype.
9213 * config/i386/i386.cc (ix86_multiplication_cost): Handle
9214 V4QImode and V8QImode.
9215 * config/i386/mmx.md (mulv8qi3): New expander.
9216 (mulv4qi3): Ditto.
9217 * config/i386/sse.md (mulv8qi3): Remove.
9218
9219 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
9220
9221 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
9222
9223 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
9224
9225 PR bootstrap/105831
9226 * config.gcc: Use = operator instead of ==.
9227
9228 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
9229
9230 PR bootstrap/105831
9231 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
9232 * configure.ac: Likewise.
9233 * configure: Regenerate.
9234
9235 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
9236
9237 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
9238 (__ARM_mve_coerce1): Remove.
9239 (__ARM_mve_coerce2): Remove.
9240 (__ARM_mve_coerce3): Remove.
9241 (__ARM_mve_coerce_i_scalar): New.
9242 (__ARM_mve_coerce_s8_ptr): New.
9243 (__ARM_mve_coerce_u8_ptr): New.
9244 (__ARM_mve_coerce_s16_ptr): New.
9245 (__ARM_mve_coerce_u16_ptr): New.
9246 (__ARM_mve_coerce_s32_ptr): New.
9247 (__ARM_mve_coerce_u32_ptr): New.
9248 (__ARM_mve_coerce_s64_ptr): New.
9249 (__ARM_mve_coerce_u64_ptr): New.
9250 (__ARM_mve_coerce_f_scalar): New.
9251 (__ARM_mve_coerce_f16_ptr): New.
9252 (__ARM_mve_coerce_f32_ptr): New.
9253 (__arm_vst4q): Change _coerce_ overloads.
9254 (__arm_vbicq): Change _coerce_ overloads.
9255 (__arm_vld1q): Change _coerce_ overloads.
9256 (__arm_vld1q_z): Change _coerce_ overloads.
9257 (__arm_vld2q): Change _coerce_ overloads.
9258 (__arm_vld4q): Change _coerce_ overloads.
9259 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
9260 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
9261 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
9262 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
9263 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
9264 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
9265 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
9266 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
9267 (__arm_vst1q_p): Change _coerce_ overloads.
9268 (__arm_vst2q): Change _coerce_ overloads.
9269 (__arm_vst1q): Change _coerce_ overloads.
9270 (__arm_vstrhq): Change _coerce_ overloads.
9271 (__arm_vstrhq_p): Change _coerce_ overloads.
9272 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
9273 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
9274 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
9275 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
9276 (__arm_vstrwq_p): Change _coerce_ overloads.
9277 (__arm_vstrwq): Change _coerce_ overloads.
9278 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
9279 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
9280 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
9281 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
9282 (__arm_vsetq_lane): Change _coerce_ overloads.
9283 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
9284 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
9285 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
9286 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
9287 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
9288 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
9289 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
9290 (__arm_vidupq_x_u8): Change _coerce_ overloads.
9291 (__arm_vddupq_x_u8): Change _coerce_ overloads.
9292 (__arm_vidupq_x_u16): Change _coerce_ overloads.
9293 (__arm_vddupq_x_u16): Change _coerce_ overloads.
9294 (__arm_vidupq_x_u32): Change _coerce_ overloads.
9295 (__arm_vddupq_x_u32): Change _coerce_ overloads.
9296 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
9297 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
9298 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
9299 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
9300 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
9301 (__arm_vidupq_u16): Change _coerce_ overloads.
9302 (__arm_vidupq_u32): Change _coerce_ overloads.
9303 (__arm_vidupq_u8): Change _coerce_ overloads.
9304 (__arm_vddupq_u16): Change _coerce_ overloads.
9305 (__arm_vddupq_u32): Change _coerce_ overloads.
9306 (__arm_vddupq_u8): Change _coerce_ overloads.
9307 (__arm_viwdupq_m): Change _coerce_ overloads.
9308 (__arm_viwdupq_u16): Change _coerce_ overloads.
9309 (__arm_viwdupq_u32): Change _coerce_ overloads.
9310 (__arm_viwdupq_u8): Change _coerce_ overloads.
9311 (__arm_vdwdupq_m): Change _coerce_ overloads.
9312 (__arm_vdwdupq_u16): Change _coerce_ overloads.
9313 (__arm_vdwdupq_u32): Change _coerce_ overloads.
9314 (__arm_vdwdupq_u8): Change _coerce_ overloads.
9315 (__arm_vstrbq): Change _coerce_ overloads.
9316 (__arm_vstrbq_p): Change _coerce_ overloads.
9317 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
9318 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
9319 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
9320 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
9321 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
9322
9323 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
9324
9325 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
9326 scalar constant.
9327
9328 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
9329
9330 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
9331 (__arm_vadcq_u32): Likewise.
9332 (__arm_vadcq_m_s32): Likewise.
9333 (__arm_vadcq_m_u32): Likewise.
9334 (__arm_vsbcq_s32): Likewise.
9335 (__arm_vsbcq_u32): Likewise.
9336 (__arm_vsbcq_m_s32): Likewise.
9337 (__arm_vsbcq_m_u32): Likewise.
9338 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
9339
9340 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
9341
9342 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
9343 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
9344 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
9345 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
9346 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
9347 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
9348 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
9349 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
9350 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
9351 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
9352 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
9353 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
9354 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
9355 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
9356 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
9357 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
9358 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
9359 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
9360 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
9361 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
9362 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
9363 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
9364 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
9365 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
9366 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
9367 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
9368 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
9369 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
9370 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
9371 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
9372 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
9373 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
9374 (mve_vorrq_m_f<mode>)
9375 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
9376 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
9377 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
9378 capitalization in the emitted asm.
9379
9380 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
9381
9382 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
9383 predicates.md.
9384 (Ri): Move constraint definition from predicates.md.
9385 (Rl): Define new constraint.
9386 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
9387 missing constraint.
9388 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
9389 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
9390 op 2. Fix asm output spacing.
9391 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
9392 * config/arm/predicates.md (Ri) Move constraint to constraints.md
9393 (mve_vldrd_immediate): Move it from
9394 constraints.md.
9395 (mve_vstrw_immediate): New predicate.
9396
9397 2023-05-18 Pan Li <pan2.li@intel.com>
9398 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9399 Kito Cheng <kito.cheng@sifive.com>
9400 Richard Biener <rguenther@suse.de>
9401 Richard Sandiford <richard.sandiford@arm.com>
9402
9403 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
9404 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
9405 (struct table_elt): Extend machine_mode to 16 bits.
9406 (struct set): Ditto.
9407 * genmodes.cc (emit_mode_wider): Extend type from char to short.
9408 (emit_mode_complex): Ditto.
9409 (emit_mode_inner): Ditto.
9410 (emit_class_narrowest_mode): Ditto.
9411 * genopinit.cc (main): Extend the machine_mode limit.
9412 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
9413 re-ordered the struct fields for padding.
9414 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
9415 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
9416 (get_mode_alignment): Extend type from char to short.
9417 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
9418 removed the ATTRIBUTE_PACKED.
9419 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
9420 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
9421 m_kind to 2 bits and remove m_spare.
9422 * rtl.h (RTX_CODE_BITSIZE): New macro.
9423 (struct rtx_def): Swap both the bit size and location between the
9424 rtx_code and the machine_mode.
9425 (subreg_shape::unique_id): Extend the machine_mode limit.
9426 * rtlanal.h: Extend machine_mode to 16 bits.
9427 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
9428 bits and re-ordered the struct fields for padding.
9429 (struct tree_decl_common): Extend machine_mode to 16 bits.
9430
9431 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
9432
9433 * genrecog.cc (print_nonbool_test): Fix type error of
9434 switch (SUBREG_BYTE (op))'.
9435
9436 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
9437
9438 * common/config/riscv/riscv-common.cc: Remove
9439 trailing spaces on lines.
9440 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
9441 * config/riscv/riscv.h (enum reg_class): Likewise.
9442 * config/riscv/riscv.md: Likewise.
9443
9444 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
9445
9446 * config/pa/pa.md (clear_cache): New.
9447
9448 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
9449
9450 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
9451 parenthesis. Fix misnamed index entry.
9452 <concept>: Fix misnamed index entry.
9453
9454 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
9455
9456 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
9457 combined from ...
9458 (*<optab>si3_mask, *<optab>di3_mask): Here.
9459 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
9460 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
9461 pattern.
9462 (*<bitmanip_optab>si3_sext_mask): Likewise.
9463 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
9464 and const_di_mask_operand.
9465 (bitmanip_rotate): New iterator.
9466 (bitmanip_optab): Add rotates.
9467 * config/riscv/predicates.md (const_si_mask_operand): Renamed
9468 from const31_operand. Generalize to handle more mask constants.
9469 (const_di_mask_operand): Similarly.
9470
9471 2023-05-17 Jakub Jelinek <jakub@redhat.com>
9472
9473 PR c++/109884
9474 * config/i386/i386-builtin-types.def (FLOAT128): Use
9475 float128t_type_node rather than float128_type_node.
9476
9477 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
9478
9479 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
9480 FP_CONTRACT_FAST (no functional change).
9481
9482 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
9483
9484 * config/i386/i386.cc (ix86_multiplication_cost): Correct
9485 calcuation of integer vector mode costs to reflect generated
9486 instruction sequences of different integer vector modes and
9487 different target ABIs.
9488
9489 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9490
9491 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
9492 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
9493 (riscv_mode_needed): Ditto.
9494 (riscv_mode_after): Ditto.
9495 (riscv_mode_entry): Ditto.
9496 (riscv_mode_exit): Ditto.
9497 (riscv_mode_priority): Ditto.
9498 (TARGET_MODE_EMIT): New target hook.
9499 (TARGET_MODE_NEEDED): Ditto.
9500 (TARGET_MODE_AFTER): Ditto.
9501 (TARGET_MODE_ENTRY): Ditto.
9502 (TARGET_MODE_EXIT): Ditto.
9503 (TARGET_MODE_PRIORITY): Ditto.
9504 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
9505 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
9506 * config/riscv/riscv.md: Add csrwvxrm.
9507 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
9508 (vxrmsi): New pattern.
9509
9510 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9511
9512 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
9513 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
9514 (struct narrow_alu_def): Ditto.
9515 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
9516 (function_expander::use_exact_insn): Ditto.
9517 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
9518 (function_base::has_rounding_mode_operand_p): New function.
9519
9520 2023-05-17 Andrew Pinski <apinski@marvell.com>
9521
9522 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
9523 against 0 instead of calling integer_zerop.
9524
9525 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9526
9527 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
9528 (DEF_RVV_VXRM_ENUM): New macro.
9529 (handle_pragma_vector): Add vxrm enum register.
9530 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
9531 (RNU): Ditto.
9532 (RNE): Ditto.
9533 (RDN): Ditto.
9534 (ROD): Ditto.
9535
9536 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
9537
9538 * value-range.h (Value_Range::operator=): New.
9539
9540 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
9541
9542 * value-range.cc (vrange::operator=): Add a stub to copy
9543 unsupported ranges.
9544 * value-range.h (is_a <unsupported_range>): New.
9545 (Value_Range::operator=): Support copying unsupported ranges.
9546
9547 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
9548
9549 * data-streamer-in.cc (streamer_read_real_value): New.
9550 (streamer_read_value_range): New.
9551 * data-streamer-out.cc (streamer_write_real_value): New.
9552 (streamer_write_vrange): New.
9553 * data-streamer.h (streamer_write_vrange): New.
9554 (streamer_read_value_range): New.
9555
9556 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
9557
9558 PR c++/109532
9559 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
9560 is ignored for a fixed underlying type.
9561 (C++ Dialect Options): Likewise for -fstrict-enums.
9562
9563 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
9564
9565 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
9566 special case.
9567
9568 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9569
9570 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
9571 New.
9572 (s390_atomic_align_for_mode): New.
9573
9574 2023-05-17 Jakub Jelinek <jakub@redhat.com>
9575
9576 * wide-int.cc (wi::from_array): Add missing closing paren in function
9577 comment.
9578
9579 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
9580
9581 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
9582 suggested unroll factor once the previous analysis fails.
9583
9584 2023-05-17 Pan Li <pan2.li@intel.com>
9585
9586 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
9587 macro.
9588 (main): Add bool1 to the type indexer.
9589 * config/riscv/riscv-vector-builtins-functions.def
9590 (vreinterpret): Register vbool1 interpret function.
9591 * config/riscv/riscv-vector-builtins-types.def
9592 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9593 (vint8m1_t): Add the type to bool1_interpret_ops.
9594 (vint16m1_t): Ditto.
9595 (vint32m1_t): Ditto.
9596 (vint64m1_t): Ditto.
9597 (vuint8m1_t): Ditto.
9598 (vuint16m1_t): Ditto.
9599 (vuint32m1_t): Ditto.
9600 (vuint64m1_t): Ditto.
9601 * config/riscv/riscv-vector-builtins.cc
9602 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9603 (required_extensions_p): Add bool1 interpret case.
9604 * config/riscv/riscv-vector-builtins.def
9605 (bool1_interpret): Add bool1 interpret to base type.
9606 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
9607 with VB dest for vreinterpret.
9608
9609 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
9610
9611 PR target/106708
9612 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
9613 constants through "lis; xoris".
9614
9615 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
9616
9617 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
9618 default rs6000 target pass for O2 and above.
9619 * doc/invoke.texi: Document -free
9620
9621 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
9622
9623 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
9624 Fix wrong select_kind...
9625
9626 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9627
9628 * config/s390/s390-protos.h (s390_expand_setmem): Change
9629 function signature.
9630 * config/s390/s390.cc (s390_expand_setmem): For memset's less
9631 than or equal to 256 byte do not perform a libc call.
9632 * config/s390/s390.md: Change expander into a version which
9633 takes 8 operands.
9634
9635 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9636
9637 * config/s390/s390-protos.h (s390_expand_movmem): New.
9638 * config/s390/s390.cc (s390_expand_movmem): New.
9639 * config/s390/s390.md (movmem<mode>): New.
9640 (*mvcrl): New.
9641 (mvcrl): New.
9642
9643 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9644
9645 * config/s390/s390-protos.h (s390_expand_cpymem): Change
9646 function signature.
9647 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
9648 than or equal to 256 byte do not perform a libc call.
9649 (s390_expand_insv): Adapt new function signature of
9650 s390_expand_cpymem.
9651 * config/s390/s390.md: Change expander into a version which
9652 takes 8 operands.
9653
9654 2023-05-16 Andrew Pinski <apinski@marvell.com>
9655
9656 PR tree-optimization/109424
9657 * match.pd: Add patterns for min/max of zero_one_valued
9658 values to `&`/`|`.
9659
9660 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9661
9662 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
9663 * config/riscv/riscv-vector-builtins.cc
9664 (function_expander::use_ternop_insn): Add default rounding mode.
9665 (function_expander::use_widen_ternop_insn): Ditto.
9666 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
9667 (riscv_hard_regno_mode_ok): Ditto.
9668 (riscv_conditional_register_usage): Ditto.
9669 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9670 (FRM_REG_P): Ditto.
9671 (RISCV_DWARF_FRM): Ditto.
9672 * config/riscv/riscv.md: Ditto.
9673 * config/riscv/vector-iterators.md: split no frm and has frm operations.
9674 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
9675 (@pred_<optab><mode>): Ditto.
9676
9677 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
9678
9679 PR tree-optimization/109695
9680 * value-range.cc (irange::operator=): Resize range.
9681 (irange::union_): Same.
9682 (irange::intersect): Same.
9683 (irange::invert): Same.
9684 (int_range_max): Default to 3 sub-ranges and resize as needed.
9685 * value-range.h (irange::maybe_resize): New.
9686 (~int_range): New.
9687 (int_range::int_range): Adjust for resizing.
9688 (int_range::operator=): Same.
9689
9690 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
9691
9692 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
9693 range copying
9694 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
9695 when range changed.
9696
9697 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9698
9699 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
9700 * config/riscv/riscv-vector-builtins.cc
9701 (function_expander::use_exact_insn): Add default rounding mode operand.
9702 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
9703 (riscv_hard_regno_mode_ok): Ditto.
9704 (riscv_conditional_register_usage): Ditto.
9705 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9706 (VXRM_REG_P): Ditto.
9707 (RISCV_DWARF_VXRM): Ditto.
9708 * config/riscv/riscv.md: Ditto.
9709 * config/riscv/vector.md: Ditto
9710
9711 2023-05-15 Pan Li <pan2.li@intel.com>
9712
9713 * optabs.cc (maybe_gen_insn): Add case to generate instruction
9714 that has 11 operands.
9715
9716 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9717
9718 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
9719 logic for vector modes.
9720
9721 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9722
9723 PR target/99195
9724 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
9725 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
9726 (aarch64_cmtst<mode>): Rename to...
9727 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
9728 (*aarch64_cmtst_same_<mode>): Rename to...
9729 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
9730 (*aarch64_cmtstdi): Rename to...
9731 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
9732 (aarch64_fac<optab><mode>): Rename to...
9733 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
9734
9735 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9736
9737 PR target/99195
9738 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
9739 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
9740
9741 2023-05-15 Pan Li <pan2.li@intel.com>
9742 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9743 kito-cheng <kito.cheng@sifive.com>
9744
9745 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
9746 deciding the mode is constant or not.
9747 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
9748
9749 2023-05-15 Richard Biener <rguenther@suse.de>
9750
9751 PR tree-optimization/109848
9752 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
9753 TARGET_MEM_REF address preparation before the store, not
9754 before the CTOR.
9755
9756 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9757
9758 * config/riscv/riscv.cc
9759 (riscv_vectorize_preferred_vector_alignment): New function.
9760 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
9761
9762 2023-05-14 Andrew Pinski <apinski@marvell.com>
9763
9764 PR tree-optimization/109829
9765 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
9766
9767 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
9768
9769 PR target/109807
9770 * config/i386/i386.cc: Revert the 2023-05-11 change.
9771 (ix86_widen_mult_cost): Return high value instead of
9772 ICEing for unsupported modes.
9773
9774 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
9775
9776 * config/i386/i386.cc (x86_function_profiler): Take
9777 ix86_direct_extern_access into account when generating calls
9778 to __fentry__()
9779
9780 2023-05-14 Pan Li <pan2.li@intel.com>
9781
9782 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
9783 Refactor the or pattern to switch cases.
9784
9785 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
9786
9787 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
9788 aarch64_expand_vector_init to this, and remove interleaving case.
9789 Recursively call aarch64_expand_vector_init_fallback, instead of
9790 aarch64_expand_vector_init.
9791 (aarch64_unzip_vector_init): New function.
9792 (aarch64_expand_vector_init): Likewise.
9793
9794 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
9795
9796 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
9797 Pull out function call from the gcc_assert.
9798
9799 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
9800
9801 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
9802 (policy_to_str): New.
9803 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
9804
9805 2023-05-13 Andrew Pinski <apinski@marvell.com>
9806
9807 PR tree-optimization/109834
9808 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
9809 (popcount(rotate(x,y))->popcount(x)): Likewise.
9810
9811 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
9812
9813 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
9814 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
9815 gen_extend_insn to generate zero/sign extension instructions.
9816 Fix comments.
9817 (ix86_expand_vecop_qihi): Initialize interleave functions
9818 for MULT code only. Fix comments.
9819
9820 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
9821
9822 PR target/109797
9823 * config/i386/mmx.md (mulv2si3): Remove expander.
9824 (mulv2si3): Rename insn pattern from *mulv2si.
9825
9826 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
9827
9828 PR libstdc++/109816
9829 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
9830 '!lto_stream_offload_p'.
9831
9832 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
9833 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9834
9835 PR target/109743
9836 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
9837 (local_avl_compatible_p): New.
9838 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
9839 for LCM, rewrite as a backward algorithm.
9840 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
9841 interface, handle a BB at once.
9842
9843 2023-05-12 Richard Biener <rguenther@suse.de>
9844
9845 PR tree-optimization/64731
9846 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
9847 handle TARGET_MEM_REF destinations of stores from vector
9848 CTORs.
9849
9850 2023-05-12 Richard Biener <rguenther@suse.de>
9851
9852 PR tree-optimization/109791
9853 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
9854 New pattern.
9855 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
9856 Likewise.
9857
9858 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9859
9860 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
9861 * config/arm/arm-mve-builtins-base.def (vsriq): New.
9862 * config/arm/arm-mve-builtins-base.h (vsriq): New.
9863 * config/arm/arm-mve-builtins.cc
9864 (function_instance::has_inactive_argument): Handle vsriq.
9865 * config/arm/arm_mve.h (vsriq): Remove.
9866 (vsriq_m): Remove.
9867 (vsriq_n_u8): Remove.
9868 (vsriq_n_s8): Remove.
9869 (vsriq_n_u16): Remove.
9870 (vsriq_n_s16): Remove.
9871 (vsriq_n_u32): Remove.
9872 (vsriq_n_s32): Remove.
9873 (vsriq_m_n_s8): Remove.
9874 (vsriq_m_n_u8): Remove.
9875 (vsriq_m_n_s16): Remove.
9876 (vsriq_m_n_u16): Remove.
9877 (vsriq_m_n_s32): Remove.
9878 (vsriq_m_n_u32): Remove.
9879 (__arm_vsriq_n_u8): Remove.
9880 (__arm_vsriq_n_s8): Remove.
9881 (__arm_vsriq_n_u16): Remove.
9882 (__arm_vsriq_n_s16): Remove.
9883 (__arm_vsriq_n_u32): Remove.
9884 (__arm_vsriq_n_s32): Remove.
9885 (__arm_vsriq_m_n_s8): Remove.
9886 (__arm_vsriq_m_n_u8): Remove.
9887 (__arm_vsriq_m_n_s16): Remove.
9888 (__arm_vsriq_m_n_u16): Remove.
9889 (__arm_vsriq_m_n_s32): Remove.
9890 (__arm_vsriq_m_n_u32): Remove.
9891 (__arm_vsriq): Remove.
9892 (__arm_vsriq_m): Remove.
9893
9894 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9895
9896 * config/arm/iterators.md (mve_insn): Add vsri.
9897 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
9898 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
9899 (mve_vsriq_m_n_<supf><mode>): Rename into ...
9900 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9901
9902 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9903
9904 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
9905 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
9906
9907 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9908
9909 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
9910 * config/arm/arm-mve-builtins-base.def (vsliq): New.
9911 * config/arm/arm-mve-builtins-base.h (vsliq): New.
9912 * config/arm/arm-mve-builtins.cc
9913 (function_instance::has_inactive_argument): Handle vsliq.
9914 * config/arm/arm_mve.h (vsliq): Remove.
9915 (vsliq_m): Remove.
9916 (vsliq_n_u8): Remove.
9917 (vsliq_n_s8): Remove.
9918 (vsliq_n_u16): Remove.
9919 (vsliq_n_s16): Remove.
9920 (vsliq_n_u32): Remove.
9921 (vsliq_n_s32): Remove.
9922 (vsliq_m_n_s8): Remove.
9923 (vsliq_m_n_s32): Remove.
9924 (vsliq_m_n_s16): Remove.
9925 (vsliq_m_n_u8): Remove.
9926 (vsliq_m_n_u32): Remove.
9927 (vsliq_m_n_u16): Remove.
9928 (__arm_vsliq_n_u8): Remove.
9929 (__arm_vsliq_n_s8): Remove.
9930 (__arm_vsliq_n_u16): Remove.
9931 (__arm_vsliq_n_s16): Remove.
9932 (__arm_vsliq_n_u32): Remove.
9933 (__arm_vsliq_n_s32): Remove.
9934 (__arm_vsliq_m_n_s8): Remove.
9935 (__arm_vsliq_m_n_s32): Remove.
9936 (__arm_vsliq_m_n_s16): Remove.
9937 (__arm_vsliq_m_n_u8): Remove.
9938 (__arm_vsliq_m_n_u32): Remove.
9939 (__arm_vsliq_m_n_u16): Remove.
9940 (__arm_vsliq): Remove.
9941 (__arm_vsliq_m): Remove.
9942
9943 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9944
9945 * config/arm/iterators.md (mve_insn>): Add vsli.
9946 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
9947 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9948 (mve_vsliq_m_n_<supf><mode>): Rename into ...
9949 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9950
9951 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9952
9953 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
9954 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
9955
9956 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9957
9958 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
9959 * config/arm/arm-mve-builtins-base.def (vpselq): New.
9960 * config/arm/arm-mve-builtins-base.h (vpselq): New.
9961 * config/arm/arm_mve.h (vpselq): Remove.
9962 (vpselq_u8): Remove.
9963 (vpselq_s8): Remove.
9964 (vpselq_u16): Remove.
9965 (vpselq_s16): Remove.
9966 (vpselq_u32): Remove.
9967 (vpselq_s32): Remove.
9968 (vpselq_u64): Remove.
9969 (vpselq_s64): Remove.
9970 (vpselq_f16): Remove.
9971 (vpselq_f32): Remove.
9972 (__arm_vpselq_u8): Remove.
9973 (__arm_vpselq_s8): Remove.
9974 (__arm_vpselq_u16): Remove.
9975 (__arm_vpselq_s16): Remove.
9976 (__arm_vpselq_u32): Remove.
9977 (__arm_vpselq_s32): Remove.
9978 (__arm_vpselq_u64): Remove.
9979 (__arm_vpselq_s64): Remove.
9980 (__arm_vpselq_f16): Remove.
9981 (__arm_vpselq_f32): Remove.
9982 (__arm_vpselq): Remove.
9983
9984 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9985
9986 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
9987 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
9988
9989 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9990
9991 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
9992 gen_mve_vpselq.
9993 * config/arm/iterators.md (MVE_VPSELQ_F): New.
9994 (mve_insn): Add vpsel.
9995 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
9996 (@mve_<mve_insn>q_<supf><mode>): ... this.
9997 (@mve_vpselq_f<mode>): Rename into ...
9998 (@mve_<mve_insn>q_f<mode>): ... this.
9999
10000 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10001
10002 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
10003 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
10004 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
10005 * config/arm/arm-mve-builtins.cc
10006 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
10007 vfmsq.
10008 * config/arm/arm_mve.h (vfmaq): Remove.
10009 (vfmasq): Remove.
10010 (vfmsq): Remove.
10011 (vfmaq_m): Remove.
10012 (vfmasq_m): Remove.
10013 (vfmsq_m): Remove.
10014 (vfmaq_f16): Remove.
10015 (vfmaq_n_f16): Remove.
10016 (vfmasq_n_f16): Remove.
10017 (vfmsq_f16): Remove.
10018 (vfmaq_f32): Remove.
10019 (vfmaq_n_f32): Remove.
10020 (vfmasq_n_f32): Remove.
10021 (vfmsq_f32): Remove.
10022 (vfmaq_m_f32): Remove.
10023 (vfmaq_m_f16): Remove.
10024 (vfmaq_m_n_f32): Remove.
10025 (vfmaq_m_n_f16): Remove.
10026 (vfmasq_m_n_f32): Remove.
10027 (vfmasq_m_n_f16): Remove.
10028 (vfmsq_m_f32): Remove.
10029 (vfmsq_m_f16): Remove.
10030 (__arm_vfmaq_f16): Remove.
10031 (__arm_vfmaq_n_f16): Remove.
10032 (__arm_vfmasq_n_f16): Remove.
10033 (__arm_vfmsq_f16): Remove.
10034 (__arm_vfmaq_f32): Remove.
10035 (__arm_vfmaq_n_f32): Remove.
10036 (__arm_vfmasq_n_f32): Remove.
10037 (__arm_vfmsq_f32): Remove.
10038 (__arm_vfmaq_m_f32): Remove.
10039 (__arm_vfmaq_m_f16): Remove.
10040 (__arm_vfmaq_m_n_f32): Remove.
10041 (__arm_vfmaq_m_n_f16): Remove.
10042 (__arm_vfmasq_m_n_f32): Remove.
10043 (__arm_vfmasq_m_n_f16): Remove.
10044 (__arm_vfmsq_m_f32): Remove.
10045 (__arm_vfmsq_m_f16): Remove.
10046 (__arm_vfmaq): Remove.
10047 (__arm_vfmasq): Remove.
10048 (__arm_vfmsq): Remove.
10049 (__arm_vfmaq_m): Remove.
10050 (__arm_vfmasq_m): Remove.
10051 (__arm_vfmsq_m): Remove.
10052
10053 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10054
10055 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
10056 VFMSQ_M_F.
10057 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
10058 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
10059 (mve_insn): Add vfma, vfmas, vfms.
10060 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
10061 into ...
10062 (@mve_<mve_insn>q_f<mode>): ... this.
10063 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
10064 (@mve_<mve_insn>q_n_f<mode>): ... this.
10065 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
10066 @mve_<mve_insn>q_m_f<mode>.
10067 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
10068 @mve_<mve_insn>q_m_n_f<mode>.
10069
10070 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10071
10072 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
10073 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
10074
10075 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10076
10077 * config/arm/arm-mve-builtins-base.cc
10078 (FUNCTION_WITH_RTX_M_N_NO_F): New.
10079 (vmvnq): New.
10080 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
10081 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
10082 * config/arm/arm_mve.h (vmvnq): Remove.
10083 (vmvnq_m): Remove.
10084 (vmvnq_x): Remove.
10085 (vmvnq_s8): Remove.
10086 (vmvnq_s16): Remove.
10087 (vmvnq_s32): Remove.
10088 (vmvnq_n_s16): Remove.
10089 (vmvnq_n_s32): Remove.
10090 (vmvnq_u8): Remove.
10091 (vmvnq_u16): Remove.
10092 (vmvnq_u32): Remove.
10093 (vmvnq_n_u16): Remove.
10094 (vmvnq_n_u32): Remove.
10095 (vmvnq_m_u8): Remove.
10096 (vmvnq_m_s8): Remove.
10097 (vmvnq_m_u16): Remove.
10098 (vmvnq_m_s16): Remove.
10099 (vmvnq_m_u32): Remove.
10100 (vmvnq_m_s32): Remove.
10101 (vmvnq_m_n_s16): Remove.
10102 (vmvnq_m_n_u16): Remove.
10103 (vmvnq_m_n_s32): Remove.
10104 (vmvnq_m_n_u32): Remove.
10105 (vmvnq_x_s8): Remove.
10106 (vmvnq_x_s16): Remove.
10107 (vmvnq_x_s32): Remove.
10108 (vmvnq_x_u8): Remove.
10109 (vmvnq_x_u16): Remove.
10110 (vmvnq_x_u32): Remove.
10111 (vmvnq_x_n_s16): Remove.
10112 (vmvnq_x_n_s32): Remove.
10113 (vmvnq_x_n_u16): Remove.
10114 (vmvnq_x_n_u32): Remove.
10115 (__arm_vmvnq_s8): Remove.
10116 (__arm_vmvnq_s16): Remove.
10117 (__arm_vmvnq_s32): Remove.
10118 (__arm_vmvnq_n_s16): Remove.
10119 (__arm_vmvnq_n_s32): Remove.
10120 (__arm_vmvnq_u8): Remove.
10121 (__arm_vmvnq_u16): Remove.
10122 (__arm_vmvnq_u32): Remove.
10123 (__arm_vmvnq_n_u16): Remove.
10124 (__arm_vmvnq_n_u32): Remove.
10125 (__arm_vmvnq_m_u8): Remove.
10126 (__arm_vmvnq_m_s8): Remove.
10127 (__arm_vmvnq_m_u16): Remove.
10128 (__arm_vmvnq_m_s16): Remove.
10129 (__arm_vmvnq_m_u32): Remove.
10130 (__arm_vmvnq_m_s32): Remove.
10131 (__arm_vmvnq_m_n_s16): Remove.
10132 (__arm_vmvnq_m_n_u16): Remove.
10133 (__arm_vmvnq_m_n_s32): Remove.
10134 (__arm_vmvnq_m_n_u32): Remove.
10135 (__arm_vmvnq_x_s8): Remove.
10136 (__arm_vmvnq_x_s16): Remove.
10137 (__arm_vmvnq_x_s32): Remove.
10138 (__arm_vmvnq_x_u8): Remove.
10139 (__arm_vmvnq_x_u16): Remove.
10140 (__arm_vmvnq_x_u32): Remove.
10141 (__arm_vmvnq_x_n_s16): Remove.
10142 (__arm_vmvnq_x_n_s32): Remove.
10143 (__arm_vmvnq_x_n_u16): Remove.
10144 (__arm_vmvnq_x_n_u32): Remove.
10145 (__arm_vmvnq): Remove.
10146 (__arm_vmvnq_m): Remove.
10147 (__arm_vmvnq_x): Remove.
10148
10149 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10150
10151 * config/arm/iterators.md (mve_insn): Add vmvn.
10152 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
10153 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10154 (mve_vmvnq_m_<supf><mode>): Rename into ...
10155 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10156 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
10157 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10158
10159 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10160
10161 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
10162 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
10163
10164 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10165
10166 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
10167 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
10168 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
10169 * config/arm/arm_mve.h (vbrsrq): Remove.
10170 (vbrsrq_m): Remove.
10171 (vbrsrq_x): Remove.
10172 (vbrsrq_n_f16): Remove.
10173 (vbrsrq_n_f32): Remove.
10174 (vbrsrq_n_u8): Remove.
10175 (vbrsrq_n_s8): Remove.
10176 (vbrsrq_n_u16): Remove.
10177 (vbrsrq_n_s16): Remove.
10178 (vbrsrq_n_u32): Remove.
10179 (vbrsrq_n_s32): Remove.
10180 (vbrsrq_m_n_s8): Remove.
10181 (vbrsrq_m_n_s32): Remove.
10182 (vbrsrq_m_n_s16): Remove.
10183 (vbrsrq_m_n_u8): Remove.
10184 (vbrsrq_m_n_u32): Remove.
10185 (vbrsrq_m_n_u16): Remove.
10186 (vbrsrq_m_n_f32): Remove.
10187 (vbrsrq_m_n_f16): Remove.
10188 (vbrsrq_x_n_s8): Remove.
10189 (vbrsrq_x_n_s16): Remove.
10190 (vbrsrq_x_n_s32): Remove.
10191 (vbrsrq_x_n_u8): Remove.
10192 (vbrsrq_x_n_u16): Remove.
10193 (vbrsrq_x_n_u32): Remove.
10194 (vbrsrq_x_n_f16): Remove.
10195 (vbrsrq_x_n_f32): Remove.
10196 (__arm_vbrsrq_n_u8): Remove.
10197 (__arm_vbrsrq_n_s8): Remove.
10198 (__arm_vbrsrq_n_u16): Remove.
10199 (__arm_vbrsrq_n_s16): Remove.
10200 (__arm_vbrsrq_n_u32): Remove.
10201 (__arm_vbrsrq_n_s32): Remove.
10202 (__arm_vbrsrq_m_n_s8): Remove.
10203 (__arm_vbrsrq_m_n_s32): Remove.
10204 (__arm_vbrsrq_m_n_s16): Remove.
10205 (__arm_vbrsrq_m_n_u8): Remove.
10206 (__arm_vbrsrq_m_n_u32): Remove.
10207 (__arm_vbrsrq_m_n_u16): Remove.
10208 (__arm_vbrsrq_x_n_s8): Remove.
10209 (__arm_vbrsrq_x_n_s16): Remove.
10210 (__arm_vbrsrq_x_n_s32): Remove.
10211 (__arm_vbrsrq_x_n_u8): Remove.
10212 (__arm_vbrsrq_x_n_u16): Remove.
10213 (__arm_vbrsrq_x_n_u32): Remove.
10214 (__arm_vbrsrq_n_f16): Remove.
10215 (__arm_vbrsrq_n_f32): Remove.
10216 (__arm_vbrsrq_m_n_f32): Remove.
10217 (__arm_vbrsrq_m_n_f16): Remove.
10218 (__arm_vbrsrq_x_n_f16): Remove.
10219 (__arm_vbrsrq_x_n_f32): Remove.
10220 (__arm_vbrsrq): Remove.
10221 (__arm_vbrsrq_m): Remove.
10222 (__arm_vbrsrq_x): Remove.
10223
10224 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10225
10226 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
10227 (mve_insn): Add vbrsr.
10228 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
10229 (@mve_<mve_insn>q_n_f<mode>): ... this.
10230 (mve_vbrsrq_n_<supf><mode>): Rename into ...
10231 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10232 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
10233 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10234 (mve_vbrsrq_m_n_f<mode>): Rename into ...
10235 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10236
10237 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10238
10239 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
10240 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
10241
10242 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10243
10244 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
10245 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
10246 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
10247 * config/arm/arm_mve.h (vqshluq): Remove.
10248 (vqshluq_m): Remove.
10249 (vqshluq_n_s8): Remove.
10250 (vqshluq_n_s16): Remove.
10251 (vqshluq_n_s32): Remove.
10252 (vqshluq_m_n_s8): Remove.
10253 (vqshluq_m_n_s16): Remove.
10254 (vqshluq_m_n_s32): Remove.
10255 (__arm_vqshluq_n_s8): Remove.
10256 (__arm_vqshluq_n_s16): Remove.
10257 (__arm_vqshluq_n_s32): Remove.
10258 (__arm_vqshluq_m_n_s8): Remove.
10259 (__arm_vqshluq_m_n_s16): Remove.
10260 (__arm_vqshluq_m_n_s32): Remove.
10261 (__arm_vqshluq): Remove.
10262 (__arm_vqshluq_m): Remove.
10263
10264 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10265
10266 * config/arm/iterators.md (mve_insn): Add vqshlu.
10267 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
10268 (VQSHLUQ_M_N, VQSHLUQ_N): New.
10269 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
10270 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10271 (mve_vqshluq_m_n_s<mode>): Change name into ...
10272 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10273
10274 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10275
10276 * config/arm/arm-mve-builtins-shapes.cc
10277 (binary_lshift_unsigned): New.
10278 * config/arm/arm-mve-builtins-shapes.h
10279 (binary_lshift_unsigned): New.
10280
10281 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10282
10283 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
10284 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10285 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
10286 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10287 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
10288 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10289 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
10290 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
10291 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
10292 (vrmlaldavhaxq): Remove.
10293 (vrmlsldavhaq): Remove.
10294 (vrmlsldavhaxq): Remove.
10295 (vrmlaldavhaq_p): Remove.
10296 (vrmlaldavhaxq_p): Remove.
10297 (vrmlsldavhaq_p): Remove.
10298 (vrmlsldavhaxq_p): Remove.
10299 (vrmlaldavhaq_s32): Remove.
10300 (vrmlaldavhaq_u32): Remove.
10301 (vrmlaldavhaxq_s32): Remove.
10302 (vrmlsldavhaq_s32): Remove.
10303 (vrmlsldavhaxq_s32): Remove.
10304 (vrmlaldavhaq_p_s32): Remove.
10305 (vrmlaldavhaq_p_u32): Remove.
10306 (vrmlaldavhaxq_p_s32): Remove.
10307 (vrmlsldavhaq_p_s32): Remove.
10308 (vrmlsldavhaxq_p_s32): Remove.
10309 (__arm_vrmlaldavhaq_s32): Remove.
10310 (__arm_vrmlaldavhaq_u32): Remove.
10311 (__arm_vrmlaldavhaxq_s32): Remove.
10312 (__arm_vrmlsldavhaq_s32): Remove.
10313 (__arm_vrmlsldavhaxq_s32): Remove.
10314 (__arm_vrmlaldavhaq_p_s32): Remove.
10315 (__arm_vrmlaldavhaq_p_u32): Remove.
10316 (__arm_vrmlaldavhaxq_p_s32): Remove.
10317 (__arm_vrmlsldavhaq_p_s32): Remove.
10318 (__arm_vrmlsldavhaxq_p_s32): Remove.
10319 (__arm_vrmlaldavhaq): Remove.
10320 (__arm_vrmlaldavhaxq): Remove.
10321 (__arm_vrmlsldavhaq): Remove.
10322 (__arm_vrmlsldavhaxq): Remove.
10323 (__arm_vrmlaldavhaq_p): Remove.
10324 (__arm_vrmlaldavhaxq_p): Remove.
10325 (__arm_vrmlsldavhaq_p): Remove.
10326 (__arm_vrmlsldavhaxq_p): Remove.
10327
10328 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10329
10330 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
10331 (MVE_VRMLxLDAVHAxQ_P): New.
10332 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
10333 vrmlsldavhax.
10334 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
10335 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
10336 VRMLALDAVHAQ_P_S.
10337 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
10338 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
10339 (mve_vrmlsldavhaq_sv4si): Merge into ...
10340 (@mve_<mve_insn>q_<supf>v4si): ... this.
10341 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
10342 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
10343 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
10344 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10345
10346 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10347
10348 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
10349 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
10350 New.
10351 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
10352 * config/arm/arm_mve.h (vqdmulltq): Remove.
10353 (vqdmullbq): Remove.
10354 (vqdmullbq_m): Remove.
10355 (vqdmulltq_m): Remove.
10356 (vqdmulltq_s16): Remove.
10357 (vqdmulltq_n_s16): Remove.
10358 (vqdmullbq_s16): Remove.
10359 (vqdmullbq_n_s16): Remove.
10360 (vqdmulltq_s32): Remove.
10361 (vqdmulltq_n_s32): Remove.
10362 (vqdmullbq_s32): Remove.
10363 (vqdmullbq_n_s32): Remove.
10364 (vqdmullbq_m_n_s32): Remove.
10365 (vqdmullbq_m_n_s16): Remove.
10366 (vqdmullbq_m_s32): Remove.
10367 (vqdmullbq_m_s16): Remove.
10368 (vqdmulltq_m_n_s32): Remove.
10369 (vqdmulltq_m_n_s16): Remove.
10370 (vqdmulltq_m_s32): Remove.
10371 (vqdmulltq_m_s16): Remove.
10372 (__arm_vqdmulltq_s16): Remove.
10373 (__arm_vqdmulltq_n_s16): Remove.
10374 (__arm_vqdmullbq_s16): Remove.
10375 (__arm_vqdmullbq_n_s16): Remove.
10376 (__arm_vqdmulltq_s32): Remove.
10377 (__arm_vqdmulltq_n_s32): Remove.
10378 (__arm_vqdmullbq_s32): Remove.
10379 (__arm_vqdmullbq_n_s32): Remove.
10380 (__arm_vqdmullbq_m_n_s32): Remove.
10381 (__arm_vqdmullbq_m_n_s16): Remove.
10382 (__arm_vqdmullbq_m_s32): Remove.
10383 (__arm_vqdmullbq_m_s16): Remove.
10384 (__arm_vqdmulltq_m_n_s32): Remove.
10385 (__arm_vqdmulltq_m_n_s16): Remove.
10386 (__arm_vqdmulltq_m_s32): Remove.
10387 (__arm_vqdmulltq_m_s16): Remove.
10388 (__arm_vqdmulltq): Remove.
10389 (__arm_vqdmullbq): Remove.
10390 (__arm_vqdmullbq_m): Remove.
10391 (__arm_vqdmulltq_m): Remove.
10392
10393 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10394
10395 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
10396 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
10397 (mve_insn): Add vqdmullb, vqdmullt.
10398 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
10399 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
10400 VQDMULLTQ_N_S.
10401 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
10402 (mve_vqdmulltq_n_s<mode>): Merge into ...
10403 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10404 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
10405 (@mve_<mve_insn>q_<supf><mode>): ... this.
10406 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
10407 ...
10408 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10409 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
10410 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10411
10412 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10413
10414 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
10415 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
10416
10417 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
10418
10419 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
10420 Drop unused parameter.
10421 (riscv_select_multilib): Ditto.
10422 (riscv_compute_multilib): Update call site of
10423 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
10424
10425 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
10426
10427 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
10428 * config/riscv/riscv-protos.h (expand_vec_init): New function.
10429 * config/riscv/riscv-v.cc (class rvv_builder): New class.
10430 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
10431 (rvv_builder::get_merged_repeating_sequence): Ditto.
10432 (expand_vector_init_insert_elems): Ditto.
10433 (expand_vec_init): Ditto.
10434 * config/riscv/vector-iterators.md: New attribute.
10435
10436 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
10437
10438 * config/rs6000/rs6000-builtins.def
10439 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
10440 to xsiexpdp_di.
10441 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
10442 xsiexpdpf to xsiexpdpf_di.
10443 * config/rs6000/vsx.md (xsiexpdp): Rename to...
10444 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
10445 replace TARGET_64BIT with TARGET_POWERPC64.
10446 (xsiexpdpf): Rename to...
10447 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
10448 replace TARGET_64BIT with TARGET_POWERPC64.
10449
10450 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
10451
10452 * config/rs6000/rs6000-builtins.def
10453 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
10454 long long.
10455 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
10456 TARGET_POWERPC64.
10457
10458 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
10459
10460 * config/rs6000/rs6000-builtins.def
10461 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
10462 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
10463 to power9 catalog.
10464 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
10465 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
10466 TARGET_64BIT check.
10467 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
10468 requirement when it has a 64-bit argument.
10469
10470 2023-05-12 Pan Li <pan2.li@intel.com>
10471 Richard Sandiford <richard.sandiford@arm.com>
10472 Richard Biener <rguenther@suse.de>
10473 Jakub Jelinek <jakub@redhat.com>
10474
10475 * mux-utils.h: Add overload operator == and != for pointer_mux.
10476 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
10477 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
10478 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
10479 (dv_as_decl): Ditto.
10480 (dv_as_opaque): Removed due to unnecessary.
10481 (struct variable_hasher): Take decl_or_value as compare_type.
10482 (variable_hasher::equal): Diito.
10483 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
10484 (dv_from_value): Ditto.
10485 (attrs_list_member): Ditto.
10486 (vars_copy): Ditto.
10487 (var_reg_decl_set): Ditto.
10488 (var_reg_delete_and_set): Ditto.
10489 (find_loc_in_1pdv): Ditto.
10490 (canonicalize_values_star): Ditto.
10491 (variable_post_merge_new_vals): Ditto.
10492 (dump_onepart_variable_differences): Ditto.
10493 (variable_different_p): Ditto.
10494 (set_slot_part): Ditto.
10495 (clobber_slot_part): Ditto.
10496 (clobber_variable_part): Ditto.
10497
10498 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
10499
10500 * match.pd: simplify vector shift + bit_and + multiply.
10501
10502 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10503
10504 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
10505 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10506 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
10507 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10508 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
10509 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10510 * config/arm/arm-mve-builtins.cc
10511 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
10512 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
10513 * config/arm/arm_mve.h (vqrdmlashq): Remove.
10514 (vqrdmlahq): Remove.
10515 (vqdmlashq): Remove.
10516 (vqdmlahq): Remove.
10517 (vmlasq): Remove.
10518 (vmlaq): Remove.
10519 (vmlaq_m): Remove.
10520 (vmlasq_m): Remove.
10521 (vqdmlashq_m): Remove.
10522 (vqdmlahq_m): Remove.
10523 (vqrdmlahq_m): Remove.
10524 (vqrdmlashq_m): Remove.
10525 (vmlasq_n_u8): Remove.
10526 (vmlaq_n_u8): Remove.
10527 (vqrdmlashq_n_s8): Remove.
10528 (vqrdmlahq_n_s8): Remove.
10529 (vqdmlahq_n_s8): Remove.
10530 (vqdmlashq_n_s8): Remove.
10531 (vmlasq_n_s8): Remove.
10532 (vmlaq_n_s8): Remove.
10533 (vmlasq_n_u16): Remove.
10534 (vmlaq_n_u16): Remove.
10535 (vqrdmlashq_n_s16): Remove.
10536 (vqrdmlahq_n_s16): Remove.
10537 (vqdmlashq_n_s16): Remove.
10538 (vqdmlahq_n_s16): Remove.
10539 (vmlasq_n_s16): Remove.
10540 (vmlaq_n_s16): Remove.
10541 (vmlasq_n_u32): Remove.
10542 (vmlaq_n_u32): Remove.
10543 (vqrdmlashq_n_s32): Remove.
10544 (vqrdmlahq_n_s32): Remove.
10545 (vqdmlashq_n_s32): Remove.
10546 (vqdmlahq_n_s32): Remove.
10547 (vmlasq_n_s32): Remove.
10548 (vmlaq_n_s32): Remove.
10549 (vmlaq_m_n_s8): Remove.
10550 (vmlaq_m_n_s32): Remove.
10551 (vmlaq_m_n_s16): Remove.
10552 (vmlaq_m_n_u8): Remove.
10553 (vmlaq_m_n_u32): Remove.
10554 (vmlaq_m_n_u16): Remove.
10555 (vmlasq_m_n_s8): Remove.
10556 (vmlasq_m_n_s32): Remove.
10557 (vmlasq_m_n_s16): Remove.
10558 (vmlasq_m_n_u8): Remove.
10559 (vmlasq_m_n_u32): Remove.
10560 (vmlasq_m_n_u16): Remove.
10561 (vqdmlashq_m_n_s8): Remove.
10562 (vqdmlashq_m_n_s32): Remove.
10563 (vqdmlashq_m_n_s16): Remove.
10564 (vqdmlahq_m_n_s8): Remove.
10565 (vqdmlahq_m_n_s32): Remove.
10566 (vqdmlahq_m_n_s16): Remove.
10567 (vqrdmlahq_m_n_s8): Remove.
10568 (vqrdmlahq_m_n_s32): Remove.
10569 (vqrdmlahq_m_n_s16): Remove.
10570 (vqrdmlashq_m_n_s8): Remove.
10571 (vqrdmlashq_m_n_s32): Remove.
10572 (vqrdmlashq_m_n_s16): Remove.
10573 (__arm_vmlasq_n_u8): Remove.
10574 (__arm_vmlaq_n_u8): Remove.
10575 (__arm_vqrdmlashq_n_s8): Remove.
10576 (__arm_vqdmlashq_n_s8): Remove.
10577 (__arm_vqrdmlahq_n_s8): Remove.
10578 (__arm_vqdmlahq_n_s8): Remove.
10579 (__arm_vmlasq_n_s8): Remove.
10580 (__arm_vmlaq_n_s8): Remove.
10581 (__arm_vmlasq_n_u16): Remove.
10582 (__arm_vmlaq_n_u16): Remove.
10583 (__arm_vqrdmlashq_n_s16): Remove.
10584 (__arm_vqdmlashq_n_s16): Remove.
10585 (__arm_vqrdmlahq_n_s16): Remove.
10586 (__arm_vqdmlahq_n_s16): Remove.
10587 (__arm_vmlasq_n_s16): Remove.
10588 (__arm_vmlaq_n_s16): Remove.
10589 (__arm_vmlasq_n_u32): Remove.
10590 (__arm_vmlaq_n_u32): Remove.
10591 (__arm_vqrdmlashq_n_s32): Remove.
10592 (__arm_vqdmlashq_n_s32): Remove.
10593 (__arm_vqrdmlahq_n_s32): Remove.
10594 (__arm_vqdmlahq_n_s32): Remove.
10595 (__arm_vmlasq_n_s32): Remove.
10596 (__arm_vmlaq_n_s32): Remove.
10597 (__arm_vmlaq_m_n_s8): Remove.
10598 (__arm_vmlaq_m_n_s32): Remove.
10599 (__arm_vmlaq_m_n_s16): Remove.
10600 (__arm_vmlaq_m_n_u8): Remove.
10601 (__arm_vmlaq_m_n_u32): Remove.
10602 (__arm_vmlaq_m_n_u16): Remove.
10603 (__arm_vmlasq_m_n_s8): Remove.
10604 (__arm_vmlasq_m_n_s32): Remove.
10605 (__arm_vmlasq_m_n_s16): Remove.
10606 (__arm_vmlasq_m_n_u8): Remove.
10607 (__arm_vmlasq_m_n_u32): Remove.
10608 (__arm_vmlasq_m_n_u16): Remove.
10609 (__arm_vqdmlahq_m_n_s8): Remove.
10610 (__arm_vqdmlahq_m_n_s32): Remove.
10611 (__arm_vqdmlahq_m_n_s16): Remove.
10612 (__arm_vqrdmlahq_m_n_s8): Remove.
10613 (__arm_vqrdmlahq_m_n_s32): Remove.
10614 (__arm_vqrdmlahq_m_n_s16): Remove.
10615 (__arm_vqrdmlashq_m_n_s8): Remove.
10616 (__arm_vqrdmlashq_m_n_s32): Remove.
10617 (__arm_vqrdmlashq_m_n_s16): Remove.
10618 (__arm_vqdmlashq_m_n_s8): Remove.
10619 (__arm_vqdmlashq_m_n_s16): Remove.
10620 (__arm_vqdmlashq_m_n_s32): Remove.
10621 (__arm_vmlasq): Remove.
10622 (__arm_vmlaq): Remove.
10623 (__arm_vqrdmlashq): Remove.
10624 (__arm_vqdmlashq): Remove.
10625 (__arm_vqrdmlahq): Remove.
10626 (__arm_vqdmlahq): Remove.
10627 (__arm_vmlaq_m): Remove.
10628 (__arm_vmlasq_m): Remove.
10629 (__arm_vqdmlahq_m): Remove.
10630 (__arm_vqrdmlahq_m): Remove.
10631 (__arm_vqrdmlashq_m): Remove.
10632 (__arm_vqdmlashq_m): Remove.
10633
10634 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10635
10636 * config/arm/iterators.md (MVE_VMLxQ_N): New.
10637 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
10638 vqrdmlash.
10639 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
10640 VQRDMLASHQ_N_S.
10641 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
10642 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
10643 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
10644 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
10645 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10646
10647 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10648
10649 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
10650 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
10651
10652 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10653
10654 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
10655 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10656 (vqrdmlsdhxq): New.
10657 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
10658 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10659 (vqrdmlsdhxq): New.
10660 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
10661 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10662 (vqrdmlsdhxq): New.
10663 * config/arm/arm-mve-builtins.cc
10664 (function_instance::has_inactive_argument): Handle vqrdmladhq,
10665 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
10666 vqdmlsdhq, vqdmlsdhxq.
10667 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
10668 (vqrdmlsdhq): Remove.
10669 (vqrdmladhxq): Remove.
10670 (vqrdmladhq): Remove.
10671 (vqdmlsdhxq): Remove.
10672 (vqdmlsdhq): Remove.
10673 (vqdmladhxq): Remove.
10674 (vqdmladhq): Remove.
10675 (vqdmladhq_m): Remove.
10676 (vqdmladhxq_m): Remove.
10677 (vqdmlsdhq_m): Remove.
10678 (vqdmlsdhxq_m): Remove.
10679 (vqrdmladhq_m): Remove.
10680 (vqrdmladhxq_m): Remove.
10681 (vqrdmlsdhq_m): Remove.
10682 (vqrdmlsdhxq_m): Remove.
10683 (vqrdmlsdhxq_s8): Remove.
10684 (vqrdmlsdhq_s8): Remove.
10685 (vqrdmladhxq_s8): Remove.
10686 (vqrdmladhq_s8): Remove.
10687 (vqdmlsdhxq_s8): Remove.
10688 (vqdmlsdhq_s8): Remove.
10689 (vqdmladhxq_s8): Remove.
10690 (vqdmladhq_s8): Remove.
10691 (vqrdmlsdhxq_s16): Remove.
10692 (vqrdmlsdhq_s16): Remove.
10693 (vqrdmladhxq_s16): Remove.
10694 (vqrdmladhq_s16): Remove.
10695 (vqdmlsdhxq_s16): Remove.
10696 (vqdmlsdhq_s16): Remove.
10697 (vqdmladhxq_s16): Remove.
10698 (vqdmladhq_s16): Remove.
10699 (vqrdmlsdhxq_s32): Remove.
10700 (vqrdmlsdhq_s32): Remove.
10701 (vqrdmladhxq_s32): Remove.
10702 (vqrdmladhq_s32): Remove.
10703 (vqdmlsdhxq_s32): Remove.
10704 (vqdmlsdhq_s32): Remove.
10705 (vqdmladhxq_s32): Remove.
10706 (vqdmladhq_s32): Remove.
10707 (vqdmladhq_m_s8): Remove.
10708 (vqdmladhq_m_s32): Remove.
10709 (vqdmladhq_m_s16): Remove.
10710 (vqdmladhxq_m_s8): Remove.
10711 (vqdmladhxq_m_s32): Remove.
10712 (vqdmladhxq_m_s16): Remove.
10713 (vqdmlsdhq_m_s8): Remove.
10714 (vqdmlsdhq_m_s32): Remove.
10715 (vqdmlsdhq_m_s16): Remove.
10716 (vqdmlsdhxq_m_s8): Remove.
10717 (vqdmlsdhxq_m_s32): Remove.
10718 (vqdmlsdhxq_m_s16): Remove.
10719 (vqrdmladhq_m_s8): Remove.
10720 (vqrdmladhq_m_s32): Remove.
10721 (vqrdmladhq_m_s16): Remove.
10722 (vqrdmladhxq_m_s8): Remove.
10723 (vqrdmladhxq_m_s32): Remove.
10724 (vqrdmladhxq_m_s16): Remove.
10725 (vqrdmlsdhq_m_s8): Remove.
10726 (vqrdmlsdhq_m_s32): Remove.
10727 (vqrdmlsdhq_m_s16): Remove.
10728 (vqrdmlsdhxq_m_s8): Remove.
10729 (vqrdmlsdhxq_m_s32): Remove.
10730 (vqrdmlsdhxq_m_s16): Remove.
10731 (__arm_vqrdmlsdhxq_s8): Remove.
10732 (__arm_vqrdmlsdhq_s8): Remove.
10733 (__arm_vqrdmladhxq_s8): Remove.
10734 (__arm_vqrdmladhq_s8): Remove.
10735 (__arm_vqdmlsdhxq_s8): Remove.
10736 (__arm_vqdmlsdhq_s8): Remove.
10737 (__arm_vqdmladhxq_s8): Remove.
10738 (__arm_vqdmladhq_s8): Remove.
10739 (__arm_vqrdmlsdhxq_s16): Remove.
10740 (__arm_vqrdmlsdhq_s16): Remove.
10741 (__arm_vqrdmladhxq_s16): Remove.
10742 (__arm_vqrdmladhq_s16): Remove.
10743 (__arm_vqdmlsdhxq_s16): Remove.
10744 (__arm_vqdmlsdhq_s16): Remove.
10745 (__arm_vqdmladhxq_s16): Remove.
10746 (__arm_vqdmladhq_s16): Remove.
10747 (__arm_vqrdmlsdhxq_s32): Remove.
10748 (__arm_vqrdmlsdhq_s32): Remove.
10749 (__arm_vqrdmladhxq_s32): Remove.
10750 (__arm_vqrdmladhq_s32): Remove.
10751 (__arm_vqdmlsdhxq_s32): Remove.
10752 (__arm_vqdmlsdhq_s32): Remove.
10753 (__arm_vqdmladhxq_s32): Remove.
10754 (__arm_vqdmladhq_s32): Remove.
10755 (__arm_vqdmladhq_m_s8): Remove.
10756 (__arm_vqdmladhq_m_s32): Remove.
10757 (__arm_vqdmladhq_m_s16): Remove.
10758 (__arm_vqdmladhxq_m_s8): Remove.
10759 (__arm_vqdmladhxq_m_s32): Remove.
10760 (__arm_vqdmladhxq_m_s16): Remove.
10761 (__arm_vqdmlsdhq_m_s8): Remove.
10762 (__arm_vqdmlsdhq_m_s32): Remove.
10763 (__arm_vqdmlsdhq_m_s16): Remove.
10764 (__arm_vqdmlsdhxq_m_s8): Remove.
10765 (__arm_vqdmlsdhxq_m_s32): Remove.
10766 (__arm_vqdmlsdhxq_m_s16): Remove.
10767 (__arm_vqrdmladhq_m_s8): Remove.
10768 (__arm_vqrdmladhq_m_s32): Remove.
10769 (__arm_vqrdmladhq_m_s16): Remove.
10770 (__arm_vqrdmladhxq_m_s8): Remove.
10771 (__arm_vqrdmladhxq_m_s32): Remove.
10772 (__arm_vqrdmladhxq_m_s16): Remove.
10773 (__arm_vqrdmlsdhq_m_s8): Remove.
10774 (__arm_vqrdmlsdhq_m_s32): Remove.
10775 (__arm_vqrdmlsdhq_m_s16): Remove.
10776 (__arm_vqrdmlsdhxq_m_s8): Remove.
10777 (__arm_vqrdmlsdhxq_m_s32): Remove.
10778 (__arm_vqrdmlsdhxq_m_s16): Remove.
10779 (__arm_vqrdmlsdhxq): Remove.
10780 (__arm_vqrdmlsdhq): Remove.
10781 (__arm_vqrdmladhxq): Remove.
10782 (__arm_vqrdmladhq): Remove.
10783 (__arm_vqdmlsdhxq): Remove.
10784 (__arm_vqdmlsdhq): Remove.
10785 (__arm_vqdmladhxq): Remove.
10786 (__arm_vqdmladhq): Remove.
10787 (__arm_vqdmladhq_m): Remove.
10788 (__arm_vqdmladhxq_m): Remove.
10789 (__arm_vqdmlsdhq_m): Remove.
10790 (__arm_vqdmlsdhxq_m): Remove.
10791 (__arm_vqrdmladhq_m): Remove.
10792 (__arm_vqrdmladhxq_m): Remove.
10793 (__arm_vqrdmlsdhq_m): Remove.
10794 (__arm_vqrdmlsdhxq_m): Remove.
10795
10796 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10797
10798 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
10799 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
10800 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
10801 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
10802 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
10803 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
10804 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
10805 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
10806 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
10807 (mve_vqdmladhq_s<mode>): Merge into ...
10808 (@mve_<mve_insn>q_<supf><mode>): ... this.
10809
10810 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10811
10812 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
10813 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
10814
10815 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10816
10817 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
10818 (vmlsldavaq, vmlsldavaxq): New.
10819 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
10820 (vmlsldavaq, vmlsldavaxq): New.
10821 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
10822 (vmlsldavaq, vmlsldavaxq): New.
10823 * config/arm/arm_mve.h (vmlaldavaq): Remove.
10824 (vmlaldavaxq): Remove.
10825 (vmlsldavaq): Remove.
10826 (vmlsldavaxq): Remove.
10827 (vmlaldavaq_p): Remove.
10828 (vmlaldavaxq_p): Remove.
10829 (vmlsldavaq_p): Remove.
10830 (vmlsldavaxq_p): Remove.
10831 (vmlaldavaq_s16): Remove.
10832 (vmlaldavaxq_s16): Remove.
10833 (vmlsldavaq_s16): Remove.
10834 (vmlsldavaxq_s16): Remove.
10835 (vmlaldavaq_u16): Remove.
10836 (vmlaldavaq_s32): Remove.
10837 (vmlaldavaxq_s32): Remove.
10838 (vmlsldavaq_s32): Remove.
10839 (vmlsldavaxq_s32): Remove.
10840 (vmlaldavaq_u32): Remove.
10841 (vmlaldavaq_p_s32): Remove.
10842 (vmlaldavaq_p_s16): Remove.
10843 (vmlaldavaq_p_u32): Remove.
10844 (vmlaldavaq_p_u16): Remove.
10845 (vmlaldavaxq_p_s32): Remove.
10846 (vmlaldavaxq_p_s16): Remove.
10847 (vmlsldavaq_p_s32): Remove.
10848 (vmlsldavaq_p_s16): Remove.
10849 (vmlsldavaxq_p_s32): Remove.
10850 (vmlsldavaxq_p_s16): Remove.
10851 (__arm_vmlaldavaq_s16): Remove.
10852 (__arm_vmlaldavaxq_s16): Remove.
10853 (__arm_vmlsldavaq_s16): Remove.
10854 (__arm_vmlsldavaxq_s16): Remove.
10855 (__arm_vmlaldavaq_u16): Remove.
10856 (__arm_vmlaldavaq_s32): Remove.
10857 (__arm_vmlaldavaxq_s32): Remove.
10858 (__arm_vmlsldavaq_s32): Remove.
10859 (__arm_vmlsldavaxq_s32): Remove.
10860 (__arm_vmlaldavaq_u32): Remove.
10861 (__arm_vmlaldavaq_p_s32): Remove.
10862 (__arm_vmlaldavaq_p_s16): Remove.
10863 (__arm_vmlaldavaq_p_u32): Remove.
10864 (__arm_vmlaldavaq_p_u16): Remove.
10865 (__arm_vmlaldavaxq_p_s32): Remove.
10866 (__arm_vmlaldavaxq_p_s16): Remove.
10867 (__arm_vmlsldavaq_p_s32): Remove.
10868 (__arm_vmlsldavaq_p_s16): Remove.
10869 (__arm_vmlsldavaxq_p_s32): Remove.
10870 (__arm_vmlsldavaxq_p_s16): Remove.
10871 (__arm_vmlaldavaq): Remove.
10872 (__arm_vmlaldavaxq): Remove.
10873 (__arm_vmlsldavaq): Remove.
10874 (__arm_vmlsldavaxq): Remove.
10875 (__arm_vmlaldavaq_p): Remove.
10876 (__arm_vmlaldavaxq_p): Remove.
10877 (__arm_vmlsldavaq_p): Remove.
10878 (__arm_vmlsldavaxq_p): Remove.
10879
10880 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10881
10882 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
10883 New.
10884 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
10885 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
10886 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
10887 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
10888 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
10889 (mve_vmlaldavaxq_s<mode>): Merge into ...
10890 (@mve_<mve_insn>q_<supf><mode>): ... this.
10891 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
10892 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
10893 ...
10894 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10895
10896 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10897
10898 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
10899 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
10900
10901 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10902
10903 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
10904 (vrmlsldavhq, vrmlsldavhxq): New.
10905 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
10906 (vrmlsldavhq, vrmlsldavhxq): New.
10907 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
10908 (vrmlsldavhq, vrmlsldavhxq): New.
10909 * config/arm/arm-mve-builtins-functions.h
10910 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
10911 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
10912 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
10913 (vrmlsldavhxq): Remove.
10914 (vrmlsldavhq): Remove.
10915 (vrmlaldavhxq): Remove.
10916 (vrmlaldavhq_p): Remove.
10917 (vrmlaldavhxq_p): Remove.
10918 (vrmlsldavhq_p): Remove.
10919 (vrmlsldavhxq_p): Remove.
10920 (vrmlaldavhq_u32): Remove.
10921 (vrmlsldavhxq_s32): Remove.
10922 (vrmlsldavhq_s32): Remove.
10923 (vrmlaldavhxq_s32): Remove.
10924 (vrmlaldavhq_s32): Remove.
10925 (vrmlaldavhq_p_s32): Remove.
10926 (vrmlaldavhxq_p_s32): Remove.
10927 (vrmlsldavhq_p_s32): Remove.
10928 (vrmlsldavhxq_p_s32): Remove.
10929 (vrmlaldavhq_p_u32): Remove.
10930 (__arm_vrmlaldavhq_u32): Remove.
10931 (__arm_vrmlsldavhxq_s32): Remove.
10932 (__arm_vrmlsldavhq_s32): Remove.
10933 (__arm_vrmlaldavhxq_s32): Remove.
10934 (__arm_vrmlaldavhq_s32): Remove.
10935 (__arm_vrmlaldavhq_p_s32): Remove.
10936 (__arm_vrmlaldavhxq_p_s32): Remove.
10937 (__arm_vrmlsldavhq_p_s32): Remove.
10938 (__arm_vrmlsldavhxq_p_s32): Remove.
10939 (__arm_vrmlaldavhq_p_u32): Remove.
10940 (__arm_vrmlaldavhq): Remove.
10941 (__arm_vrmlsldavhxq): Remove.
10942 (__arm_vrmlsldavhq): Remove.
10943 (__arm_vrmlaldavhxq): Remove.
10944 (__arm_vrmlaldavhq_p): Remove.
10945 (__arm_vrmlaldavhxq_p): Remove.
10946 (__arm_vrmlsldavhq_p): Remove.
10947 (__arm_vrmlsldavhxq_p): Remove.
10948
10949 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10950
10951 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
10952 New.
10953 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
10954 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
10955 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
10956 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
10957 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
10958 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
10959 (@mve_<mve_insn>q_<supf>v4si): ... this.
10960 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
10961 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
10962 into ...
10963 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10964
10965 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10966
10967 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
10968 (vmlsldavq, vmlsldavxq): New.
10969 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
10970 (vmlsldavq, vmlsldavxq): New.
10971 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
10972 (vmlsldavq, vmlsldavxq): New.
10973 * config/arm/arm_mve.h (vmlaldavq): Remove.
10974 (vmlsldavxq): Remove.
10975 (vmlsldavq): Remove.
10976 (vmlaldavxq): Remove.
10977 (vmlaldavq_p): Remove.
10978 (vmlaldavxq_p): Remove.
10979 (vmlsldavq_p): Remove.
10980 (vmlsldavxq_p): Remove.
10981 (vmlaldavq_u16): Remove.
10982 (vmlsldavxq_s16): Remove.
10983 (vmlsldavq_s16): Remove.
10984 (vmlaldavxq_s16): Remove.
10985 (vmlaldavq_s16): Remove.
10986 (vmlaldavq_u32): Remove.
10987 (vmlsldavxq_s32): Remove.
10988 (vmlsldavq_s32): Remove.
10989 (vmlaldavxq_s32): Remove.
10990 (vmlaldavq_s32): Remove.
10991 (vmlaldavq_p_s16): Remove.
10992 (vmlaldavxq_p_s16): Remove.
10993 (vmlsldavq_p_s16): Remove.
10994 (vmlsldavxq_p_s16): Remove.
10995 (vmlaldavq_p_u16): Remove.
10996 (vmlaldavq_p_s32): Remove.
10997 (vmlaldavxq_p_s32): Remove.
10998 (vmlsldavq_p_s32): Remove.
10999 (vmlsldavxq_p_s32): Remove.
11000 (vmlaldavq_p_u32): Remove.
11001 (__arm_vmlaldavq_u16): Remove.
11002 (__arm_vmlsldavxq_s16): Remove.
11003 (__arm_vmlsldavq_s16): Remove.
11004 (__arm_vmlaldavxq_s16): Remove.
11005 (__arm_vmlaldavq_s16): Remove.
11006 (__arm_vmlaldavq_u32): Remove.
11007 (__arm_vmlsldavxq_s32): Remove.
11008 (__arm_vmlsldavq_s32): Remove.
11009 (__arm_vmlaldavxq_s32): Remove.
11010 (__arm_vmlaldavq_s32): Remove.
11011 (__arm_vmlaldavq_p_s16): Remove.
11012 (__arm_vmlaldavxq_p_s16): Remove.
11013 (__arm_vmlsldavq_p_s16): Remove.
11014 (__arm_vmlsldavxq_p_s16): Remove.
11015 (__arm_vmlaldavq_p_u16): Remove.
11016 (__arm_vmlaldavq_p_s32): Remove.
11017 (__arm_vmlaldavxq_p_s32): Remove.
11018 (__arm_vmlsldavq_p_s32): Remove.
11019 (__arm_vmlsldavxq_p_s32): Remove.
11020 (__arm_vmlaldavq_p_u32): Remove.
11021 (__arm_vmlaldavq): Remove.
11022 (__arm_vmlsldavxq): Remove.
11023 (__arm_vmlsldavq): Remove.
11024 (__arm_vmlaldavxq): Remove.
11025 (__arm_vmlaldavq_p): Remove.
11026 (__arm_vmlaldavxq_p): Remove.
11027 (__arm_vmlsldavq_p): Remove.
11028 (__arm_vmlsldavxq_p): Remove.
11029
11030 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11031
11032 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
11033 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
11034 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
11035 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
11036 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
11037 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
11038 (mve_vmlsldavxq_s<mode>): Merge into ...
11039 (@mve_<mve_insn>q_<supf><mode>): ... this.
11040 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
11041 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
11042 ...
11043 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11044
11045 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11046
11047 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
11048 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
11049
11050 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11051
11052 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
11053 * config/arm/arm-mve-builtins-base.def (vabavq): New.
11054 * config/arm/arm-mve-builtins-base.h (vabavq): New.
11055 * config/arm/arm_mve.h (vabavq): Remove.
11056 (vabavq_p): Remove.
11057 (vabavq_s8): Remove.
11058 (vabavq_s16): Remove.
11059 (vabavq_s32): Remove.
11060 (vabavq_u8): Remove.
11061 (vabavq_u16): Remove.
11062 (vabavq_u32): Remove.
11063 (vabavq_p_s8): Remove.
11064 (vabavq_p_u8): Remove.
11065 (vabavq_p_s16): Remove.
11066 (vabavq_p_u16): Remove.
11067 (vabavq_p_s32): Remove.
11068 (vabavq_p_u32): Remove.
11069 (__arm_vabavq_s8): Remove.
11070 (__arm_vabavq_s16): Remove.
11071 (__arm_vabavq_s32): Remove.
11072 (__arm_vabavq_u8): Remove.
11073 (__arm_vabavq_u16): Remove.
11074 (__arm_vabavq_u32): Remove.
11075 (__arm_vabavq_p_s8): Remove.
11076 (__arm_vabavq_p_u8): Remove.
11077 (__arm_vabavq_p_s16): Remove.
11078 (__arm_vabavq_p_u16): Remove.
11079 (__arm_vabavq_p_s32): Remove.
11080 (__arm_vabavq_p_u32): Remove.
11081 (__arm_vabavq): Remove.
11082 (__arm_vabavq_p): Remove.
11083
11084 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11085
11086 * config/arm/iterators.md (mve_insn): Add vabav.
11087 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
11088 (@mve_<mve_insn>q_<supf><mode>): ... this,.
11089 (mve_vabavq_p_<supf><mode>): Rename into ...
11090 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
11091
11092 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11093
11094 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
11095 (vmlsdavaq, vmlsdavaxq): New.
11096 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
11097 (vmlsdavaq, vmlsdavaxq): New.
11098 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
11099 (vmlsdavaq, vmlsdavaxq): New.
11100 * config/arm/arm_mve.h (vmladavaq): Remove.
11101 (vmlsdavaxq): Remove.
11102 (vmlsdavaq): Remove.
11103 (vmladavaxq): Remove.
11104 (vmladavaq_p): Remove.
11105 (vmladavaxq_p): Remove.
11106 (vmlsdavaq_p): Remove.
11107 (vmlsdavaxq_p): Remove.
11108 (vmladavaq_u8): Remove.
11109 (vmlsdavaxq_s8): Remove.
11110 (vmlsdavaq_s8): Remove.
11111 (vmladavaxq_s8): Remove.
11112 (vmladavaq_s8): Remove.
11113 (vmladavaq_u16): Remove.
11114 (vmlsdavaxq_s16): Remove.
11115 (vmlsdavaq_s16): Remove.
11116 (vmladavaxq_s16): Remove.
11117 (vmladavaq_s16): Remove.
11118 (vmladavaq_u32): Remove.
11119 (vmlsdavaxq_s32): Remove.
11120 (vmlsdavaq_s32): Remove.
11121 (vmladavaxq_s32): Remove.
11122 (vmladavaq_s32): Remove.
11123 (vmladavaq_p_s8): Remove.
11124 (vmladavaq_p_s32): Remove.
11125 (vmladavaq_p_s16): Remove.
11126 (vmladavaq_p_u8): Remove.
11127 (vmladavaq_p_u32): Remove.
11128 (vmladavaq_p_u16): Remove.
11129 (vmladavaxq_p_s8): Remove.
11130 (vmladavaxq_p_s32): Remove.
11131 (vmladavaxq_p_s16): Remove.
11132 (vmlsdavaq_p_s8): Remove.
11133 (vmlsdavaq_p_s32): Remove.
11134 (vmlsdavaq_p_s16): Remove.
11135 (vmlsdavaxq_p_s8): Remove.
11136 (vmlsdavaxq_p_s32): Remove.
11137 (vmlsdavaxq_p_s16): Remove.
11138 (__arm_vmladavaq_u8): Remove.
11139 (__arm_vmlsdavaxq_s8): Remove.
11140 (__arm_vmlsdavaq_s8): Remove.
11141 (__arm_vmladavaxq_s8): Remove.
11142 (__arm_vmladavaq_s8): Remove.
11143 (__arm_vmladavaq_u16): Remove.
11144 (__arm_vmlsdavaxq_s16): Remove.
11145 (__arm_vmlsdavaq_s16): Remove.
11146 (__arm_vmladavaxq_s16): Remove.
11147 (__arm_vmladavaq_s16): Remove.
11148 (__arm_vmladavaq_u32): Remove.
11149 (__arm_vmlsdavaxq_s32): Remove.
11150 (__arm_vmlsdavaq_s32): Remove.
11151 (__arm_vmladavaxq_s32): Remove.
11152 (__arm_vmladavaq_s32): Remove.
11153 (__arm_vmladavaq_p_s8): Remove.
11154 (__arm_vmladavaq_p_s32): Remove.
11155 (__arm_vmladavaq_p_s16): Remove.
11156 (__arm_vmladavaq_p_u8): Remove.
11157 (__arm_vmladavaq_p_u32): Remove.
11158 (__arm_vmladavaq_p_u16): Remove.
11159 (__arm_vmladavaxq_p_s8): Remove.
11160 (__arm_vmladavaxq_p_s32): Remove.
11161 (__arm_vmladavaxq_p_s16): Remove.
11162 (__arm_vmlsdavaq_p_s8): Remove.
11163 (__arm_vmlsdavaq_p_s32): Remove.
11164 (__arm_vmlsdavaq_p_s16): Remove.
11165 (__arm_vmlsdavaxq_p_s8): Remove.
11166 (__arm_vmlsdavaxq_p_s32): Remove.
11167 (__arm_vmlsdavaxq_p_s16): Remove.
11168 (__arm_vmladavaq): Remove.
11169 (__arm_vmlsdavaxq): Remove.
11170 (__arm_vmlsdavaq): Remove.
11171 (__arm_vmladavaxq): Remove.
11172 (__arm_vmladavaq_p): Remove.
11173 (__arm_vmladavaxq_p): Remove.
11174 (__arm_vmlsdavaq_p): Remove.
11175 (__arm_vmlsdavaxq_p): Remove.
11176
11177 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11178
11179 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
11180 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
11181
11182 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11183
11184 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
11185 (vmlsdavq, vmlsdavxq): New.
11186 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
11187 (vmlsdavq, vmlsdavxq): New.
11188 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
11189 (vmlsdavq, vmlsdavxq): New.
11190 * config/arm/arm_mve.h (vmladavq): Remove.
11191 (vmlsdavxq): Remove.
11192 (vmlsdavq): Remove.
11193 (vmladavxq): Remove.
11194 (vmladavq_p): Remove.
11195 (vmlsdavxq_p): Remove.
11196 (vmlsdavq_p): Remove.
11197 (vmladavxq_p): Remove.
11198 (vmladavq_u8): Remove.
11199 (vmlsdavxq_s8): Remove.
11200 (vmlsdavq_s8): Remove.
11201 (vmladavxq_s8): Remove.
11202 (vmladavq_s8): Remove.
11203 (vmladavq_u16): Remove.
11204 (vmlsdavxq_s16): Remove.
11205 (vmlsdavq_s16): Remove.
11206 (vmladavxq_s16): Remove.
11207 (vmladavq_s16): Remove.
11208 (vmladavq_u32): Remove.
11209 (vmlsdavxq_s32): Remove.
11210 (vmlsdavq_s32): Remove.
11211 (vmladavxq_s32): Remove.
11212 (vmladavq_s32): Remove.
11213 (vmladavq_p_u8): Remove.
11214 (vmlsdavxq_p_s8): Remove.
11215 (vmlsdavq_p_s8): Remove.
11216 (vmladavxq_p_s8): Remove.
11217 (vmladavq_p_s8): Remove.
11218 (vmladavq_p_u16): Remove.
11219 (vmlsdavxq_p_s16): Remove.
11220 (vmlsdavq_p_s16): Remove.
11221 (vmladavxq_p_s16): Remove.
11222 (vmladavq_p_s16): Remove.
11223 (vmladavq_p_u32): Remove.
11224 (vmlsdavxq_p_s32): Remove.
11225 (vmlsdavq_p_s32): Remove.
11226 (vmladavxq_p_s32): Remove.
11227 (vmladavq_p_s32): Remove.
11228 (__arm_vmladavq_u8): Remove.
11229 (__arm_vmlsdavxq_s8): Remove.
11230 (__arm_vmlsdavq_s8): Remove.
11231 (__arm_vmladavxq_s8): Remove.
11232 (__arm_vmladavq_s8): Remove.
11233 (__arm_vmladavq_u16): Remove.
11234 (__arm_vmlsdavxq_s16): Remove.
11235 (__arm_vmlsdavq_s16): Remove.
11236 (__arm_vmladavxq_s16): Remove.
11237 (__arm_vmladavq_s16): Remove.
11238 (__arm_vmladavq_u32): Remove.
11239 (__arm_vmlsdavxq_s32): Remove.
11240 (__arm_vmlsdavq_s32): Remove.
11241 (__arm_vmladavxq_s32): Remove.
11242 (__arm_vmladavq_s32): Remove.
11243 (__arm_vmladavq_p_u8): Remove.
11244 (__arm_vmlsdavxq_p_s8): Remove.
11245 (__arm_vmlsdavq_p_s8): Remove.
11246 (__arm_vmladavxq_p_s8): Remove.
11247 (__arm_vmladavq_p_s8): Remove.
11248 (__arm_vmladavq_p_u16): Remove.
11249 (__arm_vmlsdavxq_p_s16): Remove.
11250 (__arm_vmlsdavq_p_s16): Remove.
11251 (__arm_vmladavxq_p_s16): Remove.
11252 (__arm_vmladavq_p_s16): Remove.
11253 (__arm_vmladavq_p_u32): Remove.
11254 (__arm_vmlsdavxq_p_s32): Remove.
11255 (__arm_vmlsdavq_p_s32): Remove.
11256 (__arm_vmladavxq_p_s32): Remove.
11257 (__arm_vmladavq_p_s32): Remove.
11258 (__arm_vmladavq): Remove.
11259 (__arm_vmlsdavxq): Remove.
11260 (__arm_vmlsdavq): Remove.
11261 (__arm_vmladavxq): Remove.
11262 (__arm_vmladavq_p): Remove.
11263 (__arm_vmlsdavxq_p): Remove.
11264 (__arm_vmlsdavq_p): Remove.
11265 (__arm_vmladavxq_p): Remove.
11266
11267 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11268
11269 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
11270 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
11271 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
11272 vmlsdavax, vmlsdav, vmlsdavx.
11273 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
11274 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
11275 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
11276 VMLSDAVXQ_S.
11277 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
11278 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
11279 (mve_vmlsdavxq_s<mode>): Merge into ...
11280 (@mve_<mve_insn>q_<supf><mode>): ... this.
11281 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
11282 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
11283 ...
11284 (@mve_<mve_insn>q_<supf><mode>): ... this.
11285 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
11286 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
11287 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11288 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
11289 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
11290 ...
11291 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11292
11293 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11294
11295 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
11296 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
11297
11298 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11299
11300 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
11301 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
11302 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
11303 * config/arm/arm_mve.h (vaddlvaq): Remove.
11304 (vaddlvaq_p): Remove.
11305 (vaddlvaq_u32): Remove.
11306 (vaddlvaq_s32): Remove.
11307 (vaddlvaq_p_s32): Remove.
11308 (vaddlvaq_p_u32): Remove.
11309 (__arm_vaddlvaq_u32): Remove.
11310 (__arm_vaddlvaq_s32): Remove.
11311 (__arm_vaddlvaq_p_s32): Remove.
11312 (__arm_vaddlvaq_p_u32): Remove.
11313 (__arm_vaddlvaq): Remove.
11314 (__arm_vaddlvaq_p): Remove.
11315
11316 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11317
11318 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
11319 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
11320
11321 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11322
11323 * config/arm/iterators.md (mve_insn): Add vaddlva.
11324 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
11325 (@mve_<mve_insn>q_<supf>v4si): ... this.
11326 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
11327 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11328
11329 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
11330
11331 PR target/109807
11332 * config/i386/i386.cc (ix86_widen_mult_cost):
11333 Handle V4HImode and V2SImode.
11334
11335 2023-05-11 Andrew Pinski <apinski@marvell.com>
11336
11337 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
11338 defined by a phi node with more than one uses, allow for the
11339 only uses are in that same defining statement.
11340
11341 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11342
11343 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
11344 vector constants.
11345
11346 2023-05-11 Pan Li <pan2.li@intel.com>
11347
11348 * config/riscv/vector.md: Add comments for simplifying to vmset.
11349
11350 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11351
11352 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
11353 pattern.
11354 (v<optab><mode>3): Add vector shift pattern.
11355 * config/riscv/vector-iterators.md: New iterator.
11356
11357 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11358
11359 * config/riscv/autovec.md: Use renamed functions.
11360 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
11361 (emit_vlmax_reg_op): To this.
11362 (emit_nonvlmax_op): Rename.
11363 (emit_len_op): To this.
11364 (emit_nonvlmax_binop): Rename.
11365 (emit_len_binop): To this.
11366 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
11367 (emit_pred_binop): Remove vlmax_p.
11368 (emit_vlmax_op): Rename.
11369 (emit_vlmax_reg_op): To this.
11370 (emit_nonvlmax_op): Rename.
11371 (emit_len_op): To this.
11372 (emit_nonvlmax_binop): Rename.
11373 (emit_len_binop): To this.
11374 (sew64_scalar_helper): Use renamed functions.
11375 (expand_tuple_move): Use renamed functions.
11376 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
11377 renamed functions.
11378 * config/riscv/vector.md: Use renamed functions.
11379
11380 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11381 Michael Collison <collison@rivosinc.com>
11382
11383 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
11384 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
11385 * config/riscv/riscv-v.cc (emit_pred_op): New function.
11386 (set_expander_dest_and_mask): New function.
11387 (emit_pred_binop): New function.
11388 (emit_nonvlmax_binop): New function.
11389
11390 2023-05-11 Pan Li <pan2.li@intel.com>
11391
11392 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
11393 * gimple-loop-interchange.cc
11394 (tree_loop_interchange::map_inductions_to_loop): Ditto.
11395 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
11396 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
11397 * tree-ssa-loop-manip.cc (create_iv): Ditto.
11398 (tree_transform_and_unroll_loop): Ditto.
11399 (canonicalize_loop_ivs): Ditto.
11400 * tree-ssa-loop-manip.h (create_iv): Ditto.
11401 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
11402 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
11403 Ditto.
11404 (vect_set_loop_condition_normal): Ditto.
11405 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
11406 * tree-vect-stmts.cc (vectorizable_store): Ditto.
11407 (vectorizable_load): Ditto.
11408
11409 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11410
11411 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
11412 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
11413 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
11414 * config/arm/arm_mve.h (vmovlbq): Remove.
11415 (vmovltq): Remove.
11416 (vmovlbq_m): Remove.
11417 (vmovltq_m): Remove.
11418 (vmovlbq_x): Remove.
11419 (vmovltq_x): Remove.
11420 (vmovlbq_s8): Remove.
11421 (vmovlbq_s16): Remove.
11422 (vmovltq_s8): Remove.
11423 (vmovltq_s16): Remove.
11424 (vmovltq_u8): Remove.
11425 (vmovltq_u16): Remove.
11426 (vmovlbq_u8): Remove.
11427 (vmovlbq_u16): Remove.
11428 (vmovlbq_m_s8): Remove.
11429 (vmovltq_m_s8): Remove.
11430 (vmovlbq_m_u8): Remove.
11431 (vmovltq_m_u8): Remove.
11432 (vmovlbq_m_s16): Remove.
11433 (vmovltq_m_s16): Remove.
11434 (vmovlbq_m_u16): Remove.
11435 (vmovltq_m_u16): Remove.
11436 (vmovlbq_x_s8): Remove.
11437 (vmovlbq_x_s16): Remove.
11438 (vmovlbq_x_u8): Remove.
11439 (vmovlbq_x_u16): Remove.
11440 (vmovltq_x_s8): Remove.
11441 (vmovltq_x_s16): Remove.
11442 (vmovltq_x_u8): Remove.
11443 (vmovltq_x_u16): Remove.
11444 (__arm_vmovlbq_s8): Remove.
11445 (__arm_vmovlbq_s16): Remove.
11446 (__arm_vmovltq_s8): Remove.
11447 (__arm_vmovltq_s16): Remove.
11448 (__arm_vmovltq_u8): Remove.
11449 (__arm_vmovltq_u16): Remove.
11450 (__arm_vmovlbq_u8): Remove.
11451 (__arm_vmovlbq_u16): Remove.
11452 (__arm_vmovlbq_m_s8): Remove.
11453 (__arm_vmovltq_m_s8): Remove.
11454 (__arm_vmovlbq_m_u8): Remove.
11455 (__arm_vmovltq_m_u8): Remove.
11456 (__arm_vmovlbq_m_s16): Remove.
11457 (__arm_vmovltq_m_s16): Remove.
11458 (__arm_vmovlbq_m_u16): Remove.
11459 (__arm_vmovltq_m_u16): Remove.
11460 (__arm_vmovlbq_x_s8): Remove.
11461 (__arm_vmovlbq_x_s16): Remove.
11462 (__arm_vmovlbq_x_u8): Remove.
11463 (__arm_vmovlbq_x_u16): Remove.
11464 (__arm_vmovltq_x_s8): Remove.
11465 (__arm_vmovltq_x_s16): Remove.
11466 (__arm_vmovltq_x_u8): Remove.
11467 (__arm_vmovltq_x_u16): Remove.
11468 (__arm_vmovlbq): Remove.
11469 (__arm_vmovltq): Remove.
11470 (__arm_vmovlbq_m): Remove.
11471 (__arm_vmovltq_m): Remove.
11472 (__arm_vmovlbq_x): Remove.
11473 (__arm_vmovltq_x): Remove.
11474
11475 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11476
11477 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
11478 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
11479
11480 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11481
11482 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
11483 (VMOVLBQ, VMOVLTQ): Merge into ...
11484 (VMOVLxQ): ... this.
11485 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
11486 (VMOVLxQ_M): ... this.
11487 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
11488 (mve_vmovlbq_<supf><mode>): Merge into ...
11489 (@mve_<mve_insn>q_<supf><mode>): ... this.
11490 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
11491 into ...
11492 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11493
11494 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11495
11496 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
11497 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
11498 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
11499 * config/arm/arm-mve-builtins-functions.h
11500 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
11501 * config/arm/arm_mve.h (vaddlvq): Remove.
11502 (vaddlvq_p): Remove.
11503 (vaddlvq_s32): Remove.
11504 (vaddlvq_u32): Remove.
11505 (vaddlvq_p_s32): Remove.
11506 (vaddlvq_p_u32): Remove.
11507 (__arm_vaddlvq_s32): Remove.
11508 (__arm_vaddlvq_u32): Remove.
11509 (__arm_vaddlvq_p_s32): Remove.
11510 (__arm_vaddlvq_p_u32): Remove.
11511 (__arm_vaddlvq): Remove.
11512 (__arm_vaddlvq_p): Remove.
11513
11514 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11515
11516 * config/arm/iterators.md (mve_insn): Add vaddlv.
11517 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
11518 (@mve_<mve_insn>q_<supf>v4si): ... this.
11519 (mve_vaddlvq_p_<supf>v4si): Rename into ...
11520 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11521
11522 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11523
11524 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
11525 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
11526
11527 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11528
11529 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
11530 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
11531 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
11532 * config/arm/arm_mve.h (vaddvaq): Remove.
11533 (vaddvaq_p): Remove.
11534 (vaddvaq_u8): Remove.
11535 (vaddvaq_s8): Remove.
11536 (vaddvaq_u16): Remove.
11537 (vaddvaq_s16): Remove.
11538 (vaddvaq_u32): Remove.
11539 (vaddvaq_s32): Remove.
11540 (vaddvaq_p_u8): Remove.
11541 (vaddvaq_p_s8): Remove.
11542 (vaddvaq_p_u16): Remove.
11543 (vaddvaq_p_s16): Remove.
11544 (vaddvaq_p_u32): Remove.
11545 (vaddvaq_p_s32): Remove.
11546 (__arm_vaddvaq_u8): Remove.
11547 (__arm_vaddvaq_s8): Remove.
11548 (__arm_vaddvaq_u16): Remove.
11549 (__arm_vaddvaq_s16): Remove.
11550 (__arm_vaddvaq_u32): Remove.
11551 (__arm_vaddvaq_s32): Remove.
11552 (__arm_vaddvaq_p_u8): Remove.
11553 (__arm_vaddvaq_p_s8): Remove.
11554 (__arm_vaddvaq_p_u16): Remove.
11555 (__arm_vaddvaq_p_s16): Remove.
11556 (__arm_vaddvaq_p_u32): Remove.
11557 (__arm_vaddvaq_p_s32): Remove.
11558 (__arm_vaddvaq): Remove.
11559 (__arm_vaddvaq_p): Remove.
11560
11561 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11562
11563 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
11564 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
11565
11566 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11567
11568 * config/arm/iterators.md (mve_insn): Add vaddva.
11569 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
11570 (@mve_<mve_insn>q_<supf><mode>): ... this.
11571 (mve_vaddvaq_p_<supf><mode>): Rename into ...
11572 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11573
11574 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11575
11576 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
11577 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
11578 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
11579 * config/arm/arm_mve.h (vaddvq): Remove.
11580 (vaddvq_p): Remove.
11581 (vaddvq_s8): Remove.
11582 (vaddvq_s16): Remove.
11583 (vaddvq_s32): Remove.
11584 (vaddvq_u8): Remove.
11585 (vaddvq_u16): Remove.
11586 (vaddvq_u32): Remove.
11587 (vaddvq_p_u8): Remove.
11588 (vaddvq_p_s8): Remove.
11589 (vaddvq_p_u16): Remove.
11590 (vaddvq_p_s16): Remove.
11591 (vaddvq_p_u32): Remove.
11592 (vaddvq_p_s32): Remove.
11593 (__arm_vaddvq_s8): Remove.
11594 (__arm_vaddvq_s16): Remove.
11595 (__arm_vaddvq_s32): Remove.
11596 (__arm_vaddvq_u8): Remove.
11597 (__arm_vaddvq_u16): Remove.
11598 (__arm_vaddvq_u32): Remove.
11599 (__arm_vaddvq_p_u8): Remove.
11600 (__arm_vaddvq_p_s8): Remove.
11601 (__arm_vaddvq_p_u16): Remove.
11602 (__arm_vaddvq_p_s16): Remove.
11603 (__arm_vaddvq_p_u32): Remove.
11604 (__arm_vaddvq_p_s32): Remove.
11605 (__arm_vaddvq): Remove.
11606 (__arm_vaddvq_p): Remove.
11607
11608 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11609
11610 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
11611 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
11612
11613 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11614
11615 * config/arm/iterators.md (mve_insn): Add vaddv.
11616 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
11617 (@mve_<mve_insn>q_<supf><mode>): ... this.
11618 (mve_vaddvq_p_<supf><mode>): Rename into ...
11619 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11620 * config/arm/vec-common.md: Use gen_mve_q instead of
11621 gen_mve_vaddvq.
11622
11623 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11624
11625 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
11626 (vdupq): New.
11627 * config/arm/arm-mve-builtins-base.def (vdupq): New.
11628 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
11629 * config/arm/arm_mve.h (vdupq_n): Remove.
11630 (vdupq_m): Remove.
11631 (vdupq_n_f16): Remove.
11632 (vdupq_n_f32): Remove.
11633 (vdupq_n_s8): Remove.
11634 (vdupq_n_s16): Remove.
11635 (vdupq_n_s32): Remove.
11636 (vdupq_n_u8): Remove.
11637 (vdupq_n_u16): Remove.
11638 (vdupq_n_u32): Remove.
11639 (vdupq_m_n_u8): Remove.
11640 (vdupq_m_n_s8): Remove.
11641 (vdupq_m_n_u16): Remove.
11642 (vdupq_m_n_s16): Remove.
11643 (vdupq_m_n_u32): Remove.
11644 (vdupq_m_n_s32): Remove.
11645 (vdupq_m_n_f16): Remove.
11646 (vdupq_m_n_f32): Remove.
11647 (vdupq_x_n_s8): Remove.
11648 (vdupq_x_n_s16): Remove.
11649 (vdupq_x_n_s32): Remove.
11650 (vdupq_x_n_u8): Remove.
11651 (vdupq_x_n_u16): Remove.
11652 (vdupq_x_n_u32): Remove.
11653 (vdupq_x_n_f16): Remove.
11654 (vdupq_x_n_f32): Remove.
11655 (__arm_vdupq_n_s8): Remove.
11656 (__arm_vdupq_n_s16): Remove.
11657 (__arm_vdupq_n_s32): Remove.
11658 (__arm_vdupq_n_u8): Remove.
11659 (__arm_vdupq_n_u16): Remove.
11660 (__arm_vdupq_n_u32): Remove.
11661 (__arm_vdupq_m_n_u8): Remove.
11662 (__arm_vdupq_m_n_s8): Remove.
11663 (__arm_vdupq_m_n_u16): Remove.
11664 (__arm_vdupq_m_n_s16): Remove.
11665 (__arm_vdupq_m_n_u32): Remove.
11666 (__arm_vdupq_m_n_s32): Remove.
11667 (__arm_vdupq_x_n_s8): Remove.
11668 (__arm_vdupq_x_n_s16): Remove.
11669 (__arm_vdupq_x_n_s32): Remove.
11670 (__arm_vdupq_x_n_u8): Remove.
11671 (__arm_vdupq_x_n_u16): Remove.
11672 (__arm_vdupq_x_n_u32): Remove.
11673 (__arm_vdupq_n_f16): Remove.
11674 (__arm_vdupq_n_f32): Remove.
11675 (__arm_vdupq_m_n_f16): Remove.
11676 (__arm_vdupq_m_n_f32): Remove.
11677 (__arm_vdupq_x_n_f16): Remove.
11678 (__arm_vdupq_x_n_f32): Remove.
11679 (__arm_vdupq_n): Remove.
11680 (__arm_vdupq_m): Remove.
11681
11682 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11683
11684 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
11685 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
11686
11687 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11688
11689 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
11690 (MVE_FP_N_VDUPQ_ONLY): New.
11691 (mve_insn): Add vdupq.
11692 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
11693 (@mve_<mve_insn>q_n_f<mode>): ... this.
11694 (mve_vdupq_n_<supf><mode>): Rename into ...
11695 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11696 (mve_vdupq_m_n_<supf><mode>): Rename into ...
11697 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11698 (mve_vdupq_m_n_f<mode>): Rename into ...
11699 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
11700
11701 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11702
11703 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
11704 New.
11705 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
11706 (vrev64q): New.
11707 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
11708 (vrev64q): New.
11709 * config/arm/arm_mve.h (vrev16q): Remove.
11710 (vrev32q): Remove.
11711 (vrev64q): Remove.
11712 (vrev64q_m): Remove.
11713 (vrev16q_m): Remove.
11714 (vrev32q_m): Remove.
11715 (vrev16q_x): Remove.
11716 (vrev32q_x): Remove.
11717 (vrev64q_x): Remove.
11718 (vrev64q_f16): Remove.
11719 (vrev64q_f32): Remove.
11720 (vrev32q_f16): Remove.
11721 (vrev16q_s8): Remove.
11722 (vrev32q_s8): Remove.
11723 (vrev32q_s16): Remove.
11724 (vrev64q_s8): Remove.
11725 (vrev64q_s16): Remove.
11726 (vrev64q_s32): Remove.
11727 (vrev64q_u8): Remove.
11728 (vrev64q_u16): Remove.
11729 (vrev64q_u32): Remove.
11730 (vrev32q_u8): Remove.
11731 (vrev32q_u16): Remove.
11732 (vrev16q_u8): Remove.
11733 (vrev64q_m_u8): Remove.
11734 (vrev64q_m_s8): Remove.
11735 (vrev64q_m_u16): Remove.
11736 (vrev64q_m_s16): Remove.
11737 (vrev64q_m_u32): Remove.
11738 (vrev64q_m_s32): Remove.
11739 (vrev16q_m_s8): Remove.
11740 (vrev32q_m_f16): Remove.
11741 (vrev16q_m_u8): Remove.
11742 (vrev32q_m_s8): Remove.
11743 (vrev64q_m_f16): Remove.
11744 (vrev32q_m_u8): Remove.
11745 (vrev32q_m_s16): Remove.
11746 (vrev64q_m_f32): Remove.
11747 (vrev32q_m_u16): Remove.
11748 (vrev16q_x_s8): Remove.
11749 (vrev16q_x_u8): Remove.
11750 (vrev32q_x_s8): Remove.
11751 (vrev32q_x_s16): Remove.
11752 (vrev32q_x_u8): Remove.
11753 (vrev32q_x_u16): Remove.
11754 (vrev64q_x_s8): Remove.
11755 (vrev64q_x_s16): Remove.
11756 (vrev64q_x_s32): Remove.
11757 (vrev64q_x_u8): Remove.
11758 (vrev64q_x_u16): Remove.
11759 (vrev64q_x_u32): Remove.
11760 (vrev32q_x_f16): Remove.
11761 (vrev64q_x_f16): Remove.
11762 (vrev64q_x_f32): Remove.
11763 (__arm_vrev16q_s8): Remove.
11764 (__arm_vrev32q_s8): Remove.
11765 (__arm_vrev32q_s16): Remove.
11766 (__arm_vrev64q_s8): Remove.
11767 (__arm_vrev64q_s16): Remove.
11768 (__arm_vrev64q_s32): Remove.
11769 (__arm_vrev64q_u8): Remove.
11770 (__arm_vrev64q_u16): Remove.
11771 (__arm_vrev64q_u32): Remove.
11772 (__arm_vrev32q_u8): Remove.
11773 (__arm_vrev32q_u16): Remove.
11774 (__arm_vrev16q_u8): Remove.
11775 (__arm_vrev64q_m_u8): Remove.
11776 (__arm_vrev64q_m_s8): Remove.
11777 (__arm_vrev64q_m_u16): Remove.
11778 (__arm_vrev64q_m_s16): Remove.
11779 (__arm_vrev64q_m_u32): Remove.
11780 (__arm_vrev64q_m_s32): Remove.
11781 (__arm_vrev16q_m_s8): Remove.
11782 (__arm_vrev16q_m_u8): Remove.
11783 (__arm_vrev32q_m_s8): Remove.
11784 (__arm_vrev32q_m_u8): Remove.
11785 (__arm_vrev32q_m_s16): Remove.
11786 (__arm_vrev32q_m_u16): Remove.
11787 (__arm_vrev16q_x_s8): Remove.
11788 (__arm_vrev16q_x_u8): Remove.
11789 (__arm_vrev32q_x_s8): Remove.
11790 (__arm_vrev32q_x_s16): Remove.
11791 (__arm_vrev32q_x_u8): Remove.
11792 (__arm_vrev32q_x_u16): Remove.
11793 (__arm_vrev64q_x_s8): Remove.
11794 (__arm_vrev64q_x_s16): Remove.
11795 (__arm_vrev64q_x_s32): Remove.
11796 (__arm_vrev64q_x_u8): Remove.
11797 (__arm_vrev64q_x_u16): Remove.
11798 (__arm_vrev64q_x_u32): Remove.
11799 (__arm_vrev64q_f16): Remove.
11800 (__arm_vrev64q_f32): Remove.
11801 (__arm_vrev32q_f16): Remove.
11802 (__arm_vrev32q_m_f16): Remove.
11803 (__arm_vrev64q_m_f16): Remove.
11804 (__arm_vrev64q_m_f32): Remove.
11805 (__arm_vrev32q_x_f16): Remove.
11806 (__arm_vrev64q_x_f16): Remove.
11807 (__arm_vrev64q_x_f32): Remove.
11808 (__arm_vrev16q): Remove.
11809 (__arm_vrev32q): Remove.
11810 (__arm_vrev64q): Remove.
11811 (__arm_vrev64q_m): Remove.
11812 (__arm_vrev16q_m): Remove.
11813 (__arm_vrev32q_m): Remove.
11814 (__arm_vrev16q_x): Remove.
11815 (__arm_vrev32q_x): Remove.
11816 (__arm_vrev64q_x): Remove.
11817
11818 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11819
11820 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
11821 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
11822 (MVE_FP_M_VREV32Q_ONLY): New iterators.
11823 (mve_insn): Add vrev16q, vrev32q, vrev64q.
11824 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
11825 (@mve_<mve_insn>q_f<mode>): ... this
11826 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
11827 (mve_vrev64q_<supf><mode>): Rename into ...
11828 (@mve_<mve_insn>q_<supf><mode>): ... this.
11829 (mve_vrev32q_<supf><mode>): Rename into
11830 @mve_<mve_insn>q_<supf><mode>.
11831 (mve_vrev16q_<supf>v16qi): Rename into
11832 @mve_<mve_insn>q_<supf><mode>.
11833 (mve_vrev64q_m_<supf><mode>): Rename into
11834 @mve_<mve_insn>q_m_<supf><mode>.
11835 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
11836 (mve_vrev32q_m_<supf><mode>): Rename into
11837 @mve_<mve_insn>q_m_<supf><mode>.
11838 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
11839 (mve_vrev16q_m_<supf>v16qi): Rename into
11840 @mve_<mve_insn>q_m_<supf><mode>.
11841
11842 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11843
11844 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
11845 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11846 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
11847 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11848 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
11849 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11850 * config/arm/arm-mve-builtins-functions.h (class
11851 unspec_based_mve_function_exact_insn_vcmp): New.
11852 * config/arm/arm-mve-builtins.cc
11853 (function_instance::has_inactive_argument): Handle vcmp.
11854 * config/arm/arm_mve.h (vcmpneq): Remove.
11855 (vcmphiq): Remove.
11856 (vcmpeqq): Remove.
11857 (vcmpcsq): Remove.
11858 (vcmpltq): Remove.
11859 (vcmpleq): Remove.
11860 (vcmpgtq): Remove.
11861 (vcmpgeq): Remove.
11862 (vcmpneq_m): Remove.
11863 (vcmphiq_m): Remove.
11864 (vcmpeqq_m): Remove.
11865 (vcmpcsq_m): Remove.
11866 (vcmpcsq_m_n): Remove.
11867 (vcmpltq_m): Remove.
11868 (vcmpleq_m): Remove.
11869 (vcmpgtq_m): Remove.
11870 (vcmpgeq_m): Remove.
11871 (vcmpneq_s8): Remove.
11872 (vcmpneq_s16): Remove.
11873 (vcmpneq_s32): Remove.
11874 (vcmpneq_u8): Remove.
11875 (vcmpneq_u16): Remove.
11876 (vcmpneq_u32): Remove.
11877 (vcmpneq_n_u8): Remove.
11878 (vcmphiq_u8): Remove.
11879 (vcmphiq_n_u8): Remove.
11880 (vcmpeqq_u8): Remove.
11881 (vcmpeqq_n_u8): Remove.
11882 (vcmpcsq_u8): Remove.
11883 (vcmpcsq_n_u8): Remove.
11884 (vcmpneq_n_s8): Remove.
11885 (vcmpltq_s8): Remove.
11886 (vcmpltq_n_s8): Remove.
11887 (vcmpleq_s8): Remove.
11888 (vcmpleq_n_s8): Remove.
11889 (vcmpgtq_s8): Remove.
11890 (vcmpgtq_n_s8): Remove.
11891 (vcmpgeq_s8): Remove.
11892 (vcmpgeq_n_s8): Remove.
11893 (vcmpeqq_s8): Remove.
11894 (vcmpeqq_n_s8): Remove.
11895 (vcmpneq_n_u16): Remove.
11896 (vcmphiq_u16): Remove.
11897 (vcmphiq_n_u16): Remove.
11898 (vcmpeqq_u16): Remove.
11899 (vcmpeqq_n_u16): Remove.
11900 (vcmpcsq_u16): Remove.
11901 (vcmpcsq_n_u16): Remove.
11902 (vcmpneq_n_s16): Remove.
11903 (vcmpltq_s16): Remove.
11904 (vcmpltq_n_s16): Remove.
11905 (vcmpleq_s16): Remove.
11906 (vcmpleq_n_s16): Remove.
11907 (vcmpgtq_s16): Remove.
11908 (vcmpgtq_n_s16): Remove.
11909 (vcmpgeq_s16): Remove.
11910 (vcmpgeq_n_s16): Remove.
11911 (vcmpeqq_s16): Remove.
11912 (vcmpeqq_n_s16): Remove.
11913 (vcmpneq_n_u32): Remove.
11914 (vcmphiq_u32): Remove.
11915 (vcmphiq_n_u32): Remove.
11916 (vcmpeqq_u32): Remove.
11917 (vcmpeqq_n_u32): Remove.
11918 (vcmpcsq_u32): Remove.
11919 (vcmpcsq_n_u32): Remove.
11920 (vcmpneq_n_s32): Remove.
11921 (vcmpltq_s32): Remove.
11922 (vcmpltq_n_s32): Remove.
11923 (vcmpleq_s32): Remove.
11924 (vcmpleq_n_s32): Remove.
11925 (vcmpgtq_s32): Remove.
11926 (vcmpgtq_n_s32): Remove.
11927 (vcmpgeq_s32): Remove.
11928 (vcmpgeq_n_s32): Remove.
11929 (vcmpeqq_s32): Remove.
11930 (vcmpeqq_n_s32): Remove.
11931 (vcmpneq_n_f16): Remove.
11932 (vcmpneq_f16): Remove.
11933 (vcmpltq_n_f16): Remove.
11934 (vcmpltq_f16): Remove.
11935 (vcmpleq_n_f16): Remove.
11936 (vcmpleq_f16): Remove.
11937 (vcmpgtq_n_f16): Remove.
11938 (vcmpgtq_f16): Remove.
11939 (vcmpgeq_n_f16): Remove.
11940 (vcmpgeq_f16): Remove.
11941 (vcmpeqq_n_f16): Remove.
11942 (vcmpeqq_f16): Remove.
11943 (vcmpneq_n_f32): Remove.
11944 (vcmpneq_f32): Remove.
11945 (vcmpltq_n_f32): Remove.
11946 (vcmpltq_f32): Remove.
11947 (vcmpleq_n_f32): Remove.
11948 (vcmpleq_f32): Remove.
11949 (vcmpgtq_n_f32): Remove.
11950 (vcmpgtq_f32): Remove.
11951 (vcmpgeq_n_f32): Remove.
11952 (vcmpgeq_f32): Remove.
11953 (vcmpeqq_n_f32): Remove.
11954 (vcmpeqq_f32): Remove.
11955 (vcmpeqq_m_f16): Remove.
11956 (vcmpeqq_m_f32): Remove.
11957 (vcmpneq_m_u8): Remove.
11958 (vcmpneq_m_n_u8): Remove.
11959 (vcmphiq_m_u8): Remove.
11960 (vcmphiq_m_n_u8): Remove.
11961 (vcmpeqq_m_u8): Remove.
11962 (vcmpeqq_m_n_u8): Remove.
11963 (vcmpcsq_m_u8): Remove.
11964 (vcmpcsq_m_n_u8): Remove.
11965 (vcmpneq_m_s8): Remove.
11966 (vcmpneq_m_n_s8): Remove.
11967 (vcmpltq_m_s8): Remove.
11968 (vcmpltq_m_n_s8): Remove.
11969 (vcmpleq_m_s8): Remove.
11970 (vcmpleq_m_n_s8): Remove.
11971 (vcmpgtq_m_s8): Remove.
11972 (vcmpgtq_m_n_s8): Remove.
11973 (vcmpgeq_m_s8): Remove.
11974 (vcmpgeq_m_n_s8): Remove.
11975 (vcmpeqq_m_s8): Remove.
11976 (vcmpeqq_m_n_s8): Remove.
11977 (vcmpneq_m_u16): Remove.
11978 (vcmpneq_m_n_u16): Remove.
11979 (vcmphiq_m_u16): Remove.
11980 (vcmphiq_m_n_u16): Remove.
11981 (vcmpeqq_m_u16): Remove.
11982 (vcmpeqq_m_n_u16): Remove.
11983 (vcmpcsq_m_u16): Remove.
11984 (vcmpcsq_m_n_u16): Remove.
11985 (vcmpneq_m_s16): Remove.
11986 (vcmpneq_m_n_s16): Remove.
11987 (vcmpltq_m_s16): Remove.
11988 (vcmpltq_m_n_s16): Remove.
11989 (vcmpleq_m_s16): Remove.
11990 (vcmpleq_m_n_s16): Remove.
11991 (vcmpgtq_m_s16): Remove.
11992 (vcmpgtq_m_n_s16): Remove.
11993 (vcmpgeq_m_s16): Remove.
11994 (vcmpgeq_m_n_s16): Remove.
11995 (vcmpeqq_m_s16): Remove.
11996 (vcmpeqq_m_n_s16): Remove.
11997 (vcmpneq_m_u32): Remove.
11998 (vcmpneq_m_n_u32): Remove.
11999 (vcmphiq_m_u32): Remove.
12000 (vcmphiq_m_n_u32): Remove.
12001 (vcmpeqq_m_u32): Remove.
12002 (vcmpeqq_m_n_u32): Remove.
12003 (vcmpcsq_m_u32): Remove.
12004 (vcmpcsq_m_n_u32): Remove.
12005 (vcmpneq_m_s32): Remove.
12006 (vcmpneq_m_n_s32): Remove.
12007 (vcmpltq_m_s32): Remove.
12008 (vcmpltq_m_n_s32): Remove.
12009 (vcmpleq_m_s32): Remove.
12010 (vcmpleq_m_n_s32): Remove.
12011 (vcmpgtq_m_s32): Remove.
12012 (vcmpgtq_m_n_s32): Remove.
12013 (vcmpgeq_m_s32): Remove.
12014 (vcmpgeq_m_n_s32): Remove.
12015 (vcmpeqq_m_s32): Remove.
12016 (vcmpeqq_m_n_s32): Remove.
12017 (vcmpeqq_m_n_f16): Remove.
12018 (vcmpgeq_m_f16): Remove.
12019 (vcmpgeq_m_n_f16): Remove.
12020 (vcmpgtq_m_f16): Remove.
12021 (vcmpgtq_m_n_f16): Remove.
12022 (vcmpleq_m_f16): Remove.
12023 (vcmpleq_m_n_f16): Remove.
12024 (vcmpltq_m_f16): Remove.
12025 (vcmpltq_m_n_f16): Remove.
12026 (vcmpneq_m_f16): Remove.
12027 (vcmpneq_m_n_f16): Remove.
12028 (vcmpeqq_m_n_f32): Remove.
12029 (vcmpgeq_m_f32): Remove.
12030 (vcmpgeq_m_n_f32): Remove.
12031 (vcmpgtq_m_f32): Remove.
12032 (vcmpgtq_m_n_f32): Remove.
12033 (vcmpleq_m_f32): Remove.
12034 (vcmpleq_m_n_f32): Remove.
12035 (vcmpltq_m_f32): Remove.
12036 (vcmpltq_m_n_f32): Remove.
12037 (vcmpneq_m_f32): Remove.
12038 (vcmpneq_m_n_f32): Remove.
12039 (__arm_vcmpneq_s8): Remove.
12040 (__arm_vcmpneq_s16): Remove.
12041 (__arm_vcmpneq_s32): Remove.
12042 (__arm_vcmpneq_u8): Remove.
12043 (__arm_vcmpneq_u16): Remove.
12044 (__arm_vcmpneq_u32): Remove.
12045 (__arm_vcmpneq_n_u8): Remove.
12046 (__arm_vcmphiq_u8): Remove.
12047 (__arm_vcmphiq_n_u8): Remove.
12048 (__arm_vcmpeqq_u8): Remove.
12049 (__arm_vcmpeqq_n_u8): Remove.
12050 (__arm_vcmpcsq_u8): Remove.
12051 (__arm_vcmpcsq_n_u8): Remove.
12052 (__arm_vcmpneq_n_s8): Remove.
12053 (__arm_vcmpltq_s8): Remove.
12054 (__arm_vcmpltq_n_s8): Remove.
12055 (__arm_vcmpleq_s8): Remove.
12056 (__arm_vcmpleq_n_s8): Remove.
12057 (__arm_vcmpgtq_s8): Remove.
12058 (__arm_vcmpgtq_n_s8): Remove.
12059 (__arm_vcmpgeq_s8): Remove.
12060 (__arm_vcmpgeq_n_s8): Remove.
12061 (__arm_vcmpeqq_s8): Remove.
12062 (__arm_vcmpeqq_n_s8): Remove.
12063 (__arm_vcmpneq_n_u16): Remove.
12064 (__arm_vcmphiq_u16): Remove.
12065 (__arm_vcmphiq_n_u16): Remove.
12066 (__arm_vcmpeqq_u16): Remove.
12067 (__arm_vcmpeqq_n_u16): Remove.
12068 (__arm_vcmpcsq_u16): Remove.
12069 (__arm_vcmpcsq_n_u16): Remove.
12070 (__arm_vcmpneq_n_s16): Remove.
12071 (__arm_vcmpltq_s16): Remove.
12072 (__arm_vcmpltq_n_s16): Remove.
12073 (__arm_vcmpleq_s16): Remove.
12074 (__arm_vcmpleq_n_s16): Remove.
12075 (__arm_vcmpgtq_s16): Remove.
12076 (__arm_vcmpgtq_n_s16): Remove.
12077 (__arm_vcmpgeq_s16): Remove.
12078 (__arm_vcmpgeq_n_s16): Remove.
12079 (__arm_vcmpeqq_s16): Remove.
12080 (__arm_vcmpeqq_n_s16): Remove.
12081 (__arm_vcmpneq_n_u32): Remove.
12082 (__arm_vcmphiq_u32): Remove.
12083 (__arm_vcmphiq_n_u32): Remove.
12084 (__arm_vcmpeqq_u32): Remove.
12085 (__arm_vcmpeqq_n_u32): Remove.
12086 (__arm_vcmpcsq_u32): Remove.
12087 (__arm_vcmpcsq_n_u32): Remove.
12088 (__arm_vcmpneq_n_s32): Remove.
12089 (__arm_vcmpltq_s32): Remove.
12090 (__arm_vcmpltq_n_s32): Remove.
12091 (__arm_vcmpleq_s32): Remove.
12092 (__arm_vcmpleq_n_s32): Remove.
12093 (__arm_vcmpgtq_s32): Remove.
12094 (__arm_vcmpgtq_n_s32): Remove.
12095 (__arm_vcmpgeq_s32): Remove.
12096 (__arm_vcmpgeq_n_s32): Remove.
12097 (__arm_vcmpeqq_s32): Remove.
12098 (__arm_vcmpeqq_n_s32): Remove.
12099 (__arm_vcmpneq_m_u8): Remove.
12100 (__arm_vcmpneq_m_n_u8): Remove.
12101 (__arm_vcmphiq_m_u8): Remove.
12102 (__arm_vcmphiq_m_n_u8): Remove.
12103 (__arm_vcmpeqq_m_u8): Remove.
12104 (__arm_vcmpeqq_m_n_u8): Remove.
12105 (__arm_vcmpcsq_m_u8): Remove.
12106 (__arm_vcmpcsq_m_n_u8): Remove.
12107 (__arm_vcmpneq_m_s8): Remove.
12108 (__arm_vcmpneq_m_n_s8): Remove.
12109 (__arm_vcmpltq_m_s8): Remove.
12110 (__arm_vcmpltq_m_n_s8): Remove.
12111 (__arm_vcmpleq_m_s8): Remove.
12112 (__arm_vcmpleq_m_n_s8): Remove.
12113 (__arm_vcmpgtq_m_s8): Remove.
12114 (__arm_vcmpgtq_m_n_s8): Remove.
12115 (__arm_vcmpgeq_m_s8): Remove.
12116 (__arm_vcmpgeq_m_n_s8): Remove.
12117 (__arm_vcmpeqq_m_s8): Remove.
12118 (__arm_vcmpeqq_m_n_s8): Remove.
12119 (__arm_vcmpneq_m_u16): Remove.
12120 (__arm_vcmpneq_m_n_u16): Remove.
12121 (__arm_vcmphiq_m_u16): Remove.
12122 (__arm_vcmphiq_m_n_u16): Remove.
12123 (__arm_vcmpeqq_m_u16): Remove.
12124 (__arm_vcmpeqq_m_n_u16): Remove.
12125 (__arm_vcmpcsq_m_u16): Remove.
12126 (__arm_vcmpcsq_m_n_u16): Remove.
12127 (__arm_vcmpneq_m_s16): Remove.
12128 (__arm_vcmpneq_m_n_s16): Remove.
12129 (__arm_vcmpltq_m_s16): Remove.
12130 (__arm_vcmpltq_m_n_s16): Remove.
12131 (__arm_vcmpleq_m_s16): Remove.
12132 (__arm_vcmpleq_m_n_s16): Remove.
12133 (__arm_vcmpgtq_m_s16): Remove.
12134 (__arm_vcmpgtq_m_n_s16): Remove.
12135 (__arm_vcmpgeq_m_s16): Remove.
12136 (__arm_vcmpgeq_m_n_s16): Remove.
12137 (__arm_vcmpeqq_m_s16): Remove.
12138 (__arm_vcmpeqq_m_n_s16): Remove.
12139 (__arm_vcmpneq_m_u32): Remove.
12140 (__arm_vcmpneq_m_n_u32): Remove.
12141 (__arm_vcmphiq_m_u32): Remove.
12142 (__arm_vcmphiq_m_n_u32): Remove.
12143 (__arm_vcmpeqq_m_u32): Remove.
12144 (__arm_vcmpeqq_m_n_u32): Remove.
12145 (__arm_vcmpcsq_m_u32): Remove.
12146 (__arm_vcmpcsq_m_n_u32): Remove.
12147 (__arm_vcmpneq_m_s32): Remove.
12148 (__arm_vcmpneq_m_n_s32): Remove.
12149 (__arm_vcmpltq_m_s32): Remove.
12150 (__arm_vcmpltq_m_n_s32): Remove.
12151 (__arm_vcmpleq_m_s32): Remove.
12152 (__arm_vcmpleq_m_n_s32): Remove.
12153 (__arm_vcmpgtq_m_s32): Remove.
12154 (__arm_vcmpgtq_m_n_s32): Remove.
12155 (__arm_vcmpgeq_m_s32): Remove.
12156 (__arm_vcmpgeq_m_n_s32): Remove.
12157 (__arm_vcmpeqq_m_s32): Remove.
12158 (__arm_vcmpeqq_m_n_s32): Remove.
12159 (__arm_vcmpneq_n_f16): Remove.
12160 (__arm_vcmpneq_f16): Remove.
12161 (__arm_vcmpltq_n_f16): Remove.
12162 (__arm_vcmpltq_f16): Remove.
12163 (__arm_vcmpleq_n_f16): Remove.
12164 (__arm_vcmpleq_f16): Remove.
12165 (__arm_vcmpgtq_n_f16): Remove.
12166 (__arm_vcmpgtq_f16): Remove.
12167 (__arm_vcmpgeq_n_f16): Remove.
12168 (__arm_vcmpgeq_f16): Remove.
12169 (__arm_vcmpeqq_n_f16): Remove.
12170 (__arm_vcmpeqq_f16): Remove.
12171 (__arm_vcmpneq_n_f32): Remove.
12172 (__arm_vcmpneq_f32): Remove.
12173 (__arm_vcmpltq_n_f32): Remove.
12174 (__arm_vcmpltq_f32): Remove.
12175 (__arm_vcmpleq_n_f32): Remove.
12176 (__arm_vcmpleq_f32): Remove.
12177 (__arm_vcmpgtq_n_f32): Remove.
12178 (__arm_vcmpgtq_f32): Remove.
12179 (__arm_vcmpgeq_n_f32): Remove.
12180 (__arm_vcmpgeq_f32): Remove.
12181 (__arm_vcmpeqq_n_f32): Remove.
12182 (__arm_vcmpeqq_f32): Remove.
12183 (__arm_vcmpeqq_m_f16): Remove.
12184 (__arm_vcmpeqq_m_f32): Remove.
12185 (__arm_vcmpeqq_m_n_f16): Remove.
12186 (__arm_vcmpgeq_m_f16): Remove.
12187 (__arm_vcmpgeq_m_n_f16): Remove.
12188 (__arm_vcmpgtq_m_f16): Remove.
12189 (__arm_vcmpgtq_m_n_f16): Remove.
12190 (__arm_vcmpleq_m_f16): Remove.
12191 (__arm_vcmpleq_m_n_f16): Remove.
12192 (__arm_vcmpltq_m_f16): Remove.
12193 (__arm_vcmpltq_m_n_f16): Remove.
12194 (__arm_vcmpneq_m_f16): Remove.
12195 (__arm_vcmpneq_m_n_f16): Remove.
12196 (__arm_vcmpeqq_m_n_f32): Remove.
12197 (__arm_vcmpgeq_m_f32): Remove.
12198 (__arm_vcmpgeq_m_n_f32): Remove.
12199 (__arm_vcmpgtq_m_f32): Remove.
12200 (__arm_vcmpgtq_m_n_f32): Remove.
12201 (__arm_vcmpleq_m_f32): Remove.
12202 (__arm_vcmpleq_m_n_f32): Remove.
12203 (__arm_vcmpltq_m_f32): Remove.
12204 (__arm_vcmpltq_m_n_f32): Remove.
12205 (__arm_vcmpneq_m_f32): Remove.
12206 (__arm_vcmpneq_m_n_f32): Remove.
12207 (__arm_vcmpneq): Remove.
12208 (__arm_vcmphiq): Remove.
12209 (__arm_vcmpeqq): Remove.
12210 (__arm_vcmpcsq): Remove.
12211 (__arm_vcmpltq): Remove.
12212 (__arm_vcmpleq): Remove.
12213 (__arm_vcmpgtq): Remove.
12214 (__arm_vcmpgeq): Remove.
12215 (__arm_vcmpneq_m): Remove.
12216 (__arm_vcmphiq_m): Remove.
12217 (__arm_vcmpeqq_m): Remove.
12218 (__arm_vcmpcsq_m): Remove.
12219 (__arm_vcmpltq_m): Remove.
12220 (__arm_vcmpleq_m): Remove.
12221 (__arm_vcmpgtq_m): Remove.
12222 (__arm_vcmpgeq_m): Remove.
12223
12224 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
12225
12226 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
12227 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
12228
12229 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
12230
12231 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
12232 (MVE_CMP_M_N_F, mve_cmp_op1): New.
12233 (isu): Add VCMP*
12234 (supf): Likewise.
12235 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
12236 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
12237 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
12238 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
12239 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
12240 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
12241 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
12242 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
12243 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
12244 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
12245 ...
12246 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
12247 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
12248 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
12249 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
12250 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
12251 into ...
12252 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
12253 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
12254 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
12255 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
12256 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
12257
12258 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
12259
12260 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
12261 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
12262 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
12263 vice versa.
12264
12265 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
12266
12267 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
12268 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
12269 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
12270 Simplify parity(rotate(x,y)) as parity(x).
12271
12272 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12273
12274 * config/riscv/autovec.md (@vec_series<mode>): New pattern
12275 * config/riscv/riscv-protos.h (expand_vec_series): New function.
12276 * config/riscv/riscv-v.cc (emit_binop): Ditto.
12277 (emit_index_op): Ditto.
12278 (expand_vec_series): Ditto.
12279 (expand_const_vector): Add series vector handling.
12280 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
12281
12282 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
12283
12284 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
12285 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
12286 (*concat<mode><dwi>3_2): Likewise.
12287 (*concat<mode><dwi>3_3): Likewise.
12288 (*concat<mode><dwi>3_4): Likewise.
12289 (*concat<mode><dwi>3_5): Likewise.
12290 (*concat<mode><dwi>3_6): Likewise.
12291 (*concat<mode><dwi>3_7): Likewise.
12292
12293 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
12294
12295 PR target/92658
12296 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
12297 (<insn>v4qiv4hi2): New expander.
12298 (<insn>v2hiv2si2): Ditto.
12299 (<insn>v2qiv2si2): Ditto.
12300 (<insn>v2qiv2hi2): Ditto.
12301
12302 2023-05-10 Jeff Law <jlaw@ventanamicro>
12303
12304 * config/h8300/constraints.md (Q): Make this a special memory
12305 constraint.
12306 (Zz): Similarly.
12307
12308 2023-05-10 Jakub Jelinek <jakub@redhat.com>
12309
12310 PR fortran/109788
12311 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
12312 if t is void_list_node.
12313
12314 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12315
12316 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
12317 (aarch64_sqmovun<mode>_insn_be): Delete.
12318 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
12319 (aarch64_sqmovun<mode>): Delete expander.
12320
12321 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12322
12323 PR target/99195
12324 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
12325 Rename to...
12326 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
12327 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
12328 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
12329
12330 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12331
12332 PR target/99195
12333 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
12334 Rename to...
12335 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
12336 (aarch64_<sur>qadd<mode>): Rename to...
12337 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
12338
12339 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12340
12341 * config/aarch64/aarch64-simd.md
12342 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
12343 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
12344 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
12345 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
12346
12347 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12348
12349 PR target/99195
12350 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
12351 (aarch64_xtn<mode>_insn_be): Likewise.
12352 (trunc<mode><Vnarrowq>2): Rename to...
12353 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
12354 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
12355 (aarch64_<su>qmovn<mode>): Likewise.
12356 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
12357 (aarch64_<su>qmovn<mode>_insn_le): Delete.
12358 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
12359
12360 2023-05-10 Li Xu <xuli1@eswincomputing.com>
12361
12362 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
12363 intruction replace null avl with (const_int 0).
12364
12365 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12366
12367 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
12368 incorrect codes.
12369
12370 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12371
12372 PR target/109773
12373 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
12374 (source_equal_p): Fix dead loop in vsetvl avl checking.
12375
12376 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
12377
12378 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
12379 of modeadjusted_dccr.
12380
12381 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12382
12383 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
12384 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
12385 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
12386 * config/arm/arm-mve-builtins.cc
12387 (function_instance::has_inactive_argument): Handle vmaxaq and
12388 vminaq.
12389 * config/arm/arm_mve.h (vminaq): Remove.
12390 (vmaxaq): Remove.
12391 (vminaq_m): Remove.
12392 (vmaxaq_m): Remove.
12393 (vminaq_s8): Remove.
12394 (vmaxaq_s8): Remove.
12395 (vminaq_s16): Remove.
12396 (vmaxaq_s16): Remove.
12397 (vminaq_s32): Remove.
12398 (vmaxaq_s32): Remove.
12399 (vminaq_m_s8): Remove.
12400 (vmaxaq_m_s8): Remove.
12401 (vminaq_m_s16): Remove.
12402 (vmaxaq_m_s16): Remove.
12403 (vminaq_m_s32): Remove.
12404 (vmaxaq_m_s32): Remove.
12405 (__arm_vminaq_s8): Remove.
12406 (__arm_vmaxaq_s8): Remove.
12407 (__arm_vminaq_s16): Remove.
12408 (__arm_vmaxaq_s16): Remove.
12409 (__arm_vminaq_s32): Remove.
12410 (__arm_vmaxaq_s32): Remove.
12411 (__arm_vminaq_m_s8): Remove.
12412 (__arm_vmaxaq_m_s8): Remove.
12413 (__arm_vminaq_m_s16): Remove.
12414 (__arm_vmaxaq_m_s16): Remove.
12415 (__arm_vminaq_m_s32): Remove.
12416 (__arm_vmaxaq_m_s32): Remove.
12417 (__arm_vminaq): Remove.
12418 (__arm_vmaxaq): Remove.
12419 (__arm_vminaq_m): Remove.
12420 (__arm_vmaxaq_m): Remove.
12421
12422 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12423
12424 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
12425 New.
12426 (mve_insn): Add vmaxa, vmina.
12427 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
12428 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
12429 Merge into ...
12430 (@mve_<mve_insn>q_<supf><mode>): ... this.
12431 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
12432 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12433
12434 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12435
12436 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
12437 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
12438
12439 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12440
12441 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
12442 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
12443 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
12444 * config/arm/arm-mve-builtins.cc
12445 (function_instance::has_inactive_argument): Handle vmaxnmaq and
12446 vminnmaq.
12447 * config/arm/arm_mve.h (vminnmaq): Remove.
12448 (vmaxnmaq): Remove.
12449 (vmaxnmaq_m): Remove.
12450 (vminnmaq_m): Remove.
12451 (vminnmaq_f16): Remove.
12452 (vmaxnmaq_f16): Remove.
12453 (vminnmaq_f32): Remove.
12454 (vmaxnmaq_f32): Remove.
12455 (vmaxnmaq_m_f16): Remove.
12456 (vminnmaq_m_f16): Remove.
12457 (vmaxnmaq_m_f32): Remove.
12458 (vminnmaq_m_f32): Remove.
12459 (__arm_vminnmaq_f16): Remove.
12460 (__arm_vmaxnmaq_f16): Remove.
12461 (__arm_vminnmaq_f32): Remove.
12462 (__arm_vmaxnmaq_f32): Remove.
12463 (__arm_vmaxnmaq_m_f16): Remove.
12464 (__arm_vminnmaq_m_f16): Remove.
12465 (__arm_vmaxnmaq_m_f32): Remove.
12466 (__arm_vminnmaq_m_f32): Remove.
12467 (__arm_vminnmaq): Remove.
12468 (__arm_vmaxnmaq): Remove.
12469 (__arm_vmaxnmaq_m): Remove.
12470 (__arm_vminnmaq_m): Remove.
12471
12472 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12473
12474 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
12475 (MVE_VMAXNMA_VMINNMAQ_M): New.
12476 (mve_insn): Add vmaxnma, vminnma.
12477 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
12478 Merge into ...
12479 (@mve_<mve_insn>q_f<mode>): ... this.
12480 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
12481 (@mve_<mve_insn>q_m_f<mode>): ... this.
12482
12483 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12484
12485 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
12486 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
12487 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
12488 (vminnmavq, vminnmvq): New.
12489 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
12490 (vminnmavq, vminnmvq): New.
12491 * config/arm/arm_mve.h (vminnmvq): Remove.
12492 (vminnmavq): Remove.
12493 (vmaxnmvq): Remove.
12494 (vmaxnmavq): Remove.
12495 (vmaxnmavq_p): Remove.
12496 (vmaxnmvq_p): Remove.
12497 (vminnmavq_p): Remove.
12498 (vminnmvq_p): Remove.
12499 (vminnmvq_f16): Remove.
12500 (vminnmavq_f16): Remove.
12501 (vmaxnmvq_f16): Remove.
12502 (vmaxnmavq_f16): Remove.
12503 (vminnmvq_f32): Remove.
12504 (vminnmavq_f32): Remove.
12505 (vmaxnmvq_f32): Remove.
12506 (vmaxnmavq_f32): Remove.
12507 (vmaxnmavq_p_f16): Remove.
12508 (vmaxnmvq_p_f16): Remove.
12509 (vminnmavq_p_f16): Remove.
12510 (vminnmvq_p_f16): Remove.
12511 (vmaxnmavq_p_f32): Remove.
12512 (vmaxnmvq_p_f32): Remove.
12513 (vminnmavq_p_f32): Remove.
12514 (vminnmvq_p_f32): Remove.
12515 (__arm_vminnmvq_f16): Remove.
12516 (__arm_vminnmavq_f16): Remove.
12517 (__arm_vmaxnmvq_f16): Remove.
12518 (__arm_vmaxnmavq_f16): Remove.
12519 (__arm_vminnmvq_f32): Remove.
12520 (__arm_vminnmavq_f32): Remove.
12521 (__arm_vmaxnmvq_f32): Remove.
12522 (__arm_vmaxnmavq_f32): Remove.
12523 (__arm_vmaxnmavq_p_f16): Remove.
12524 (__arm_vmaxnmvq_p_f16): Remove.
12525 (__arm_vminnmavq_p_f16): Remove.
12526 (__arm_vminnmvq_p_f16): Remove.
12527 (__arm_vmaxnmavq_p_f32): Remove.
12528 (__arm_vmaxnmvq_p_f32): Remove.
12529 (__arm_vminnmavq_p_f32): Remove.
12530 (__arm_vminnmvq_p_f32): Remove.
12531 (__arm_vminnmvq): Remove.
12532 (__arm_vminnmavq): Remove.
12533 (__arm_vmaxnmvq): Remove.
12534 (__arm_vmaxnmavq): Remove.
12535 (__arm_vmaxnmavq_p): Remove.
12536 (__arm_vmaxnmvq_p): Remove.
12537 (__arm_vminnmavq_p): Remove.
12538 (__arm_vminnmvq_p): Remove.
12539 (__arm_vmaxnmavq_m): Remove.
12540 (__arm_vmaxnmvq_m): Remove.
12541
12542 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12543
12544 * config/arm/arm-mve-builtins-functions.h
12545 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
12546
12547 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12548
12549 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
12550 (MVE_VMAXNMxV_MINNMxVQ_P): New.
12551 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
12552 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
12553 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
12554 (@mve_<mve_insn>q_f<mode>): ... this.
12555 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
12556 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
12557 (@mve_<mve_insn>q_p_f<mode>): ... this.
12558
12559 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12560
12561 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
12562 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
12563 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
12564 * config/arm/arm_mve.h (vminnmq): Remove.
12565 (vmaxnmq): Remove.
12566 (vmaxnmq_m): Remove.
12567 (vminnmq_m): Remove.
12568 (vminnmq_x): Remove.
12569 (vmaxnmq_x): Remove.
12570 (vminnmq_f16): Remove.
12571 (vmaxnmq_f16): Remove.
12572 (vminnmq_f32): Remove.
12573 (vmaxnmq_f32): Remove.
12574 (vmaxnmq_m_f32): Remove.
12575 (vmaxnmq_m_f16): Remove.
12576 (vminnmq_m_f32): Remove.
12577 (vminnmq_m_f16): Remove.
12578 (vminnmq_x_f16): Remove.
12579 (vminnmq_x_f32): Remove.
12580 (vmaxnmq_x_f16): Remove.
12581 (vmaxnmq_x_f32): Remove.
12582 (__arm_vminnmq_f16): Remove.
12583 (__arm_vmaxnmq_f16): Remove.
12584 (__arm_vminnmq_f32): Remove.
12585 (__arm_vmaxnmq_f32): Remove.
12586 (__arm_vmaxnmq_m_f32): Remove.
12587 (__arm_vmaxnmq_m_f16): Remove.
12588 (__arm_vminnmq_m_f32): Remove.
12589 (__arm_vminnmq_m_f16): Remove.
12590 (__arm_vminnmq_x_f16): Remove.
12591 (__arm_vminnmq_x_f32): Remove.
12592 (__arm_vmaxnmq_x_f16): Remove.
12593 (__arm_vmaxnmq_x_f32): Remove.
12594 (__arm_vminnmq): Remove.
12595 (__arm_vmaxnmq): Remove.
12596 (__arm_vmaxnmq_m): Remove.
12597 (__arm_vminnmq_m): Remove.
12598 (__arm_vminnmq_x): Remove.
12599 (__arm_vmaxnmq_x): Remove.
12600
12601 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12602
12603 * config/arm/iterators.md (MAX_MIN_F): New.
12604 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
12605 (mve_insn): Add vmaxnm, vminnm.
12606 (max_min_f_str): New.
12607 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
12608 Merge into ...
12609 (@mve_<max_min_f_str>q_f<mode>): ... this.
12610 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
12611 (@mve_<mve_insn>q_m_f<mode>): ... this.
12612
12613 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12614
12615 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
12616 (smax<mode>3): Likewise.
12617
12618 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12619
12620 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
12621 (FUNCTION_PRED_P_S): New.
12622 (vmaxavq, vminavq, vmaxvq, vminvq): New.
12623 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
12624 (vminvq): New.
12625 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
12626 (vminvq): New.
12627 * config/arm/arm_mve.h (vminvq): Remove.
12628 (vmaxvq): Remove.
12629 (vminvq_p): Remove.
12630 (vmaxvq_p): Remove.
12631 (vminvq_u8): Remove.
12632 (vmaxvq_u8): Remove.
12633 (vminvq_s8): Remove.
12634 (vmaxvq_s8): Remove.
12635 (vminvq_u16): Remove.
12636 (vmaxvq_u16): Remove.
12637 (vminvq_s16): Remove.
12638 (vmaxvq_s16): Remove.
12639 (vminvq_u32): Remove.
12640 (vmaxvq_u32): Remove.
12641 (vminvq_s32): Remove.
12642 (vmaxvq_s32): Remove.
12643 (vminvq_p_u8): Remove.
12644 (vmaxvq_p_u8): Remove.
12645 (vminvq_p_s8): Remove.
12646 (vmaxvq_p_s8): Remove.
12647 (vminvq_p_u16): Remove.
12648 (vmaxvq_p_u16): Remove.
12649 (vminvq_p_s16): Remove.
12650 (vmaxvq_p_s16): Remove.
12651 (vminvq_p_u32): Remove.
12652 (vmaxvq_p_u32): Remove.
12653 (vminvq_p_s32): Remove.
12654 (vmaxvq_p_s32): Remove.
12655 (__arm_vminvq_u8): Remove.
12656 (__arm_vmaxvq_u8): Remove.
12657 (__arm_vminvq_s8): Remove.
12658 (__arm_vmaxvq_s8): Remove.
12659 (__arm_vminvq_u16): Remove.
12660 (__arm_vmaxvq_u16): Remove.
12661 (__arm_vminvq_s16): Remove.
12662 (__arm_vmaxvq_s16): Remove.
12663 (__arm_vminvq_u32): Remove.
12664 (__arm_vmaxvq_u32): Remove.
12665 (__arm_vminvq_s32): Remove.
12666 (__arm_vmaxvq_s32): Remove.
12667 (__arm_vminvq_p_u8): Remove.
12668 (__arm_vmaxvq_p_u8): Remove.
12669 (__arm_vminvq_p_s8): Remove.
12670 (__arm_vmaxvq_p_s8): Remove.
12671 (__arm_vminvq_p_u16): Remove.
12672 (__arm_vmaxvq_p_u16): Remove.
12673 (__arm_vminvq_p_s16): Remove.
12674 (__arm_vmaxvq_p_s16): Remove.
12675 (__arm_vminvq_p_u32): Remove.
12676 (__arm_vmaxvq_p_u32): Remove.
12677 (__arm_vminvq_p_s32): Remove.
12678 (__arm_vmaxvq_p_s32): Remove.
12679 (__arm_vminvq): Remove.
12680 (__arm_vmaxvq): Remove.
12681 (__arm_vminvq_p): Remove.
12682 (__arm_vmaxvq_p): Remove.
12683 (vminavq): Remove.
12684 (vmaxavq): Remove.
12685 (vminavq_p): Remove.
12686 (vmaxavq_p): Remove.
12687 (vminavq_s8): Remove.
12688 (vmaxavq_s8): Remove.
12689 (vminavq_s16): Remove.
12690 (vmaxavq_s16): Remove.
12691 (vminavq_s32): Remove.
12692 (vmaxavq_s32): Remove.
12693 (vminavq_p_s8): Remove.
12694 (vmaxavq_p_s8): Remove.
12695 (vminavq_p_s16): Remove.
12696 (vmaxavq_p_s16): Remove.
12697 (vminavq_p_s32): Remove.
12698 (vmaxavq_p_s32): Remove.
12699 (__arm_vminavq_s8): Remove.
12700 (__arm_vmaxavq_s8): Remove.
12701 (__arm_vminavq_s16): Remove.
12702 (__arm_vmaxavq_s16): Remove.
12703 (__arm_vminavq_s32): Remove.
12704 (__arm_vmaxavq_s32): Remove.
12705 (__arm_vminavq_p_s8): Remove.
12706 (__arm_vmaxavq_p_s8): Remove.
12707 (__arm_vminavq_p_s16): Remove.
12708 (__arm_vmaxavq_p_s16): Remove.
12709 (__arm_vminavq_p_s32): Remove.
12710 (__arm_vmaxavq_p_s32): Remove.
12711 (__arm_vminavq): Remove.
12712 (__arm_vmaxavq): Remove.
12713 (__arm_vminavq_p): Remove.
12714 (__arm_vmaxavq_p): Remove.
12715
12716 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12717
12718 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
12719 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
12720 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
12721 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
12722 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
12723 (@mve_<mve_insn>q_<supf><mode>): ... this.
12724 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
12725 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
12726 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
12727
12728 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12729
12730 * config/arm/arm-mve-builtins-functions.h (class
12731 unspec_mve_function_exact_insn_pred_p): New.
12732
12733 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12734
12735 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
12736 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
12737
12738 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12739
12740 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
12741 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
12742
12743 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
12744
12745 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
12746 Declare.
12747 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
12748 (ADJUST_REG_ALLOC_ORDER): Likewise.
12749 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
12750 function.
12751 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
12752 Upa rather than Upl for unpredicated movprfx alternatives.
12753
12754 2023-05-09 Jeff Law <jlaw@ventanamicro>
12755
12756 * config/h8300/testcompare.md: Add peephole2 which uses a memory
12757 load to set flags, thus eliminating a compare against zero.
12758
12759 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12760
12761 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
12762 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
12763 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
12764 * config/arm/arm_mve.h (vshlltq): Remove.
12765 (vshllbq): Remove.
12766 (vshllbq_m): Remove.
12767 (vshlltq_m): Remove.
12768 (vshllbq_x): Remove.
12769 (vshlltq_x): Remove.
12770 (vshlltq_n_u8): Remove.
12771 (vshllbq_n_u8): Remove.
12772 (vshlltq_n_s8): Remove.
12773 (vshllbq_n_s8): Remove.
12774 (vshlltq_n_u16): Remove.
12775 (vshllbq_n_u16): Remove.
12776 (vshlltq_n_s16): Remove.
12777 (vshllbq_n_s16): Remove.
12778 (vshllbq_m_n_s8): Remove.
12779 (vshllbq_m_n_s16): Remove.
12780 (vshllbq_m_n_u8): Remove.
12781 (vshllbq_m_n_u16): Remove.
12782 (vshlltq_m_n_s8): Remove.
12783 (vshlltq_m_n_s16): Remove.
12784 (vshlltq_m_n_u8): Remove.
12785 (vshlltq_m_n_u16): Remove.
12786 (vshllbq_x_n_s8): Remove.
12787 (vshllbq_x_n_s16): Remove.
12788 (vshllbq_x_n_u8): Remove.
12789 (vshllbq_x_n_u16): Remove.
12790 (vshlltq_x_n_s8): Remove.
12791 (vshlltq_x_n_s16): Remove.
12792 (vshlltq_x_n_u8): Remove.
12793 (vshlltq_x_n_u16): Remove.
12794 (__arm_vshlltq_n_u8): Remove.
12795 (__arm_vshllbq_n_u8): Remove.
12796 (__arm_vshlltq_n_s8): Remove.
12797 (__arm_vshllbq_n_s8): Remove.
12798 (__arm_vshlltq_n_u16): Remove.
12799 (__arm_vshllbq_n_u16): Remove.
12800 (__arm_vshlltq_n_s16): Remove.
12801 (__arm_vshllbq_n_s16): Remove.
12802 (__arm_vshllbq_m_n_s8): Remove.
12803 (__arm_vshllbq_m_n_s16): Remove.
12804 (__arm_vshllbq_m_n_u8): Remove.
12805 (__arm_vshllbq_m_n_u16): Remove.
12806 (__arm_vshlltq_m_n_s8): Remove.
12807 (__arm_vshlltq_m_n_s16): Remove.
12808 (__arm_vshlltq_m_n_u8): Remove.
12809 (__arm_vshlltq_m_n_u16): Remove.
12810 (__arm_vshllbq_x_n_s8): Remove.
12811 (__arm_vshllbq_x_n_s16): Remove.
12812 (__arm_vshllbq_x_n_u8): Remove.
12813 (__arm_vshllbq_x_n_u16): Remove.
12814 (__arm_vshlltq_x_n_s8): Remove.
12815 (__arm_vshlltq_x_n_s16): Remove.
12816 (__arm_vshlltq_x_n_u8): Remove.
12817 (__arm_vshlltq_x_n_u16): Remove.
12818 (__arm_vshlltq): Remove.
12819 (__arm_vshllbq): Remove.
12820 (__arm_vshllbq_m): Remove.
12821 (__arm_vshlltq_m): Remove.
12822 (__arm_vshllbq_x): Remove.
12823 (__arm_vshlltq_x): Remove.
12824
12825 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12826
12827 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
12828 (VSHLLBQ_N, VSHLLTQ_N): Remove.
12829 (VSHLLxQ_N): New.
12830 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
12831 (VSHLLxQ_M_N): New.
12832 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
12833 (mve_vshlltq_n_<supf><mode>): Merge into ...
12834 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12835 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
12836 Merge into ...
12837 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12838
12839 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12840
12841 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
12842 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
12843
12844 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12845
12846 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
12847 (vqmovntq, vqmovunbq, vqmovuntq): New.
12848 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
12849 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
12850 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
12851 (vqmovntq, vqmovunbq, vqmovuntq): New.
12852 * config/arm/arm-mve-builtins.cc
12853 (function_instance::has_inactive_argument): Handle vmovnbq,
12854 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
12855 * config/arm/arm_mve.h (vqmovntq): Remove.
12856 (vqmovnbq): Remove.
12857 (vqmovnbq_m): Remove.
12858 (vqmovntq_m): Remove.
12859 (vqmovntq_u16): Remove.
12860 (vqmovnbq_u16): Remove.
12861 (vqmovntq_s16): Remove.
12862 (vqmovnbq_s16): Remove.
12863 (vqmovntq_u32): Remove.
12864 (vqmovnbq_u32): Remove.
12865 (vqmovntq_s32): Remove.
12866 (vqmovnbq_s32): Remove.
12867 (vqmovnbq_m_s16): Remove.
12868 (vqmovntq_m_s16): Remove.
12869 (vqmovnbq_m_u16): Remove.
12870 (vqmovntq_m_u16): Remove.
12871 (vqmovnbq_m_s32): Remove.
12872 (vqmovntq_m_s32): Remove.
12873 (vqmovnbq_m_u32): Remove.
12874 (vqmovntq_m_u32): Remove.
12875 (__arm_vqmovntq_u16): Remove.
12876 (__arm_vqmovnbq_u16): Remove.
12877 (__arm_vqmovntq_s16): Remove.
12878 (__arm_vqmovnbq_s16): Remove.
12879 (__arm_vqmovntq_u32): Remove.
12880 (__arm_vqmovnbq_u32): Remove.
12881 (__arm_vqmovntq_s32): Remove.
12882 (__arm_vqmovnbq_s32): Remove.
12883 (__arm_vqmovnbq_m_s16): Remove.
12884 (__arm_vqmovntq_m_s16): Remove.
12885 (__arm_vqmovnbq_m_u16): Remove.
12886 (__arm_vqmovntq_m_u16): Remove.
12887 (__arm_vqmovnbq_m_s32): Remove.
12888 (__arm_vqmovntq_m_s32): Remove.
12889 (__arm_vqmovnbq_m_u32): Remove.
12890 (__arm_vqmovntq_m_u32): Remove.
12891 (__arm_vqmovntq): Remove.
12892 (__arm_vqmovnbq): Remove.
12893 (__arm_vqmovnbq_m): Remove.
12894 (__arm_vqmovntq_m): Remove.
12895 (vmovntq): Remove.
12896 (vmovnbq): Remove.
12897 (vmovnbq_m): Remove.
12898 (vmovntq_m): Remove.
12899 (vmovntq_u16): Remove.
12900 (vmovnbq_u16): Remove.
12901 (vmovntq_s16): Remove.
12902 (vmovnbq_s16): Remove.
12903 (vmovntq_u32): Remove.
12904 (vmovnbq_u32): Remove.
12905 (vmovntq_s32): Remove.
12906 (vmovnbq_s32): Remove.
12907 (vmovnbq_m_s16): Remove.
12908 (vmovntq_m_s16): Remove.
12909 (vmovnbq_m_u16): Remove.
12910 (vmovntq_m_u16): Remove.
12911 (vmovnbq_m_s32): Remove.
12912 (vmovntq_m_s32): Remove.
12913 (vmovnbq_m_u32): Remove.
12914 (vmovntq_m_u32): Remove.
12915 (__arm_vmovntq_u16): Remove.
12916 (__arm_vmovnbq_u16): Remove.
12917 (__arm_vmovntq_s16): Remove.
12918 (__arm_vmovnbq_s16): Remove.
12919 (__arm_vmovntq_u32): Remove.
12920 (__arm_vmovnbq_u32): Remove.
12921 (__arm_vmovntq_s32): Remove.
12922 (__arm_vmovnbq_s32): Remove.
12923 (__arm_vmovnbq_m_s16): Remove.
12924 (__arm_vmovntq_m_s16): Remove.
12925 (__arm_vmovnbq_m_u16): Remove.
12926 (__arm_vmovntq_m_u16): Remove.
12927 (__arm_vmovnbq_m_s32): Remove.
12928 (__arm_vmovntq_m_s32): Remove.
12929 (__arm_vmovnbq_m_u32): Remove.
12930 (__arm_vmovntq_m_u32): Remove.
12931 (__arm_vmovntq): Remove.
12932 (__arm_vmovnbq): Remove.
12933 (__arm_vmovnbq_m): Remove.
12934 (__arm_vmovntq_m): Remove.
12935 (vqmovuntq): Remove.
12936 (vqmovunbq): Remove.
12937 (vqmovunbq_m): Remove.
12938 (vqmovuntq_m): Remove.
12939 (vqmovuntq_s16): Remove.
12940 (vqmovunbq_s16): Remove.
12941 (vqmovuntq_s32): Remove.
12942 (vqmovunbq_s32): Remove.
12943 (vqmovunbq_m_s16): Remove.
12944 (vqmovuntq_m_s16): Remove.
12945 (vqmovunbq_m_s32): Remove.
12946 (vqmovuntq_m_s32): Remove.
12947 (__arm_vqmovuntq_s16): Remove.
12948 (__arm_vqmovunbq_s16): Remove.
12949 (__arm_vqmovuntq_s32): Remove.
12950 (__arm_vqmovunbq_s32): Remove.
12951 (__arm_vqmovunbq_m_s16): Remove.
12952 (__arm_vqmovuntq_m_s16): Remove.
12953 (__arm_vqmovunbq_m_s32): Remove.
12954 (__arm_vqmovuntq_m_s32): Remove.
12955 (__arm_vqmovuntq): Remove.
12956 (__arm_vqmovunbq): Remove.
12957 (__arm_vqmovunbq_m): Remove.
12958 (__arm_vqmovuntq_m): Remove.
12959
12960 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12961
12962 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
12963 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
12964 vqmovunt.
12965 (isu): Likewise.
12966 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
12967 VQMOVUNTQ_S.
12968 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
12969 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
12970 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
12971 (mve_vqmovuntq_s<mode>): Merge into ...
12972 (@mve_<mve_insn>q_<supf><mode>): ... this.
12973 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
12974 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
12975 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
12976 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12977
12978 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12979
12980 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
12981 (binary_move_narrow_unsigned): New.
12982 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
12983 (binary_move_narrow_unsigned): New.
12984
12985 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12986
12987 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
12988 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
12989 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
12990 (vrndpq, vrndq, vrndxq): New.
12991 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
12992 (vrndpq, vrndq, vrndxq): New.
12993 * config/arm/arm_mve.h (vrndxq): Remove.
12994 (vrndq): Remove.
12995 (vrndpq): Remove.
12996 (vrndnq): Remove.
12997 (vrndmq): Remove.
12998 (vrndaq): Remove.
12999 (vrndaq_m): Remove.
13000 (vrndmq_m): Remove.
13001 (vrndnq_m): Remove.
13002 (vrndpq_m): Remove.
13003 (vrndq_m): Remove.
13004 (vrndxq_m): Remove.
13005 (vrndq_x): Remove.
13006 (vrndnq_x): Remove.
13007 (vrndmq_x): Remove.
13008 (vrndpq_x): Remove.
13009 (vrndaq_x): Remove.
13010 (vrndxq_x): Remove.
13011 (vrndxq_f16): Remove.
13012 (vrndxq_f32): Remove.
13013 (vrndq_f16): Remove.
13014 (vrndq_f32): Remove.
13015 (vrndpq_f16): Remove.
13016 (vrndpq_f32): Remove.
13017 (vrndnq_f16): Remove.
13018 (vrndnq_f32): Remove.
13019 (vrndmq_f16): Remove.
13020 (vrndmq_f32): Remove.
13021 (vrndaq_f16): Remove.
13022 (vrndaq_f32): Remove.
13023 (vrndaq_m_f16): Remove.
13024 (vrndmq_m_f16): Remove.
13025 (vrndnq_m_f16): Remove.
13026 (vrndpq_m_f16): Remove.
13027 (vrndq_m_f16): Remove.
13028 (vrndxq_m_f16): Remove.
13029 (vrndaq_m_f32): Remove.
13030 (vrndmq_m_f32): Remove.
13031 (vrndnq_m_f32): Remove.
13032 (vrndpq_m_f32): Remove.
13033 (vrndq_m_f32): Remove.
13034 (vrndxq_m_f32): Remove.
13035 (vrndq_x_f16): Remove.
13036 (vrndq_x_f32): Remove.
13037 (vrndnq_x_f16): Remove.
13038 (vrndnq_x_f32): Remove.
13039 (vrndmq_x_f16): Remove.
13040 (vrndmq_x_f32): Remove.
13041 (vrndpq_x_f16): Remove.
13042 (vrndpq_x_f32): Remove.
13043 (vrndaq_x_f16): Remove.
13044 (vrndaq_x_f32): Remove.
13045 (vrndxq_x_f16): Remove.
13046 (vrndxq_x_f32): Remove.
13047 (__arm_vrndxq_f16): Remove.
13048 (__arm_vrndxq_f32): Remove.
13049 (__arm_vrndq_f16): Remove.
13050 (__arm_vrndq_f32): Remove.
13051 (__arm_vrndpq_f16): Remove.
13052 (__arm_vrndpq_f32): Remove.
13053 (__arm_vrndnq_f16): Remove.
13054 (__arm_vrndnq_f32): Remove.
13055 (__arm_vrndmq_f16): Remove.
13056 (__arm_vrndmq_f32): Remove.
13057 (__arm_vrndaq_f16): Remove.
13058 (__arm_vrndaq_f32): Remove.
13059 (__arm_vrndaq_m_f16): Remove.
13060 (__arm_vrndmq_m_f16): Remove.
13061 (__arm_vrndnq_m_f16): Remove.
13062 (__arm_vrndpq_m_f16): Remove.
13063 (__arm_vrndq_m_f16): Remove.
13064 (__arm_vrndxq_m_f16): Remove.
13065 (__arm_vrndaq_m_f32): Remove.
13066 (__arm_vrndmq_m_f32): Remove.
13067 (__arm_vrndnq_m_f32): Remove.
13068 (__arm_vrndpq_m_f32): Remove.
13069 (__arm_vrndq_m_f32): Remove.
13070 (__arm_vrndxq_m_f32): Remove.
13071 (__arm_vrndq_x_f16): Remove.
13072 (__arm_vrndq_x_f32): Remove.
13073 (__arm_vrndnq_x_f16): Remove.
13074 (__arm_vrndnq_x_f32): Remove.
13075 (__arm_vrndmq_x_f16): Remove.
13076 (__arm_vrndmq_x_f32): Remove.
13077 (__arm_vrndpq_x_f16): Remove.
13078 (__arm_vrndpq_x_f32): Remove.
13079 (__arm_vrndaq_x_f16): Remove.
13080 (__arm_vrndaq_x_f32): Remove.
13081 (__arm_vrndxq_x_f16): Remove.
13082 (__arm_vrndxq_x_f32): Remove.
13083 (__arm_vrndxq): Remove.
13084 (__arm_vrndq): Remove.
13085 (__arm_vrndpq): Remove.
13086 (__arm_vrndnq): Remove.
13087 (__arm_vrndmq): Remove.
13088 (__arm_vrndaq): Remove.
13089 (__arm_vrndaq_m): Remove.
13090 (__arm_vrndmq_m): Remove.
13091 (__arm_vrndnq_m): Remove.
13092 (__arm_vrndpq_m): Remove.
13093 (__arm_vrndq_m): Remove.
13094 (__arm_vrndxq_m): Remove.
13095 (__arm_vrndq_x): Remove.
13096 (__arm_vrndnq_x): Remove.
13097 (__arm_vrndmq_x): Remove.
13098 (__arm_vrndpq_x): Remove.
13099 (__arm_vrndaq_x): Remove.
13100 (__arm_vrndxq_x): Remove.
13101
13102 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
13103
13104 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
13105 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
13106 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
13107 (vclzq, vqabsq, vqnegq): New.
13108 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
13109 (vqabsq, vqnegq): New.
13110 * config/arm/arm_mve.h (vabsq): Remove.
13111 (vabsq_m): Remove.
13112 (vabsq_x): Remove.
13113 (vabsq_f16): Remove.
13114 (vabsq_f32): Remove.
13115 (vabsq_s8): Remove.
13116 (vabsq_s16): Remove.
13117 (vabsq_s32): Remove.
13118 (vabsq_m_s8): Remove.
13119 (vabsq_m_s16): Remove.
13120 (vabsq_m_s32): Remove.
13121 (vabsq_m_f16): Remove.
13122 (vabsq_m_f32): Remove.
13123 (vabsq_x_s8): Remove.
13124 (vabsq_x_s16): Remove.
13125 (vabsq_x_s32): Remove.
13126 (vabsq_x_f16): Remove.
13127 (vabsq_x_f32): Remove.
13128 (__arm_vabsq_s8): Remove.
13129 (__arm_vabsq_s16): Remove.
13130 (__arm_vabsq_s32): Remove.
13131 (__arm_vabsq_m_s8): Remove.
13132 (__arm_vabsq_m_s16): Remove.
13133 (__arm_vabsq_m_s32): Remove.
13134 (__arm_vabsq_x_s8): Remove.
13135 (__arm_vabsq_x_s16): Remove.
13136 (__arm_vabsq_x_s32): Remove.
13137 (__arm_vabsq_f16): Remove.
13138 (__arm_vabsq_f32): Remove.
13139 (__arm_vabsq_m_f16): Remove.
13140 (__arm_vabsq_m_f32): Remove.
13141 (__arm_vabsq_x_f16): Remove.
13142 (__arm_vabsq_x_f32): Remove.
13143 (__arm_vabsq): Remove.
13144 (__arm_vabsq_m): Remove.
13145 (__arm_vabsq_x): Remove.
13146 (vnegq): Remove.
13147 (vnegq_m): Remove.
13148 (vnegq_x): Remove.
13149 (vnegq_f16): Remove.
13150 (vnegq_f32): Remove.
13151 (vnegq_s8): Remove.
13152 (vnegq_s16): Remove.
13153 (vnegq_s32): Remove.
13154 (vnegq_m_s8): Remove.
13155 (vnegq_m_s16): Remove.
13156 (vnegq_m_s32): Remove.
13157 (vnegq_m_f16): Remove.
13158 (vnegq_m_f32): Remove.
13159 (vnegq_x_s8): Remove.
13160 (vnegq_x_s16): Remove.
13161 (vnegq_x_s32): Remove.
13162 (vnegq_x_f16): Remove.
13163 (vnegq_x_f32): Remove.
13164 (__arm_vnegq_s8): Remove.
13165 (__arm_vnegq_s16): Remove.
13166 (__arm_vnegq_s32): Remove.
13167 (__arm_vnegq_m_s8): Remove.
13168 (__arm_vnegq_m_s16): Remove.
13169 (__arm_vnegq_m_s32): Remove.
13170 (__arm_vnegq_x_s8): Remove.
13171 (__arm_vnegq_x_s16): Remove.
13172 (__arm_vnegq_x_s32): Remove.
13173 (__arm_vnegq_f16): Remove.
13174 (__arm_vnegq_f32): Remove.
13175 (__arm_vnegq_m_f16): Remove.
13176 (__arm_vnegq_m_f32): Remove.
13177 (__arm_vnegq_x_f16): Remove.
13178 (__arm_vnegq_x_f32): Remove.
13179 (__arm_vnegq): Remove.
13180 (__arm_vnegq_m): Remove.
13181 (__arm_vnegq_x): Remove.
13182 (vclsq): Remove.
13183 (vclsq_m): Remove.
13184 (vclsq_x): Remove.
13185 (vclsq_s8): Remove.
13186 (vclsq_s16): Remove.
13187 (vclsq_s32): Remove.
13188 (vclsq_m_s8): Remove.
13189 (vclsq_m_s16): Remove.
13190 (vclsq_m_s32): Remove.
13191 (vclsq_x_s8): Remove.
13192 (vclsq_x_s16): Remove.
13193 (vclsq_x_s32): Remove.
13194 (__arm_vclsq_s8): Remove.
13195 (__arm_vclsq_s16): Remove.
13196 (__arm_vclsq_s32): Remove.
13197 (__arm_vclsq_m_s8): Remove.
13198 (__arm_vclsq_m_s16): Remove.
13199 (__arm_vclsq_m_s32): Remove.
13200 (__arm_vclsq_x_s8): Remove.
13201 (__arm_vclsq_x_s16): Remove.
13202 (__arm_vclsq_x_s32): Remove.
13203 (__arm_vclsq): Remove.
13204 (__arm_vclsq_m): Remove.
13205 (__arm_vclsq_x): Remove.
13206 (vclzq): Remove.
13207 (vclzq_m): Remove.
13208 (vclzq_x): Remove.
13209 (vclzq_s8): Remove.
13210 (vclzq_s16): Remove.
13211 (vclzq_s32): Remove.
13212 (vclzq_u8): Remove.
13213 (vclzq_u16): Remove.
13214 (vclzq_u32): Remove.
13215 (vclzq_m_u8): Remove.
13216 (vclzq_m_s8): Remove.
13217 (vclzq_m_u16): Remove.
13218 (vclzq_m_s16): Remove.
13219 (vclzq_m_u32): Remove.
13220 (vclzq_m_s32): Remove.
13221 (vclzq_x_s8): Remove.
13222 (vclzq_x_s16): Remove.
13223 (vclzq_x_s32): Remove.
13224 (vclzq_x_u8): Remove.
13225 (vclzq_x_u16): Remove.
13226 (vclzq_x_u32): Remove.
13227 (__arm_vclzq_s8): Remove.
13228 (__arm_vclzq_s16): Remove.
13229 (__arm_vclzq_s32): Remove.
13230 (__arm_vclzq_u8): Remove.
13231 (__arm_vclzq_u16): Remove.
13232 (__arm_vclzq_u32): Remove.
13233 (__arm_vclzq_m_u8): Remove.
13234 (__arm_vclzq_m_s8): Remove.
13235 (__arm_vclzq_m_u16): Remove.
13236 (__arm_vclzq_m_s16): Remove.
13237 (__arm_vclzq_m_u32): Remove.
13238 (__arm_vclzq_m_s32): Remove.
13239 (__arm_vclzq_x_s8): Remove.
13240 (__arm_vclzq_x_s16): Remove.
13241 (__arm_vclzq_x_s32): Remove.
13242 (__arm_vclzq_x_u8): Remove.
13243 (__arm_vclzq_x_u16): Remove.
13244 (__arm_vclzq_x_u32): Remove.
13245 (__arm_vclzq): Remove.
13246 (__arm_vclzq_m): Remove.
13247 (__arm_vclzq_x): Remove.
13248 (vqabsq): Remove.
13249 (vqnegq): Remove.
13250 (vqnegq_m): Remove.
13251 (vqabsq_m): Remove.
13252 (vqabsq_s8): Remove.
13253 (vqabsq_s16): Remove.
13254 (vqabsq_s32): Remove.
13255 (vqnegq_s8): Remove.
13256 (vqnegq_s16): Remove.
13257 (vqnegq_s32): Remove.
13258 (vqnegq_m_s8): Remove.
13259 (vqabsq_m_s8): Remove.
13260 (vqnegq_m_s16): Remove.
13261 (vqabsq_m_s16): Remove.
13262 (vqnegq_m_s32): Remove.
13263 (vqabsq_m_s32): Remove.
13264 (__arm_vqabsq_s8): Remove.
13265 (__arm_vqabsq_s16): Remove.
13266 (__arm_vqabsq_s32): Remove.
13267 (__arm_vqnegq_s8): Remove.
13268 (__arm_vqnegq_s16): Remove.
13269 (__arm_vqnegq_s32): Remove.
13270 (__arm_vqnegq_m_s8): Remove.
13271 (__arm_vqabsq_m_s8): Remove.
13272 (__arm_vqnegq_m_s16): Remove.
13273 (__arm_vqabsq_m_s16): Remove.
13274 (__arm_vqnegq_m_s32): Remove.
13275 (__arm_vqabsq_m_s32): Remove.
13276 (__arm_vqabsq): Remove.
13277 (__arm_vqnegq): Remove.
13278 (__arm_vqnegq_m): Remove.
13279 (__arm_vqabsq_m): Remove.
13280
13281 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
13282
13283 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
13284 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
13285 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
13286 vrndm, vrndn, vrndp, vrnd, vrndx.
13287 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
13288 VQABSQ_M_S, VQNEGQ_M_S.
13289 (mve_mnemo): New.
13290 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
13291 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
13292 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
13293 (@mve_<mve_insn>q_f<mode>): ... this.
13294 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
13295 (mve_v<absneg_str>q_f<mode>): ... this.
13296 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
13297 (mve_v<absneg_str>q_s<mode>): ... this.
13298 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
13299 (@mve_<mve_insn>q_<supf><mode>): ... this.
13300 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
13301 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
13302 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
13303 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
13304 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
13305 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
13306 (mve_vrndxq_m_f<mode>): Merge into ...
13307 (@mve_<mve_insn>q_m_f<mode>): ... this.
13308
13309 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
13310
13311 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
13312 * config/arm/arm-mve-builtins-shapes.h (unary): New.
13313
13314 2023-05-09 Jakub Jelinek <jakub@redhat.com>
13315
13316 * mux-utils.h: Fix comment typo, avoides -> avoids.
13317
13318 2023-05-09 Jakub Jelinek <jakub@redhat.com>
13319
13320 PR tree-optimization/109778
13321 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
13322 wi::zext (x, width) rather than x if width != precision, rather
13323 than using wi::zext (right, width) after the shift.
13324 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
13325 of wi::lrotate or wi::rrotate.
13326
13327 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
13328
13329 * genmatch.cc (get_out_file): Make static and rename to ...
13330 (choose_output): ... this. Reimplement. Update all uses ...
13331 (decision_tree::gen): ... here and ...
13332 (main): ... here.
13333
13334 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
13335
13336 * genmatch.cc (showUsage): Reimplement as ...
13337 (usage): ...this. Adjust all uses.
13338 (main): Print usage when no arguments. Add missing 'return 1'.
13339
13340 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
13341
13342 * genmatch.cc (header_file): Make static.
13343 (emit_func): Rename to...
13344 (fp_decl): ... this. Adjust all uses.
13345 (fp_decl_done): New function. Use it...
13346 (decision_tree::gen): ... here and...
13347 (write_predicate): ... here.
13348 (main): Adjust.
13349
13350 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
13351
13352 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
13353 earlyclobbers.
13354
13355 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
13356 Uros Bizjak <ubizjak@gmail.com>
13357
13358 * config/i386/i386.md (any_or_plus): Move definition earlier.
13359 (*insvti_highpart_1): New define_insn_and_split to overwrite
13360 (insv) the highpart of a TImode register/memory.
13361
13362 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
13363
13364 * auto-profile.cc (auto_profile): Check todo from early_inline
13365 to see if cleanup_tree_vfg needs to be called.
13366 (early_inline): Return todo from early_inliner.
13367
13368 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
13369
13370 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
13371 New.
13372 (pass_vsetvl::get_block_info): New.
13373 (pass_vsetvl::update_vector_info): New.
13374 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
13375 (pass_vsetvl::compute_local_backward_infos): Ditto.
13376 (pass_vsetvl::transfer_before): Ditto.
13377 (pass_vsetvl::transfer_after): Ditto.
13378 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
13379 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
13380 (pass_vsetvl::cleanup_insns): Ditto.
13381 (pass_vsetvl::compute_local_backward_infos): Use
13382 update_vector_info.
13383
13384 2023-05-08 Jeff Law <jlaw@ventanamicro>
13385
13386 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
13387
13388 2023-05-08 Richard Biener <rguenther@suse.de>
13389 Michael Meissner <meissner@linux.ibm.com>
13390
13391 PR middle-end/108623
13392 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
13393 Align bit fields > 1 bit to at least an 8-bit boundary.
13394
13395 2023-05-08 Andrew Pinski <apinski@marvell.com>
13396
13397 PR tree-optimization/109424
13398 PR tree-optimization/59424
13399 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
13400 (factor_out_conditional_operation): This and add support for all unary
13401 operations.
13402 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
13403 to call factor_out_conditional_operation instead.
13404
13405 2023-05-08 Andrew Pinski <apinski@marvell.com>
13406
13407 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
13408 over factor_out_conditional_conversion.
13409
13410 2023-05-08 Andrew Pinski <apinski@marvell.com>
13411
13412 PR tree-optimization/49959
13413 PR tree-optimization/103771
13414 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
13415 Diamond shapped bb form for factor_out_conditional_conversion.
13416
13417 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13418
13419 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
13420 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
13421 (riscv_vector_get_mask_mode): Ditto.
13422 (get_mask_policy_no_pred): Ditto.
13423 (get_tail_policy_no_pred): Ditto.
13424 (get_mask_mode): New function.
13425 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
13426 (get_tail_policy_no_pred): Ditto.
13427 (riscv_vector_mask_mode_p): Ditto.
13428 (riscv_vector_get_mask_mode): Ditto.
13429 (get_mask_mode): New function.
13430 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
13431 global extern.
13432 (get_tail_policy_for_pred): Ditto.
13433 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
13434 (get_mask_policy_for_pred): Ditto
13435 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
13436
13437 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
13438
13439 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
13440 (riscv_select_multilib): New.
13441 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
13442 also handle select_by_abi.
13443 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
13444 to select_by_abi_arch_cmodel from 1.
13445 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
13446 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
13447
13448 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
13449
13450 * Makefile.in: (gimple-match-head.o-warn): Remove.
13451 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
13452 gimple-match-exports.cc.
13453 (gimple-match-auto.h): Only depend on s-gimple-match.
13454 (generic-match-auto.h): Likewise.
13455
13456 2023-05-08 Andrew Pinski <apinski@marvell.com>
13457
13458 PR tree-optimization/109691
13459 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
13460 argument.
13461 If the removed statement can throw, have need_eh_cleanup
13462 include the bb of that statement.
13463 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
13464 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
13465 num_dce.
13466 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
13467 Initialize dceworklist instead of stmts_to_remove.
13468 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
13469 Destore dceworklist instead of stmts_to_remove.
13470 (substitute_and_fold_dom_walker::before_dom_children):
13471 Set dceworklist instead of adding to stmts_to_remove.
13472 (substitute_and_fold_engine::substitute_and_fold):
13473 Call simple_dce_from_worklist instead of poping
13474 from the list.
13475 Don't update the stat on removal statements.
13476
13477 2023-05-07 Andrew Pinski <apinski@marvell.com>
13478
13479 PR target/109762
13480 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
13481 Change argument type to aarch64_feature_flags.
13482 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
13483 constructor argument type to aarch64_feature_flags.
13484 Change m_old_asm_isa_flags to be aarch64_feature_flags.
13485
13486 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
13487
13488 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
13489 more parallel code if can_create_pseudo_p.
13490
13491 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
13492
13493 PR target/43644
13494 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
13495 immediately before moving a multi-word register by parts.
13496
13497 2023-05-06 Jeff Law <jlaw@ventanamicro>
13498
13499 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
13500
13501 2023-05-06 Michael Collison <collison@rivosinc.com>
13502
13503 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
13504 Check that GET_MODE_NUNITS is a multiple of 2.
13505
13506 2023-05-06 Michael Collison <collison@rivosinc.com>
13507
13508 * config/riscv/riscv.cc
13509 (riscv_estimated_poly_value): Implement
13510 TARGET_ESTIMATED_POLY_VALUE.
13511 (riscv_preferred_simd_mode): Implement
13512 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
13513 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
13514 (riscv_empty_mask_is_expensive): Implement
13515 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
13516 (riscv_vectorize_create_costs): Implement
13517 TARGET_VECTORIZE_CREATE_COSTS.
13518 (riscv_support_vector_misalignment): Implement
13519 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
13520 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
13521 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
13522 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
13523 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
13524
13525 2023-05-06 Jeff Law <jlaw@ventanamicro>
13526
13527 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
13528 duplicate definition.
13529
13530 2023-05-06 Michael Collison <collison@rivosinc.com>
13531
13532 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
13533 (riscv_vector_preferred_simd_mode): Ditto.
13534 (get_mask_policy_no_pred): Ditto.
13535 (get_tail_policy_no_pred): Ditto.
13536 (riscv_vector_mask_mode_p): Ditto.
13537 (riscv_vector_get_mask_mode): Ditto.
13538
13539 2023-05-06 Michael Collison <collison@rivosinc.com>
13540
13541 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
13542 Remove static declaration to to make externally visible.
13543 (get_mask_policy_for_pred): Ditto.
13544 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
13545 New external declaration.
13546 (get_mask_policy_for_pred): Ditto.
13547
13548 2023-05-06 Michael Collison <collison@rivosinc.com>
13549
13550 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
13551 (riscv_vector_get_mask_mode): Ditto.
13552 (get_mask_policy_no_pred): Ditto.
13553 (get_tail_policy_no_pred): Ditto.
13554
13555 2023-05-06 Xi Ruoyao <xry111@xry111.site>
13556
13557 * config/loongarch/loongarch.h (struct machine_function): Add
13558 reg_is_wrapped_separately array for register wrapping
13559 information.
13560 * config/loongarch/loongarch.cc
13561 (loongarch_get_separate_components): New function.
13562 (loongarch_components_for_bb): Likewise.
13563 (loongarch_disqualify_components): Likewise.
13564 (loongarch_process_components): Likewise.
13565 (loongarch_emit_prologue_components): Likewise.
13566 (loongarch_emit_epilogue_components): Likewise.
13567 (loongarch_set_handled_components): Likewise.
13568 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
13569 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
13570 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
13571 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
13572 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
13573 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
13574 (loongarch_for_each_saved_reg): Skip registers that are wrapped
13575 separately.
13576
13577 2023-05-06 Xi Ruoyao <xry111@xry111.site>
13578
13579 PR other/109522
13580 * Makefile.in (s-macro_list): Pass -nostdinc to
13581 $(GCC_FOR_TARGET).
13582
13583 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13584
13585 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
13586 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
13587 (preferred_simd_mode): Ditto.
13588 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
13589 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
13590 (riscv_preferred_simd_mode): New function.
13591 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
13592 * config/riscv/vector.md: Add autovec.md.
13593 * config/riscv/autovec.md: New file.
13594
13595 2023-05-06 Jakub Jelinek <jakub@redhat.com>
13596
13597 * real.h (dconst_pi): Define.
13598 (dconst_e_ptr): Formatting fix.
13599 (dconst_pi_ptr): Declare.
13600 * real.cc (dconst_pi_ptr): New function.
13601 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
13602 boundaries range with range computed from sin/cos of the particular
13603 bounds if the argument range is shorter than 2*pi.
13604 (cfn_sincos::op1_range): Take bulps into account when determining
13605 which result ranges are always invalid or behave like known NAN.
13606
13607 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
13608
13609 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
13610 pass type to vrange_storage::equal_p.
13611 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
13612 (irange_storage::equal_p): Same.
13613 (frange_storage::equal_p): Same.
13614 * value-range-storage.h (class frange_storage): Same.
13615
13616 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13617
13618 PR target/109748
13619 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
13620 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
13621
13622 2023-05-06 liuhongt <hongtao.liu@intel.com>
13623
13624 * combine.cc (maybe_swap_commutative_operands): Canonicalize
13625 vec_merge when mask is constant.
13626 * doc/md.texi: Document vec_merge canonicalization.
13627
13628 2023-05-06 Jakub Jelinek <jakub@redhat.com>
13629
13630 * value-range.h (frange_arithmetic): Declare.
13631 * range-op-float.cc (frange_arithmetic): No longer static.
13632 * gimple-range-op.cc (frange_mpfr_arg1): New function.
13633 (cfn_sqrt::fold_range): Intersect the generic boundaries range
13634 with range computed from sqrt of the particular bounds.
13635 (cfn_sqrt::op1_range): Intersect the generic boundaries range
13636 with range computed from squared particular bounds.
13637
13638 2023-05-06 Jakub Jelinek <jakub@redhat.com>
13639
13640 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
13641 earlier with helper variables also renamed.
13642 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
13643 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
13644 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
13645
13646 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
13647
13648 * config/cris/cris.md (splitop): Add PLUS.
13649 * config/cris/cris.cc (cris_split_constant): Also handle
13650 PLUS when a split into two insns may be useful.
13651
13652 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
13653
13654 * config/cris/cris.md (movandsplit1): New define_peephole2.
13655
13656 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
13657
13658 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
13659
13660 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
13661
13662 * doc/md.texi (define_peephole2): Document order of scanning.
13663
13664 2023-05-05 Pan Li <pan2.li@intel.com>
13665 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13666
13667 * config/riscv/vector.md: Allow const as the operand of RVV
13668 indexed load/store.
13669
13670 2023-05-05 Pan Li <pan2.li@intel.com>
13671
13672 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
13673 consumed by simplify_rtx.
13674
13675 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13676
13677 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
13678 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
13679 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
13680 * config/arm/arm_mve.h (vshrq): Remove.
13681 (vrshrq): Remove.
13682 (vrshrq_m): Remove.
13683 (vshrq_m): Remove.
13684 (vrshrq_x): Remove.
13685 (vshrq_x): Remove.
13686 (vshrq_n_s8): Remove.
13687 (vshrq_n_s16): Remove.
13688 (vshrq_n_s32): Remove.
13689 (vshrq_n_u8): Remove.
13690 (vshrq_n_u16): Remove.
13691 (vshrq_n_u32): Remove.
13692 (vrshrq_n_u8): Remove.
13693 (vrshrq_n_s8): Remove.
13694 (vrshrq_n_u16): Remove.
13695 (vrshrq_n_s16): Remove.
13696 (vrshrq_n_u32): Remove.
13697 (vrshrq_n_s32): Remove.
13698 (vrshrq_m_n_s8): Remove.
13699 (vrshrq_m_n_s32): Remove.
13700 (vrshrq_m_n_s16): Remove.
13701 (vrshrq_m_n_u8): Remove.
13702 (vrshrq_m_n_u32): Remove.
13703 (vrshrq_m_n_u16): Remove.
13704 (vshrq_m_n_s8): Remove.
13705 (vshrq_m_n_s32): Remove.
13706 (vshrq_m_n_s16): Remove.
13707 (vshrq_m_n_u8): Remove.
13708 (vshrq_m_n_u32): Remove.
13709 (vshrq_m_n_u16): Remove.
13710 (vrshrq_x_n_s8): Remove.
13711 (vrshrq_x_n_s16): Remove.
13712 (vrshrq_x_n_s32): Remove.
13713 (vrshrq_x_n_u8): Remove.
13714 (vrshrq_x_n_u16): Remove.
13715 (vrshrq_x_n_u32): Remove.
13716 (vshrq_x_n_s8): Remove.
13717 (vshrq_x_n_s16): Remove.
13718 (vshrq_x_n_s32): Remove.
13719 (vshrq_x_n_u8): Remove.
13720 (vshrq_x_n_u16): Remove.
13721 (vshrq_x_n_u32): Remove.
13722 (__arm_vshrq_n_s8): Remove.
13723 (__arm_vshrq_n_s16): Remove.
13724 (__arm_vshrq_n_s32): Remove.
13725 (__arm_vshrq_n_u8): Remove.
13726 (__arm_vshrq_n_u16): Remove.
13727 (__arm_vshrq_n_u32): Remove.
13728 (__arm_vrshrq_n_u8): Remove.
13729 (__arm_vrshrq_n_s8): Remove.
13730 (__arm_vrshrq_n_u16): Remove.
13731 (__arm_vrshrq_n_s16): Remove.
13732 (__arm_vrshrq_n_u32): Remove.
13733 (__arm_vrshrq_n_s32): Remove.
13734 (__arm_vrshrq_m_n_s8): Remove.
13735 (__arm_vrshrq_m_n_s32): Remove.
13736 (__arm_vrshrq_m_n_s16): Remove.
13737 (__arm_vrshrq_m_n_u8): Remove.
13738 (__arm_vrshrq_m_n_u32): Remove.
13739 (__arm_vrshrq_m_n_u16): Remove.
13740 (__arm_vshrq_m_n_s8): Remove.
13741 (__arm_vshrq_m_n_s32): Remove.
13742 (__arm_vshrq_m_n_s16): Remove.
13743 (__arm_vshrq_m_n_u8): Remove.
13744 (__arm_vshrq_m_n_u32): Remove.
13745 (__arm_vshrq_m_n_u16): Remove.
13746 (__arm_vrshrq_x_n_s8): Remove.
13747 (__arm_vrshrq_x_n_s16): Remove.
13748 (__arm_vrshrq_x_n_s32): Remove.
13749 (__arm_vrshrq_x_n_u8): Remove.
13750 (__arm_vrshrq_x_n_u16): Remove.
13751 (__arm_vrshrq_x_n_u32): Remove.
13752 (__arm_vshrq_x_n_s8): Remove.
13753 (__arm_vshrq_x_n_s16): Remove.
13754 (__arm_vshrq_x_n_s32): Remove.
13755 (__arm_vshrq_x_n_u8): Remove.
13756 (__arm_vshrq_x_n_u16): Remove.
13757 (__arm_vshrq_x_n_u32): Remove.
13758 (__arm_vshrq): Remove.
13759 (__arm_vrshrq): Remove.
13760 (__arm_vrshrq_m): Remove.
13761 (__arm_vshrq_m): Remove.
13762 (__arm_vrshrq_x): Remove.
13763 (__arm_vshrq_x): Remove.
13764
13765 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13766
13767 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
13768 (mve_insn): Add vrshr, vshr.
13769 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
13770 (mve_vrshrq_n_<supf><mode>): Merge into ...
13771 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13772 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
13773 into ...
13774 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13775
13776 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13777
13778 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
13779 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
13780
13781 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13782
13783 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
13784 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
13785 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
13786 (vqrshrunbq, vqrshruntq): New.
13787 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
13788 (vqrshrunbq, vqrshruntq): New.
13789 * config/arm/arm-mve-builtins.cc
13790 (function_instance::has_inactive_argument): Handle vqshrunbq,
13791 vqshruntq, vqrshrunbq, vqrshruntq.
13792 * config/arm/arm_mve.h (vqrshrunbq): Remove.
13793 (vqrshruntq): Remove.
13794 (vqrshrunbq_m): Remove.
13795 (vqrshruntq_m): Remove.
13796 (vqrshrunbq_n_s16): Remove.
13797 (vqrshrunbq_n_s32): Remove.
13798 (vqrshruntq_n_s16): Remove.
13799 (vqrshruntq_n_s32): Remove.
13800 (vqrshrunbq_m_n_s32): Remove.
13801 (vqrshrunbq_m_n_s16): Remove.
13802 (vqrshruntq_m_n_s32): Remove.
13803 (vqrshruntq_m_n_s16): Remove.
13804 (__arm_vqrshrunbq_n_s16): Remove.
13805 (__arm_vqrshrunbq_n_s32): Remove.
13806 (__arm_vqrshruntq_n_s16): Remove.
13807 (__arm_vqrshruntq_n_s32): Remove.
13808 (__arm_vqrshrunbq_m_n_s32): Remove.
13809 (__arm_vqrshrunbq_m_n_s16): Remove.
13810 (__arm_vqrshruntq_m_n_s32): Remove.
13811 (__arm_vqrshruntq_m_n_s16): Remove.
13812 (__arm_vqrshrunbq): Remove.
13813 (__arm_vqrshruntq): Remove.
13814 (__arm_vqrshrunbq_m): Remove.
13815 (__arm_vqrshruntq_m): Remove.
13816 (vqshrunbq): Remove.
13817 (vqshruntq): Remove.
13818 (vqshrunbq_m): Remove.
13819 (vqshruntq_m): Remove.
13820 (vqshrunbq_n_s16): Remove.
13821 (vqshruntq_n_s16): Remove.
13822 (vqshrunbq_n_s32): Remove.
13823 (vqshruntq_n_s32): Remove.
13824 (vqshrunbq_m_n_s32): Remove.
13825 (vqshrunbq_m_n_s16): Remove.
13826 (vqshruntq_m_n_s32): Remove.
13827 (vqshruntq_m_n_s16): Remove.
13828 (__arm_vqshrunbq_n_s16): Remove.
13829 (__arm_vqshruntq_n_s16): Remove.
13830 (__arm_vqshrunbq_n_s32): Remove.
13831 (__arm_vqshruntq_n_s32): Remove.
13832 (__arm_vqshrunbq_m_n_s32): Remove.
13833 (__arm_vqshrunbq_m_n_s16): Remove.
13834 (__arm_vqshruntq_m_n_s32): Remove.
13835 (__arm_vqshruntq_m_n_s16): Remove.
13836 (__arm_vqshrunbq): Remove.
13837 (__arm_vqshruntq): Remove.
13838 (__arm_vqshrunbq_m): Remove.
13839 (__arm_vqshruntq_m): Remove.
13840
13841 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13842
13843 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
13844 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
13845 (MVE_SHRN_M_N): Likewise.
13846 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
13847 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
13848 (supf): Likewise.
13849 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
13850 (mve_vqrshruntq_n_s<mode>): Remove.
13851 (mve_vqshrunbq_n_s<mode>): Remove.
13852 (mve_vqshruntq_n_s<mode>): Remove.
13853 (mve_vqrshrunbq_m_n_s<mode>): Remove.
13854 (mve_vqrshruntq_m_n_s<mode>): Remove.
13855 (mve_vqshrunbq_m_n_s<mode>): Remove.
13856 (mve_vqshruntq_m_n_s<mode>): Remove.
13857
13858 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13859
13860 * config/arm/arm-mve-builtins-shapes.cc
13861 (binary_rshift_narrow_unsigned): New.
13862 * config/arm/arm-mve-builtins-shapes.h
13863 (binary_rshift_narrow_unsigned): New.
13864
13865 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13866
13867 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
13868 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
13869 (vqrshrnbq, vqrshrntq): New.
13870 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
13871 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
13872 New.
13873 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
13874 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
13875 * config/arm/arm-mve-builtins.cc
13876 (function_instance::has_inactive_argument): Handle vshrnbq,
13877 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
13878 vqrshrntq.
13879 * config/arm/arm_mve.h (vshrnbq): Remove.
13880 (vshrntq): Remove.
13881 (vshrnbq_m): Remove.
13882 (vshrntq_m): Remove.
13883 (vshrnbq_n_s16): Remove.
13884 (vshrntq_n_s16): Remove.
13885 (vshrnbq_n_u16): Remove.
13886 (vshrntq_n_u16): Remove.
13887 (vshrnbq_n_s32): Remove.
13888 (vshrntq_n_s32): Remove.
13889 (vshrnbq_n_u32): Remove.
13890 (vshrntq_n_u32): Remove.
13891 (vshrnbq_m_n_s32): Remove.
13892 (vshrnbq_m_n_s16): Remove.
13893 (vshrnbq_m_n_u32): Remove.
13894 (vshrnbq_m_n_u16): Remove.
13895 (vshrntq_m_n_s32): Remove.
13896 (vshrntq_m_n_s16): Remove.
13897 (vshrntq_m_n_u32): Remove.
13898 (vshrntq_m_n_u16): Remove.
13899 (__arm_vshrnbq_n_s16): Remove.
13900 (__arm_vshrntq_n_s16): Remove.
13901 (__arm_vshrnbq_n_u16): Remove.
13902 (__arm_vshrntq_n_u16): Remove.
13903 (__arm_vshrnbq_n_s32): Remove.
13904 (__arm_vshrntq_n_s32): Remove.
13905 (__arm_vshrnbq_n_u32): Remove.
13906 (__arm_vshrntq_n_u32): Remove.
13907 (__arm_vshrnbq_m_n_s32): Remove.
13908 (__arm_vshrnbq_m_n_s16): Remove.
13909 (__arm_vshrnbq_m_n_u32): Remove.
13910 (__arm_vshrnbq_m_n_u16): Remove.
13911 (__arm_vshrntq_m_n_s32): Remove.
13912 (__arm_vshrntq_m_n_s16): Remove.
13913 (__arm_vshrntq_m_n_u32): Remove.
13914 (__arm_vshrntq_m_n_u16): Remove.
13915 (__arm_vshrnbq): Remove.
13916 (__arm_vshrntq): Remove.
13917 (__arm_vshrnbq_m): Remove.
13918 (__arm_vshrntq_m): Remove.
13919 (vrshrnbq): Remove.
13920 (vrshrntq): Remove.
13921 (vrshrnbq_m): Remove.
13922 (vrshrntq_m): Remove.
13923 (vrshrnbq_n_s16): Remove.
13924 (vrshrntq_n_s16): Remove.
13925 (vrshrnbq_n_u16): Remove.
13926 (vrshrntq_n_u16): Remove.
13927 (vrshrnbq_n_s32): Remove.
13928 (vrshrntq_n_s32): Remove.
13929 (vrshrnbq_n_u32): Remove.
13930 (vrshrntq_n_u32): Remove.
13931 (vrshrnbq_m_n_s32): Remove.
13932 (vrshrnbq_m_n_s16): Remove.
13933 (vrshrnbq_m_n_u32): Remove.
13934 (vrshrnbq_m_n_u16): Remove.
13935 (vrshrntq_m_n_s32): Remove.
13936 (vrshrntq_m_n_s16): Remove.
13937 (vrshrntq_m_n_u32): Remove.
13938 (vrshrntq_m_n_u16): Remove.
13939 (__arm_vrshrnbq_n_s16): Remove.
13940 (__arm_vrshrntq_n_s16): Remove.
13941 (__arm_vrshrnbq_n_u16): Remove.
13942 (__arm_vrshrntq_n_u16): Remove.
13943 (__arm_vrshrnbq_n_s32): Remove.
13944 (__arm_vrshrntq_n_s32): Remove.
13945 (__arm_vrshrnbq_n_u32): Remove.
13946 (__arm_vrshrntq_n_u32): Remove.
13947 (__arm_vrshrnbq_m_n_s32): Remove.
13948 (__arm_vrshrnbq_m_n_s16): Remove.
13949 (__arm_vrshrnbq_m_n_u32): Remove.
13950 (__arm_vrshrnbq_m_n_u16): Remove.
13951 (__arm_vrshrntq_m_n_s32): Remove.
13952 (__arm_vrshrntq_m_n_s16): Remove.
13953 (__arm_vrshrntq_m_n_u32): Remove.
13954 (__arm_vrshrntq_m_n_u16): Remove.
13955 (__arm_vrshrnbq): Remove.
13956 (__arm_vrshrntq): Remove.
13957 (__arm_vrshrnbq_m): Remove.
13958 (__arm_vrshrntq_m): Remove.
13959 (vqshrnbq): Remove.
13960 (vqshrntq): Remove.
13961 (vqshrnbq_m): Remove.
13962 (vqshrntq_m): Remove.
13963 (vqshrnbq_n_s16): Remove.
13964 (vqshrntq_n_s16): Remove.
13965 (vqshrnbq_n_u16): Remove.
13966 (vqshrntq_n_u16): Remove.
13967 (vqshrnbq_n_s32): Remove.
13968 (vqshrntq_n_s32): Remove.
13969 (vqshrnbq_n_u32): Remove.
13970 (vqshrntq_n_u32): Remove.
13971 (vqshrnbq_m_n_s32): Remove.
13972 (vqshrnbq_m_n_s16): Remove.
13973 (vqshrnbq_m_n_u32): Remove.
13974 (vqshrnbq_m_n_u16): Remove.
13975 (vqshrntq_m_n_s32): Remove.
13976 (vqshrntq_m_n_s16): Remove.
13977 (vqshrntq_m_n_u32): Remove.
13978 (vqshrntq_m_n_u16): Remove.
13979 (__arm_vqshrnbq_n_s16): Remove.
13980 (__arm_vqshrntq_n_s16): Remove.
13981 (__arm_vqshrnbq_n_u16): Remove.
13982 (__arm_vqshrntq_n_u16): Remove.
13983 (__arm_vqshrnbq_n_s32): Remove.
13984 (__arm_vqshrntq_n_s32): Remove.
13985 (__arm_vqshrnbq_n_u32): Remove.
13986 (__arm_vqshrntq_n_u32): Remove.
13987 (__arm_vqshrnbq_m_n_s32): Remove.
13988 (__arm_vqshrnbq_m_n_s16): Remove.
13989 (__arm_vqshrnbq_m_n_u32): Remove.
13990 (__arm_vqshrnbq_m_n_u16): Remove.
13991 (__arm_vqshrntq_m_n_s32): Remove.
13992 (__arm_vqshrntq_m_n_s16): Remove.
13993 (__arm_vqshrntq_m_n_u32): Remove.
13994 (__arm_vqshrntq_m_n_u16): Remove.
13995 (__arm_vqshrnbq): Remove.
13996 (__arm_vqshrntq): Remove.
13997 (__arm_vqshrnbq_m): Remove.
13998 (__arm_vqshrntq_m): Remove.
13999 (vqrshrnbq): Remove.
14000 (vqrshrntq): Remove.
14001 (vqrshrnbq_m): Remove.
14002 (vqrshrntq_m): Remove.
14003 (vqrshrnbq_n_s16): Remove.
14004 (vqrshrnbq_n_u16): Remove.
14005 (vqrshrnbq_n_s32): Remove.
14006 (vqrshrnbq_n_u32): Remove.
14007 (vqrshrntq_n_s16): Remove.
14008 (vqrshrntq_n_u16): Remove.
14009 (vqrshrntq_n_s32): Remove.
14010 (vqrshrntq_n_u32): Remove.
14011 (vqrshrnbq_m_n_s32): Remove.
14012 (vqrshrnbq_m_n_s16): Remove.
14013 (vqrshrnbq_m_n_u32): Remove.
14014 (vqrshrnbq_m_n_u16): Remove.
14015 (vqrshrntq_m_n_s32): Remove.
14016 (vqrshrntq_m_n_s16): Remove.
14017 (vqrshrntq_m_n_u32): Remove.
14018 (vqrshrntq_m_n_u16): Remove.
14019 (__arm_vqrshrnbq_n_s16): Remove.
14020 (__arm_vqrshrnbq_n_u16): Remove.
14021 (__arm_vqrshrnbq_n_s32): Remove.
14022 (__arm_vqrshrnbq_n_u32): Remove.
14023 (__arm_vqrshrntq_n_s16): Remove.
14024 (__arm_vqrshrntq_n_u16): Remove.
14025 (__arm_vqrshrntq_n_s32): Remove.
14026 (__arm_vqrshrntq_n_u32): Remove.
14027 (__arm_vqrshrnbq_m_n_s32): Remove.
14028 (__arm_vqrshrnbq_m_n_s16): Remove.
14029 (__arm_vqrshrnbq_m_n_u32): Remove.
14030 (__arm_vqrshrnbq_m_n_u16): Remove.
14031 (__arm_vqrshrntq_m_n_s32): Remove.
14032 (__arm_vqrshrntq_m_n_s16): Remove.
14033 (__arm_vqrshrntq_m_n_u32): Remove.
14034 (__arm_vqrshrntq_m_n_u16): Remove.
14035 (__arm_vqrshrnbq): Remove.
14036 (__arm_vqrshrntq): Remove.
14037 (__arm_vqrshrnbq_m): Remove.
14038 (__arm_vqrshrntq_m): Remove.
14039
14040 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14041
14042 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
14043 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
14044 vrshrnt, vshrnb, vshrnt.
14045 (isu): New.
14046 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
14047 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
14048 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
14049 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
14050 (mve_vshrntq_n_<supf><mode>): Merge into ...
14051 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14052 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
14053 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
14054 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
14055 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
14056 Merge into ...
14057 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14058
14059 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14060
14061 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
14062 New.
14063 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
14064
14065 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14066
14067 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
14068 (vmaxq, vminq): New.
14069 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
14070 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
14071 * config/arm/arm_mve.h (vminq): Remove.
14072 (vmaxq): Remove.
14073 (vmaxq_m): Remove.
14074 (vminq_m): Remove.
14075 (vminq_x): Remove.
14076 (vmaxq_x): Remove.
14077 (vminq_u8): Remove.
14078 (vmaxq_u8): Remove.
14079 (vminq_s8): Remove.
14080 (vmaxq_s8): Remove.
14081 (vminq_u16): Remove.
14082 (vmaxq_u16): Remove.
14083 (vminq_s16): Remove.
14084 (vmaxq_s16): Remove.
14085 (vminq_u32): Remove.
14086 (vmaxq_u32): Remove.
14087 (vminq_s32): Remove.
14088 (vmaxq_s32): Remove.
14089 (vmaxq_m_s8): Remove.
14090 (vmaxq_m_s32): Remove.
14091 (vmaxq_m_s16): Remove.
14092 (vmaxq_m_u8): Remove.
14093 (vmaxq_m_u32): Remove.
14094 (vmaxq_m_u16): Remove.
14095 (vminq_m_s8): Remove.
14096 (vminq_m_s32): Remove.
14097 (vminq_m_s16): Remove.
14098 (vminq_m_u8): Remove.
14099 (vminq_m_u32): Remove.
14100 (vminq_m_u16): Remove.
14101 (vminq_x_s8): Remove.
14102 (vminq_x_s16): Remove.
14103 (vminq_x_s32): Remove.
14104 (vminq_x_u8): Remove.
14105 (vminq_x_u16): Remove.
14106 (vminq_x_u32): Remove.
14107 (vmaxq_x_s8): Remove.
14108 (vmaxq_x_s16): Remove.
14109 (vmaxq_x_s32): Remove.
14110 (vmaxq_x_u8): Remove.
14111 (vmaxq_x_u16): Remove.
14112 (vmaxq_x_u32): Remove.
14113 (__arm_vminq_u8): Remove.
14114 (__arm_vmaxq_u8): Remove.
14115 (__arm_vminq_s8): Remove.
14116 (__arm_vmaxq_s8): Remove.
14117 (__arm_vminq_u16): Remove.
14118 (__arm_vmaxq_u16): Remove.
14119 (__arm_vminq_s16): Remove.
14120 (__arm_vmaxq_s16): Remove.
14121 (__arm_vminq_u32): Remove.
14122 (__arm_vmaxq_u32): Remove.
14123 (__arm_vminq_s32): Remove.
14124 (__arm_vmaxq_s32): Remove.
14125 (__arm_vmaxq_m_s8): Remove.
14126 (__arm_vmaxq_m_s32): Remove.
14127 (__arm_vmaxq_m_s16): Remove.
14128 (__arm_vmaxq_m_u8): Remove.
14129 (__arm_vmaxq_m_u32): Remove.
14130 (__arm_vmaxq_m_u16): Remove.
14131 (__arm_vminq_m_s8): Remove.
14132 (__arm_vminq_m_s32): Remove.
14133 (__arm_vminq_m_s16): Remove.
14134 (__arm_vminq_m_u8): Remove.
14135 (__arm_vminq_m_u32): Remove.
14136 (__arm_vminq_m_u16): Remove.
14137 (__arm_vminq_x_s8): Remove.
14138 (__arm_vminq_x_s16): Remove.
14139 (__arm_vminq_x_s32): Remove.
14140 (__arm_vminq_x_u8): Remove.
14141 (__arm_vminq_x_u16): Remove.
14142 (__arm_vminq_x_u32): Remove.
14143 (__arm_vmaxq_x_s8): Remove.
14144 (__arm_vmaxq_x_s16): Remove.
14145 (__arm_vmaxq_x_s32): Remove.
14146 (__arm_vmaxq_x_u8): Remove.
14147 (__arm_vmaxq_x_u16): Remove.
14148 (__arm_vmaxq_x_u32): Remove.
14149 (__arm_vminq): Remove.
14150 (__arm_vmaxq): Remove.
14151 (__arm_vmaxq_m): Remove.
14152 (__arm_vminq_m): Remove.
14153 (__arm_vminq_x): Remove.
14154 (__arm_vmaxq_x): Remove.
14155
14156 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14157
14158 * config/arm/iterators.md (MAX_MIN_SU): New.
14159 (max_min_su_str): New.
14160 (max_min_supf): New.
14161 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
14162 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
14163 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
14164
14165 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14166
14167 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
14168 (vqshlq, vshlq): New.
14169 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
14170 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
14171 * config/arm/arm_mve.h (vshlq): Remove.
14172 (vshlq_r): Remove.
14173 (vshlq_n): Remove.
14174 (vshlq_m_r): Remove.
14175 (vshlq_m): Remove.
14176 (vshlq_m_n): Remove.
14177 (vshlq_x): Remove.
14178 (vshlq_x_n): Remove.
14179 (vshlq_s8): Remove.
14180 (vshlq_s16): Remove.
14181 (vshlq_s32): Remove.
14182 (vshlq_u8): Remove.
14183 (vshlq_u16): Remove.
14184 (vshlq_u32): Remove.
14185 (vshlq_r_u8): Remove.
14186 (vshlq_n_u8): Remove.
14187 (vshlq_r_s8): Remove.
14188 (vshlq_n_s8): Remove.
14189 (vshlq_r_u16): Remove.
14190 (vshlq_n_u16): Remove.
14191 (vshlq_r_s16): Remove.
14192 (vshlq_n_s16): Remove.
14193 (vshlq_r_u32): Remove.
14194 (vshlq_n_u32): Remove.
14195 (vshlq_r_s32): Remove.
14196 (vshlq_n_s32): Remove.
14197 (vshlq_m_r_u8): Remove.
14198 (vshlq_m_r_s8): Remove.
14199 (vshlq_m_r_u16): Remove.
14200 (vshlq_m_r_s16): Remove.
14201 (vshlq_m_r_u32): Remove.
14202 (vshlq_m_r_s32): Remove.
14203 (vshlq_m_u8): Remove.
14204 (vshlq_m_s8): Remove.
14205 (vshlq_m_u16): Remove.
14206 (vshlq_m_s16): Remove.
14207 (vshlq_m_u32): Remove.
14208 (vshlq_m_s32): Remove.
14209 (vshlq_m_n_s8): Remove.
14210 (vshlq_m_n_s32): Remove.
14211 (vshlq_m_n_s16): Remove.
14212 (vshlq_m_n_u8): Remove.
14213 (vshlq_m_n_u32): Remove.
14214 (vshlq_m_n_u16): Remove.
14215 (vshlq_x_s8): Remove.
14216 (vshlq_x_s16): Remove.
14217 (vshlq_x_s32): Remove.
14218 (vshlq_x_u8): Remove.
14219 (vshlq_x_u16): Remove.
14220 (vshlq_x_u32): Remove.
14221 (vshlq_x_n_s8): Remove.
14222 (vshlq_x_n_s16): Remove.
14223 (vshlq_x_n_s32): Remove.
14224 (vshlq_x_n_u8): Remove.
14225 (vshlq_x_n_u16): Remove.
14226 (vshlq_x_n_u32): Remove.
14227 (__arm_vshlq_s8): Remove.
14228 (__arm_vshlq_s16): Remove.
14229 (__arm_vshlq_s32): Remove.
14230 (__arm_vshlq_u8): Remove.
14231 (__arm_vshlq_u16): Remove.
14232 (__arm_vshlq_u32): Remove.
14233 (__arm_vshlq_r_u8): Remove.
14234 (__arm_vshlq_n_u8): Remove.
14235 (__arm_vshlq_r_s8): Remove.
14236 (__arm_vshlq_n_s8): Remove.
14237 (__arm_vshlq_r_u16): Remove.
14238 (__arm_vshlq_n_u16): Remove.
14239 (__arm_vshlq_r_s16): Remove.
14240 (__arm_vshlq_n_s16): Remove.
14241 (__arm_vshlq_r_u32): Remove.
14242 (__arm_vshlq_n_u32): Remove.
14243 (__arm_vshlq_r_s32): Remove.
14244 (__arm_vshlq_n_s32): Remove.
14245 (__arm_vshlq_m_r_u8): Remove.
14246 (__arm_vshlq_m_r_s8): Remove.
14247 (__arm_vshlq_m_r_u16): Remove.
14248 (__arm_vshlq_m_r_s16): Remove.
14249 (__arm_vshlq_m_r_u32): Remove.
14250 (__arm_vshlq_m_r_s32): Remove.
14251 (__arm_vshlq_m_u8): Remove.
14252 (__arm_vshlq_m_s8): Remove.
14253 (__arm_vshlq_m_u16): Remove.
14254 (__arm_vshlq_m_s16): Remove.
14255 (__arm_vshlq_m_u32): Remove.
14256 (__arm_vshlq_m_s32): Remove.
14257 (__arm_vshlq_m_n_s8): Remove.
14258 (__arm_vshlq_m_n_s32): Remove.
14259 (__arm_vshlq_m_n_s16): Remove.
14260 (__arm_vshlq_m_n_u8): Remove.
14261 (__arm_vshlq_m_n_u32): Remove.
14262 (__arm_vshlq_m_n_u16): Remove.
14263 (__arm_vshlq_x_s8): Remove.
14264 (__arm_vshlq_x_s16): Remove.
14265 (__arm_vshlq_x_s32): Remove.
14266 (__arm_vshlq_x_u8): Remove.
14267 (__arm_vshlq_x_u16): Remove.
14268 (__arm_vshlq_x_u32): Remove.
14269 (__arm_vshlq_x_n_s8): Remove.
14270 (__arm_vshlq_x_n_s16): Remove.
14271 (__arm_vshlq_x_n_s32): Remove.
14272 (__arm_vshlq_x_n_u8): Remove.
14273 (__arm_vshlq_x_n_u16): Remove.
14274 (__arm_vshlq_x_n_u32): Remove.
14275 (__arm_vshlq): Remove.
14276 (__arm_vshlq_r): Remove.
14277 (__arm_vshlq_n): Remove.
14278 (__arm_vshlq_m_r): Remove.
14279 (__arm_vshlq_m): Remove.
14280 (__arm_vshlq_m_n): Remove.
14281 (__arm_vshlq_x): Remove.
14282 (__arm_vshlq_x_n): Remove.
14283 (vqshlq): Remove.
14284 (vqshlq_r): Remove.
14285 (vqshlq_n): Remove.
14286 (vqshlq_m_r): Remove.
14287 (vqshlq_m_n): Remove.
14288 (vqshlq_m): Remove.
14289 (vqshlq_u8): Remove.
14290 (vqshlq_r_u8): Remove.
14291 (vqshlq_n_u8): Remove.
14292 (vqshlq_s8): Remove.
14293 (vqshlq_r_s8): Remove.
14294 (vqshlq_n_s8): Remove.
14295 (vqshlq_u16): Remove.
14296 (vqshlq_r_u16): Remove.
14297 (vqshlq_n_u16): Remove.
14298 (vqshlq_s16): Remove.
14299 (vqshlq_r_s16): Remove.
14300 (vqshlq_n_s16): Remove.
14301 (vqshlq_u32): Remove.
14302 (vqshlq_r_u32): Remove.
14303 (vqshlq_n_u32): Remove.
14304 (vqshlq_s32): Remove.
14305 (vqshlq_r_s32): Remove.
14306 (vqshlq_n_s32): Remove.
14307 (vqshlq_m_r_u8): Remove.
14308 (vqshlq_m_r_s8): Remove.
14309 (vqshlq_m_r_u16): Remove.
14310 (vqshlq_m_r_s16): Remove.
14311 (vqshlq_m_r_u32): Remove.
14312 (vqshlq_m_r_s32): Remove.
14313 (vqshlq_m_n_s8): Remove.
14314 (vqshlq_m_n_s32): Remove.
14315 (vqshlq_m_n_s16): Remove.
14316 (vqshlq_m_n_u8): Remove.
14317 (vqshlq_m_n_u32): Remove.
14318 (vqshlq_m_n_u16): Remove.
14319 (vqshlq_m_s8): Remove.
14320 (vqshlq_m_s32): Remove.
14321 (vqshlq_m_s16): Remove.
14322 (vqshlq_m_u8): Remove.
14323 (vqshlq_m_u32): Remove.
14324 (vqshlq_m_u16): Remove.
14325 (__arm_vqshlq_u8): Remove.
14326 (__arm_vqshlq_r_u8): Remove.
14327 (__arm_vqshlq_n_u8): Remove.
14328 (__arm_vqshlq_s8): Remove.
14329 (__arm_vqshlq_r_s8): Remove.
14330 (__arm_vqshlq_n_s8): Remove.
14331 (__arm_vqshlq_u16): Remove.
14332 (__arm_vqshlq_r_u16): Remove.
14333 (__arm_vqshlq_n_u16): Remove.
14334 (__arm_vqshlq_s16): Remove.
14335 (__arm_vqshlq_r_s16): Remove.
14336 (__arm_vqshlq_n_s16): Remove.
14337 (__arm_vqshlq_u32): Remove.
14338 (__arm_vqshlq_r_u32): Remove.
14339 (__arm_vqshlq_n_u32): Remove.
14340 (__arm_vqshlq_s32): Remove.
14341 (__arm_vqshlq_r_s32): Remove.
14342 (__arm_vqshlq_n_s32): Remove.
14343 (__arm_vqshlq_m_r_u8): Remove.
14344 (__arm_vqshlq_m_r_s8): Remove.
14345 (__arm_vqshlq_m_r_u16): Remove.
14346 (__arm_vqshlq_m_r_s16): Remove.
14347 (__arm_vqshlq_m_r_u32): Remove.
14348 (__arm_vqshlq_m_r_s32): Remove.
14349 (__arm_vqshlq_m_n_s8): Remove.
14350 (__arm_vqshlq_m_n_s32): Remove.
14351 (__arm_vqshlq_m_n_s16): Remove.
14352 (__arm_vqshlq_m_n_u8): Remove.
14353 (__arm_vqshlq_m_n_u32): Remove.
14354 (__arm_vqshlq_m_n_u16): Remove.
14355 (__arm_vqshlq_m_s8): Remove.
14356 (__arm_vqshlq_m_s32): Remove.
14357 (__arm_vqshlq_m_s16): Remove.
14358 (__arm_vqshlq_m_u8): Remove.
14359 (__arm_vqshlq_m_u32): Remove.
14360 (__arm_vqshlq_m_u16): Remove.
14361 (__arm_vqshlq): Remove.
14362 (__arm_vqshlq_r): Remove.
14363 (__arm_vqshlq_n): Remove.
14364 (__arm_vqshlq_m_r): Remove.
14365 (__arm_vqshlq_m_n): Remove.
14366 (__arm_vqshlq_m): Remove.
14367
14368 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14369
14370 * config/arm/arm-mve-builtins-functions.h (class
14371 unspec_mve_function_exact_insn_vshl): New.
14372
14373 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14374
14375 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
14376 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
14377
14378 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14379
14380 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
14381 (finish_opt_n_resolution): Handle MODE_r.
14382 * config/arm/arm-mve-builtins.def (r): New mode.
14383
14384 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14385
14386 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
14387 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
14388
14389 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14390
14391 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
14392 (vabdq): New.
14393 * config/arm/arm-mve-builtins-base.def (vabdq): New.
14394 * config/arm/arm-mve-builtins-base.h (vabdq): New.
14395 * config/arm/arm_mve.h (vabdq): Remove.
14396 (vabdq_m): Remove.
14397 (vabdq_x): Remove.
14398 (vabdq_u8): Remove.
14399 (vabdq_s8): Remove.
14400 (vabdq_u16): Remove.
14401 (vabdq_s16): Remove.
14402 (vabdq_u32): Remove.
14403 (vabdq_s32): Remove.
14404 (vabdq_f16): Remove.
14405 (vabdq_f32): Remove.
14406 (vabdq_m_s8): Remove.
14407 (vabdq_m_s32): Remove.
14408 (vabdq_m_s16): Remove.
14409 (vabdq_m_u8): Remove.
14410 (vabdq_m_u32): Remove.
14411 (vabdq_m_u16): Remove.
14412 (vabdq_m_f32): Remove.
14413 (vabdq_m_f16): Remove.
14414 (vabdq_x_s8): Remove.
14415 (vabdq_x_s16): Remove.
14416 (vabdq_x_s32): Remove.
14417 (vabdq_x_u8): Remove.
14418 (vabdq_x_u16): Remove.
14419 (vabdq_x_u32): Remove.
14420 (vabdq_x_f16): Remove.
14421 (vabdq_x_f32): Remove.
14422 (__arm_vabdq_u8): Remove.
14423 (__arm_vabdq_s8): Remove.
14424 (__arm_vabdq_u16): Remove.
14425 (__arm_vabdq_s16): Remove.
14426 (__arm_vabdq_u32): Remove.
14427 (__arm_vabdq_s32): Remove.
14428 (__arm_vabdq_m_s8): Remove.
14429 (__arm_vabdq_m_s32): Remove.
14430 (__arm_vabdq_m_s16): Remove.
14431 (__arm_vabdq_m_u8): Remove.
14432 (__arm_vabdq_m_u32): Remove.
14433 (__arm_vabdq_m_u16): Remove.
14434 (__arm_vabdq_x_s8): Remove.
14435 (__arm_vabdq_x_s16): Remove.
14436 (__arm_vabdq_x_s32): Remove.
14437 (__arm_vabdq_x_u8): Remove.
14438 (__arm_vabdq_x_u16): Remove.
14439 (__arm_vabdq_x_u32): Remove.
14440 (__arm_vabdq_f16): Remove.
14441 (__arm_vabdq_f32): Remove.
14442 (__arm_vabdq_m_f32): Remove.
14443 (__arm_vabdq_m_f16): Remove.
14444 (__arm_vabdq_x_f16): Remove.
14445 (__arm_vabdq_x_f32): Remove.
14446 (__arm_vabdq): Remove.
14447 (__arm_vabdq_m): Remove.
14448 (__arm_vabdq_x): Remove.
14449
14450 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14451
14452 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
14453 (MVE_FP_VABDQ_ONLY): New.
14454 (mve_insn): Add vabd.
14455 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
14456 (@mve_<mve_insn>q_f<mode>): ... this.
14457 (mve_vabdq_m_f<mode>): Remove.
14458
14459 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14460
14461 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
14462 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
14463 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
14464 * config/arm/arm_mve.h (vqrdmulhq): Remove.
14465 (vqrdmulhq_m): Remove.
14466 (vqrdmulhq_s8): Remove.
14467 (vqrdmulhq_n_s8): Remove.
14468 (vqrdmulhq_s16): Remove.
14469 (vqrdmulhq_n_s16): Remove.
14470 (vqrdmulhq_s32): Remove.
14471 (vqrdmulhq_n_s32): Remove.
14472 (vqrdmulhq_m_n_s8): Remove.
14473 (vqrdmulhq_m_n_s32): Remove.
14474 (vqrdmulhq_m_n_s16): Remove.
14475 (vqrdmulhq_m_s8): Remove.
14476 (vqrdmulhq_m_s32): Remove.
14477 (vqrdmulhq_m_s16): Remove.
14478 (__arm_vqrdmulhq_s8): Remove.
14479 (__arm_vqrdmulhq_n_s8): Remove.
14480 (__arm_vqrdmulhq_s16): Remove.
14481 (__arm_vqrdmulhq_n_s16): Remove.
14482 (__arm_vqrdmulhq_s32): Remove.
14483 (__arm_vqrdmulhq_n_s32): Remove.
14484 (__arm_vqrdmulhq_m_n_s8): Remove.
14485 (__arm_vqrdmulhq_m_n_s32): Remove.
14486 (__arm_vqrdmulhq_m_n_s16): Remove.
14487 (__arm_vqrdmulhq_m_s8): Remove.
14488 (__arm_vqrdmulhq_m_s32): Remove.
14489 (__arm_vqrdmulhq_m_s16): Remove.
14490 (__arm_vqrdmulhq): Remove.
14491 (__arm_vqrdmulhq_m): Remove.
14492
14493 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14494
14495 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
14496 (MVE_SHIFT_N, MVE_SHIFT_R): New.
14497 (mve_insn): Add vqshl, vshl.
14498 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
14499 (mve_vshlq_n_<supf><mode>): Merge into ...
14500 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14501 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
14502 ...
14503 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
14504 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
14505 into ...
14506 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
14507 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
14508 into ...
14509 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14510 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
14511 into ...
14512 (@mve_<mve_insn>q_<supf><mode>): ... this.
14513
14514 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14515
14516 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
14517 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
14518 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
14519 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
14520 vqrshlq, vrshlq.
14521 * config/arm/arm_mve.h (vrshlq): Remove.
14522 (vrshlq_m_n): Remove.
14523 (vrshlq_m): Remove.
14524 (vrshlq_x): Remove.
14525 (vrshlq_u8): Remove.
14526 (vrshlq_n_u8): Remove.
14527 (vrshlq_s8): Remove.
14528 (vrshlq_n_s8): Remove.
14529 (vrshlq_u16): Remove.
14530 (vrshlq_n_u16): Remove.
14531 (vrshlq_s16): Remove.
14532 (vrshlq_n_s16): Remove.
14533 (vrshlq_u32): Remove.
14534 (vrshlq_n_u32): Remove.
14535 (vrshlq_s32): Remove.
14536 (vrshlq_n_s32): Remove.
14537 (vrshlq_m_n_u8): Remove.
14538 (vrshlq_m_n_s8): Remove.
14539 (vrshlq_m_n_u16): Remove.
14540 (vrshlq_m_n_s16): Remove.
14541 (vrshlq_m_n_u32): Remove.
14542 (vrshlq_m_n_s32): Remove.
14543 (vrshlq_m_s8): Remove.
14544 (vrshlq_m_s32): Remove.
14545 (vrshlq_m_s16): Remove.
14546 (vrshlq_m_u8): Remove.
14547 (vrshlq_m_u32): Remove.
14548 (vrshlq_m_u16): Remove.
14549 (vrshlq_x_s8): Remove.
14550 (vrshlq_x_s16): Remove.
14551 (vrshlq_x_s32): Remove.
14552 (vrshlq_x_u8): Remove.
14553 (vrshlq_x_u16): Remove.
14554 (vrshlq_x_u32): Remove.
14555 (__arm_vrshlq_u8): Remove.
14556 (__arm_vrshlq_n_u8): Remove.
14557 (__arm_vrshlq_s8): Remove.
14558 (__arm_vrshlq_n_s8): Remove.
14559 (__arm_vrshlq_u16): Remove.
14560 (__arm_vrshlq_n_u16): Remove.
14561 (__arm_vrshlq_s16): Remove.
14562 (__arm_vrshlq_n_s16): Remove.
14563 (__arm_vrshlq_u32): Remove.
14564 (__arm_vrshlq_n_u32): Remove.
14565 (__arm_vrshlq_s32): Remove.
14566 (__arm_vrshlq_n_s32): Remove.
14567 (__arm_vrshlq_m_n_u8): Remove.
14568 (__arm_vrshlq_m_n_s8): Remove.
14569 (__arm_vrshlq_m_n_u16): Remove.
14570 (__arm_vrshlq_m_n_s16): Remove.
14571 (__arm_vrshlq_m_n_u32): Remove.
14572 (__arm_vrshlq_m_n_s32): Remove.
14573 (__arm_vrshlq_m_s8): Remove.
14574 (__arm_vrshlq_m_s32): Remove.
14575 (__arm_vrshlq_m_s16): Remove.
14576 (__arm_vrshlq_m_u8): Remove.
14577 (__arm_vrshlq_m_u32): Remove.
14578 (__arm_vrshlq_m_u16): Remove.
14579 (__arm_vrshlq_x_s8): Remove.
14580 (__arm_vrshlq_x_s16): Remove.
14581 (__arm_vrshlq_x_s32): Remove.
14582 (__arm_vrshlq_x_u8): Remove.
14583 (__arm_vrshlq_x_u16): Remove.
14584 (__arm_vrshlq_x_u32): Remove.
14585 (__arm_vrshlq): Remove.
14586 (__arm_vrshlq_m_n): Remove.
14587 (__arm_vrshlq_m): Remove.
14588 (__arm_vrshlq_x): Remove.
14589 (vqrshlq): Remove.
14590 (vqrshlq_m_n): Remove.
14591 (vqrshlq_m): Remove.
14592 (vqrshlq_u8): Remove.
14593 (vqrshlq_n_u8): Remove.
14594 (vqrshlq_s8): Remove.
14595 (vqrshlq_n_s8): Remove.
14596 (vqrshlq_u16): Remove.
14597 (vqrshlq_n_u16): Remove.
14598 (vqrshlq_s16): Remove.
14599 (vqrshlq_n_s16): Remove.
14600 (vqrshlq_u32): Remove.
14601 (vqrshlq_n_u32): Remove.
14602 (vqrshlq_s32): Remove.
14603 (vqrshlq_n_s32): Remove.
14604 (vqrshlq_m_n_u8): Remove.
14605 (vqrshlq_m_n_s8): Remove.
14606 (vqrshlq_m_n_u16): Remove.
14607 (vqrshlq_m_n_s16): Remove.
14608 (vqrshlq_m_n_u32): Remove.
14609 (vqrshlq_m_n_s32): Remove.
14610 (vqrshlq_m_s8): Remove.
14611 (vqrshlq_m_s32): Remove.
14612 (vqrshlq_m_s16): Remove.
14613 (vqrshlq_m_u8): Remove.
14614 (vqrshlq_m_u32): Remove.
14615 (vqrshlq_m_u16): Remove.
14616 (__arm_vqrshlq_u8): Remove.
14617 (__arm_vqrshlq_n_u8): Remove.
14618 (__arm_vqrshlq_s8): Remove.
14619 (__arm_vqrshlq_n_s8): Remove.
14620 (__arm_vqrshlq_u16): Remove.
14621 (__arm_vqrshlq_n_u16): Remove.
14622 (__arm_vqrshlq_s16): Remove.
14623 (__arm_vqrshlq_n_s16): Remove.
14624 (__arm_vqrshlq_u32): Remove.
14625 (__arm_vqrshlq_n_u32): Remove.
14626 (__arm_vqrshlq_s32): Remove.
14627 (__arm_vqrshlq_n_s32): Remove.
14628 (__arm_vqrshlq_m_n_u8): Remove.
14629 (__arm_vqrshlq_m_n_s8): Remove.
14630 (__arm_vqrshlq_m_n_u16): Remove.
14631 (__arm_vqrshlq_m_n_s16): Remove.
14632 (__arm_vqrshlq_m_n_u32): Remove.
14633 (__arm_vqrshlq_m_n_s32): Remove.
14634 (__arm_vqrshlq_m_s8): Remove.
14635 (__arm_vqrshlq_m_s32): Remove.
14636 (__arm_vqrshlq_m_s16): Remove.
14637 (__arm_vqrshlq_m_u8): Remove.
14638 (__arm_vqrshlq_m_u32): Remove.
14639 (__arm_vqrshlq_m_u16): Remove.
14640 (__arm_vqrshlq): Remove.
14641 (__arm_vqrshlq_m_n): Remove.
14642 (__arm_vqrshlq_m): Remove.
14643
14644 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14645
14646 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
14647 (mve_insn): Add vqrshl, vrshl.
14648 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
14649 (mve_vrshlq_n_<supf><mode>): Merge into ...
14650 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14651 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
14652 into ...
14653 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14654
14655 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14656
14657 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
14658 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
14659
14660 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14661
14662 PR target/109615
14663 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
14664 denegrate PHI optmization.
14665
14666 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
14667
14668 * config/i386/predicates.md (register_no_SP_operand):
14669 Rename from index_register_operand.
14670 (call_register_operand): Update for rename.
14671 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
14672
14673 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14674
14675 PR bootstrap/84402
14676 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
14677 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
14678 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
14679 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
14680 (s-match): Split into s-generic-match and s-gimple-match.
14681 * configure.ac (with-matchpd-partitions,
14682 DEFAULT_MATCHPD_PARTITIONS): New.
14683 * configure: Regenerate.
14684
14685 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14686
14687 PR bootstrap/84402
14688 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
14689 (decision_tree::gen): Accept list of files instead of single and update
14690 to write function definition to header and main file.
14691 (write_predicate): Likewise.
14692 (write_header): Emit pragmas and new includes.
14693 (main): Create file buffers and cleanup.
14694 (showUsage, write_header_includes): New.
14695
14696 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14697
14698 PR bootstrap/84402
14699 * Makefile.in (OBJS): Add gimple-match-exports.o.
14700 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
14701 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
14702 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
14703 gimple_resimplify5, constant_for_folding, convert_conditional_op,
14704 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
14705 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
14706 do_valueize, try_conditional_simplification, gimple_extract,
14707 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
14708 commutative_ternary_op_p, first_commutative_argument,
14709 associative_binary_op_p, directly_supported_p,
14710 get_conditional_internal_fn): Moved to gimple-match-exports.cc
14711 * gimple-match-exports.cc: New file.
14712
14713 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14714
14715 PR bootstrap/84402
14716 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
14717 debug_dump var.
14718 (dt_simplify::gen_1): Use it.
14719
14720 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14721
14722 PR bootstrap/84402
14723 * genmatch.cc (output_line_directive): Only emit commented directive
14724 when -vv.
14725
14726 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14727
14728 PR bootstrap/84402
14729 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
14730
14731 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
14732
14733 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
14734 unused in_mode/in_n variables.
14735
14736 2023-05-05 Richard Biener <rguenther@suse.de>
14737
14738 PR tree-optimization/109735
14739 * tree-vect-stmts.cc (vectorizable_operation): Perform
14740 conversion for POINTER_DIFF_EXPR unconditionally.
14741
14742 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
14743
14744 * config/i386/mmx.md (mulv2si3): New expander.
14745 (*mulv2si3): New insn pattern.
14746
14747 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
14748 Thomas Schwinge <thomas@codesourcery.com>
14749
14750 PR libgomp/108098
14751 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
14752 alongside reverse-offload function table to prevent NULL values
14753 of the function addresses.
14754
14755 2023-05-05 Jakub Jelinek <jakub@redhat.com>
14756
14757 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
14758 mpft_t -> mpfr_t.
14759 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
14760
14761 2023-05-05 Andrew Pinski <apinski@marvell.com>
14762
14763 PR tree-optimization/109732
14764 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
14765 of the argtrue/argfalse.
14766
14767 2023-05-05 Andrew Pinski <apinski@marvell.com>
14768
14769 PR tree-optimization/109722
14770 * match.pd: Extend the `ABS<a> == 0` pattern
14771 to cover `ABSU<a> == 0` too.
14772
14773 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
14774
14775 PR target/109733
14776 * config/i386/predicates.md (index_reg_operand): New predicate.
14777 * config/i386/i386.md (ashift to lea spliter): Use
14778 general_reg_operand and index_reg_operand predicates.
14779
14780 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14781
14782 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
14783 Rename and reimplement with RTL codes to...
14784 (aarch64_<optab>hn2<mode>_insn_le): .. This.
14785 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
14786 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
14787 codes to...
14788 (aarch64_<optab>hn2<mode>_insn_be): ... This.
14789 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
14790 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
14791 (aarch64_<optab>hn2<mode>): ... This.
14792 (aarch64_r<optab>hn2<mode>): New expander.
14793 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
14794 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
14795 (ADDSUBHN): Delete.
14796 (sur): Remove handling of the above.
14797 (addsub): Likewise.
14798
14799 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14800
14801 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
14802 Delete.
14803 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
14804 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
14805 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
14806 (aarch64_<sur><addsub>hn<mode>): Delete.
14807 (aarch64_<optab>hn<mode>): New define_expand.
14808 (aarch64_r<optab>hn<mode>): Likewise.
14809 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
14810 New predicate.
14811
14812 2023-05-04 Andrew Pinski <apinski@marvell.com>
14813
14814 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
14815 diamond form bb with forwarder only empty blocks better.
14816
14817 2023-05-04 Andrew Pinski <apinski@marvell.com>
14818
14819 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
14820 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
14821 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
14822 of an inline version of it.
14823 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
14824 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
14825
14826 2023-05-04 Andrew Pinski <apinski@marvell.com>
14827
14828 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
14829 the default argument value for dce_ssa_names to nullptr.
14830 Check to make sure dce_ssa_names is a non-nullptr before
14831 calling simple_dce_from_worklist.
14832
14833 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
14834
14835 * config/i386/predicates.md (index_register_operand): Reject
14836 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
14837 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
14838 (call_register_no_elim_operand): Rewrite as ...
14839 (call_register_operand): ... this.
14840 (call_insn_operand): Use call_register_operand predicate.
14841
14842 2023-05-04 Richard Biener <rguenther@suse.de>
14843
14844 PR tree-optimization/109721
14845 * tree-vect-stmts.cc (vectorizable_operation): Make sure
14846 to test word_mode for all !target_support_p operations.
14847
14848 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14849
14850 PR target/99195
14851 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
14852 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
14853 (aarch64_mla<mode>): Rename to...
14854 (aarch64_mla<mode><vczle><vczbe>): ... This.
14855 (*aarch64_mla_elt<mode>): Rename to...
14856 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
14857 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
14858 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14859 (aarch64_mla_n<mode>): Rename to...
14860 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
14861 (aarch64_mls<mode>): Rename to...
14862 (aarch64_mls<mode><vczle><vczbe>): ... This.
14863 (*aarch64_mls_elt<mode>): Rename to...
14864 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
14865 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
14866 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14867 (aarch64_mls_n<mode>): Rename to...
14868 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
14869 (fma<mode>4): Rename to...
14870 (fma<mode>4<vczle><vczbe>): ... This.
14871 (*aarch64_fma4_elt<mode>): Rename to...
14872 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
14873 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
14874 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14875 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
14876 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
14877 (fnma<mode>4): Rename to...
14878 (fnma<mode>4<vczle><vczbe>): ... This.
14879 (*aarch64_fnma4_elt<mode>): Rename to...
14880 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
14881 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
14882 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14883 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
14884 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
14885 (aarch64_simd_bsl<mode>_internal): Rename to...
14886 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
14887 (*aarch64_simd_bsl<mode>_alt): Rename to...
14888 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
14889
14890 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14891
14892 PR target/99195
14893 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
14894 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
14895 (fabd<mode>3): Rename to...
14896 (fabd<mode>3<vczle><vczbe>): ... This.
14897 (aarch64_<optab>p<mode>): Rename to...
14898 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
14899 (aarch64_faddp<mode>): Rename to...
14900 (aarch64_faddp<mode><vczle><vczbe>): ... This.
14901
14902 2023-05-04 Martin Liska <mliska@suse.cz>
14903
14904 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
14905 (print_version): Use it.
14906 (generate_results): Likewise.
14907
14908 2023-05-04 Richard Biener <rguenther@suse.de>
14909
14910 * tree-cfg.h (last_stmt): Rename to ...
14911 (last_nondebug_stmt): ... this.
14912 * tree-cfg.cc (last_stmt): Rename to ...
14913 (last_nondebug_stmt): ... this.
14914 (assign_discriminators): Adjust.
14915 (group_case_labels_stmt): Likewise.
14916 (gimple_can_duplicate_bb_p): Likewise.
14917 (execute_fixup_cfg): Likewise.
14918 * auto-profile.cc (afdo_propagate_circuit): Likewise.
14919 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
14920 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
14921 (determine_parallel_type): Likewise.
14922 (adjust_context_and_scope): Likewise.
14923 (expand_task_call): Likewise.
14924 (remove_exit_barrier): Likewise.
14925 (expand_omp_taskreg): Likewise.
14926 (expand_omp_for_init_counts): Likewise.
14927 (expand_omp_for_init_vars): Likewise.
14928 (expand_omp_for_static_chunk): Likewise.
14929 (expand_omp_simd): Likewise.
14930 (expand_oacc_for): Likewise.
14931 (expand_omp_for): Likewise.
14932 (expand_omp_sections): Likewise.
14933 (expand_omp_atomic_fetch_op): Likewise.
14934 (expand_omp_atomic_cas): Likewise.
14935 (expand_omp_atomic): Likewise.
14936 (expand_omp_target): Likewise.
14937 (expand_omp): Likewise.
14938 (omp_make_gimple_edges): Likewise.
14939 * trans-mem.cc (tm_region_init): Likewise.
14940 * tree-inline.cc (redirect_all_calls): Likewise.
14941 * tree-parloops.cc (gen_parallel_loop): Likewise.
14942 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
14943 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
14944 Likewise.
14945 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
14946 (may_eliminate_iv): Likewise.
14947 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
14948 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
14949 Likewise.
14950 (estimate_numbers_of_iterations): Likewise.
14951 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
14952 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
14953 (set_predicates_for_bb): Likewise.
14954 (init_loop_unswitch_info): Likewise.
14955 (hoist_guard): Likewise.
14956 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
14957 (minmax_replacement): Likewise.
14958 * tree-ssa-reassoc.cc (update_range_test): Likewise.
14959 (optimize_range_tests_to_bit_test): Likewise.
14960 (optimize_range_tests_var_bound): Likewise.
14961 (optimize_range_tests): Likewise.
14962 (no_side_effect_bb): Likewise.
14963 (suitable_cond_bb): Likewise.
14964 (maybe_optimize_range_tests): Likewise.
14965 (reassociate_bb): Likewise.
14966 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
14967
14968 2023-05-04 Jakub Jelinek <jakub@redhat.com>
14969
14970 PR debug/109676
14971 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
14972 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
14973 for it only if it still has TImode. Don't decide whether to call
14974 fix_debug_reg_uses based on whether SRC is ever set or not.
14975
14976 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
14977
14978 * config/cris/cris.cc (cris_split_constant): New function.
14979 * config/cris/cris.md (splitop): New iterator.
14980 (opsplit1): New define_peephole2.
14981 * config/cris/cris-protos.h (cris_split_constant): Declare.
14982 (cris_splittable_constant_p): New macro.
14983
14984 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
14985
14986 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
14987 to ALL_REGS.
14988
14989 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
14990
14991 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
14992 lra_in_progress, not reload_in_progress.
14993 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
14994 * config/cris/constraints.md ("Q"): Ditto.
14995
14996 2023-05-03 Andrew Pinski <apinski@marvell.com>
14997
14998 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
14999 stats on removed number of statements and phis.
15000
15001 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
15002
15003 PR tree-optimization/109711
15004 * value-range.cc (irange::verify_range): Allow types of
15005 error_mark_node.
15006
15007 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
15008
15009 PR sanitizer/90746
15010 * calls.cc (can_implement_as_sibling_call_p): Reject calls
15011 to __sanitizer_cov_trace_pc.
15012
15013 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
15014
15015 PR target/109661
15016 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
15017 a new ABI break parameter for GCC 14. Set it to the alignment
15018 of enums that have an underlying type. Take the true alignment
15019 of such enums from the TYPE_ALIGN of the underlying type's
15020 TYPE_MAIN_VARIANT.
15021 (aarch64_function_arg_boundary): Update accordingly.
15022 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
15023 Warn about ABI differences.
15024
15025 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
15026
15027 PR target/109661
15028 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
15029 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
15030 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
15031 (aarch64_gimplify_va_arg_expr): Likewise.
15032
15033 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15034
15035 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
15036 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
15037 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
15038 (vrmulhq): New.
15039 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
15040 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
15041 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
15042 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
15043 * config/arm/arm_mve.h (vhsubq): Remove.
15044 (vhaddq): Remove.
15045 (vhaddq_m): Remove.
15046 (vhsubq_m): Remove.
15047 (vhaddq_x): Remove.
15048 (vhsubq_x): Remove.
15049 (vhsubq_u8): Remove.
15050 (vhsubq_n_u8): Remove.
15051 (vhaddq_u8): Remove.
15052 (vhaddq_n_u8): Remove.
15053 (vhsubq_s8): Remove.
15054 (vhsubq_n_s8): Remove.
15055 (vhaddq_s8): Remove.
15056 (vhaddq_n_s8): Remove.
15057 (vhsubq_u16): Remove.
15058 (vhsubq_n_u16): Remove.
15059 (vhaddq_u16): Remove.
15060 (vhaddq_n_u16): Remove.
15061 (vhsubq_s16): Remove.
15062 (vhsubq_n_s16): Remove.
15063 (vhaddq_s16): Remove.
15064 (vhaddq_n_s16): Remove.
15065 (vhsubq_u32): Remove.
15066 (vhsubq_n_u32): Remove.
15067 (vhaddq_u32): Remove.
15068 (vhaddq_n_u32): Remove.
15069 (vhsubq_s32): Remove.
15070 (vhsubq_n_s32): Remove.
15071 (vhaddq_s32): Remove.
15072 (vhaddq_n_s32): Remove.
15073 (vhaddq_m_n_s8): Remove.
15074 (vhaddq_m_n_s32): Remove.
15075 (vhaddq_m_n_s16): Remove.
15076 (vhaddq_m_n_u8): Remove.
15077 (vhaddq_m_n_u32): Remove.
15078 (vhaddq_m_n_u16): Remove.
15079 (vhaddq_m_s8): Remove.
15080 (vhaddq_m_s32): Remove.
15081 (vhaddq_m_s16): Remove.
15082 (vhaddq_m_u8): Remove.
15083 (vhaddq_m_u32): Remove.
15084 (vhaddq_m_u16): Remove.
15085 (vhsubq_m_n_s8): Remove.
15086 (vhsubq_m_n_s32): Remove.
15087 (vhsubq_m_n_s16): Remove.
15088 (vhsubq_m_n_u8): Remove.
15089 (vhsubq_m_n_u32): Remove.
15090 (vhsubq_m_n_u16): Remove.
15091 (vhsubq_m_s8): Remove.
15092 (vhsubq_m_s32): Remove.
15093 (vhsubq_m_s16): Remove.
15094 (vhsubq_m_u8): Remove.
15095 (vhsubq_m_u32): Remove.
15096 (vhsubq_m_u16): Remove.
15097 (vhaddq_x_n_s8): Remove.
15098 (vhaddq_x_n_s16): Remove.
15099 (vhaddq_x_n_s32): Remove.
15100 (vhaddq_x_n_u8): Remove.
15101 (vhaddq_x_n_u16): Remove.
15102 (vhaddq_x_n_u32): Remove.
15103 (vhaddq_x_s8): Remove.
15104 (vhaddq_x_s16): Remove.
15105 (vhaddq_x_s32): Remove.
15106 (vhaddq_x_u8): Remove.
15107 (vhaddq_x_u16): Remove.
15108 (vhaddq_x_u32): Remove.
15109 (vhsubq_x_n_s8): Remove.
15110 (vhsubq_x_n_s16): Remove.
15111 (vhsubq_x_n_s32): Remove.
15112 (vhsubq_x_n_u8): Remove.
15113 (vhsubq_x_n_u16): Remove.
15114 (vhsubq_x_n_u32): Remove.
15115 (vhsubq_x_s8): Remove.
15116 (vhsubq_x_s16): Remove.
15117 (vhsubq_x_s32): Remove.
15118 (vhsubq_x_u8): Remove.
15119 (vhsubq_x_u16): Remove.
15120 (vhsubq_x_u32): Remove.
15121 (__arm_vhsubq_u8): Remove.
15122 (__arm_vhsubq_n_u8): Remove.
15123 (__arm_vhaddq_u8): Remove.
15124 (__arm_vhaddq_n_u8): Remove.
15125 (__arm_vhsubq_s8): Remove.
15126 (__arm_vhsubq_n_s8): Remove.
15127 (__arm_vhaddq_s8): Remove.
15128 (__arm_vhaddq_n_s8): Remove.
15129 (__arm_vhsubq_u16): Remove.
15130 (__arm_vhsubq_n_u16): Remove.
15131 (__arm_vhaddq_u16): Remove.
15132 (__arm_vhaddq_n_u16): Remove.
15133 (__arm_vhsubq_s16): Remove.
15134 (__arm_vhsubq_n_s16): Remove.
15135 (__arm_vhaddq_s16): Remove.
15136 (__arm_vhaddq_n_s16): Remove.
15137 (__arm_vhsubq_u32): Remove.
15138 (__arm_vhsubq_n_u32): Remove.
15139 (__arm_vhaddq_u32): Remove.
15140 (__arm_vhaddq_n_u32): Remove.
15141 (__arm_vhsubq_s32): Remove.
15142 (__arm_vhsubq_n_s32): Remove.
15143 (__arm_vhaddq_s32): Remove.
15144 (__arm_vhaddq_n_s32): Remove.
15145 (__arm_vhaddq_m_n_s8): Remove.
15146 (__arm_vhaddq_m_n_s32): Remove.
15147 (__arm_vhaddq_m_n_s16): Remove.
15148 (__arm_vhaddq_m_n_u8): Remove.
15149 (__arm_vhaddq_m_n_u32): Remove.
15150 (__arm_vhaddq_m_n_u16): Remove.
15151 (__arm_vhaddq_m_s8): Remove.
15152 (__arm_vhaddq_m_s32): Remove.
15153 (__arm_vhaddq_m_s16): Remove.
15154 (__arm_vhaddq_m_u8): Remove.
15155 (__arm_vhaddq_m_u32): Remove.
15156 (__arm_vhaddq_m_u16): Remove.
15157 (__arm_vhsubq_m_n_s8): Remove.
15158 (__arm_vhsubq_m_n_s32): Remove.
15159 (__arm_vhsubq_m_n_s16): Remove.
15160 (__arm_vhsubq_m_n_u8): Remove.
15161 (__arm_vhsubq_m_n_u32): Remove.
15162 (__arm_vhsubq_m_n_u16): Remove.
15163 (__arm_vhsubq_m_s8): Remove.
15164 (__arm_vhsubq_m_s32): Remove.
15165 (__arm_vhsubq_m_s16): Remove.
15166 (__arm_vhsubq_m_u8): Remove.
15167 (__arm_vhsubq_m_u32): Remove.
15168 (__arm_vhsubq_m_u16): Remove.
15169 (__arm_vhaddq_x_n_s8): Remove.
15170 (__arm_vhaddq_x_n_s16): Remove.
15171 (__arm_vhaddq_x_n_s32): Remove.
15172 (__arm_vhaddq_x_n_u8): Remove.
15173 (__arm_vhaddq_x_n_u16): Remove.
15174 (__arm_vhaddq_x_n_u32): Remove.
15175 (__arm_vhaddq_x_s8): Remove.
15176 (__arm_vhaddq_x_s16): Remove.
15177 (__arm_vhaddq_x_s32): Remove.
15178 (__arm_vhaddq_x_u8): Remove.
15179 (__arm_vhaddq_x_u16): Remove.
15180 (__arm_vhaddq_x_u32): Remove.
15181 (__arm_vhsubq_x_n_s8): Remove.
15182 (__arm_vhsubq_x_n_s16): Remove.
15183 (__arm_vhsubq_x_n_s32): Remove.
15184 (__arm_vhsubq_x_n_u8): Remove.
15185 (__arm_vhsubq_x_n_u16): Remove.
15186 (__arm_vhsubq_x_n_u32): Remove.
15187 (__arm_vhsubq_x_s8): Remove.
15188 (__arm_vhsubq_x_s16): Remove.
15189 (__arm_vhsubq_x_s32): Remove.
15190 (__arm_vhsubq_x_u8): Remove.
15191 (__arm_vhsubq_x_u16): Remove.
15192 (__arm_vhsubq_x_u32): Remove.
15193 (__arm_vhsubq): Remove.
15194 (__arm_vhaddq): Remove.
15195 (__arm_vhaddq_m): Remove.
15196 (__arm_vhsubq_m): Remove.
15197 (__arm_vhaddq_x): Remove.
15198 (__arm_vhsubq_x): Remove.
15199 (vmulhq): Remove.
15200 (vmulhq_m): Remove.
15201 (vmulhq_x): Remove.
15202 (vmulhq_u8): Remove.
15203 (vmulhq_s8): Remove.
15204 (vmulhq_u16): Remove.
15205 (vmulhq_s16): Remove.
15206 (vmulhq_u32): Remove.
15207 (vmulhq_s32): Remove.
15208 (vmulhq_m_s8): Remove.
15209 (vmulhq_m_s32): Remove.
15210 (vmulhq_m_s16): Remove.
15211 (vmulhq_m_u8): Remove.
15212 (vmulhq_m_u32): Remove.
15213 (vmulhq_m_u16): Remove.
15214 (vmulhq_x_s8): Remove.
15215 (vmulhq_x_s16): Remove.
15216 (vmulhq_x_s32): Remove.
15217 (vmulhq_x_u8): Remove.
15218 (vmulhq_x_u16): Remove.
15219 (vmulhq_x_u32): Remove.
15220 (__arm_vmulhq_u8): Remove.
15221 (__arm_vmulhq_s8): Remove.
15222 (__arm_vmulhq_u16): Remove.
15223 (__arm_vmulhq_s16): Remove.
15224 (__arm_vmulhq_u32): Remove.
15225 (__arm_vmulhq_s32): Remove.
15226 (__arm_vmulhq_m_s8): Remove.
15227 (__arm_vmulhq_m_s32): Remove.
15228 (__arm_vmulhq_m_s16): Remove.
15229 (__arm_vmulhq_m_u8): Remove.
15230 (__arm_vmulhq_m_u32): Remove.
15231 (__arm_vmulhq_m_u16): Remove.
15232 (__arm_vmulhq_x_s8): Remove.
15233 (__arm_vmulhq_x_s16): Remove.
15234 (__arm_vmulhq_x_s32): Remove.
15235 (__arm_vmulhq_x_u8): Remove.
15236 (__arm_vmulhq_x_u16): Remove.
15237 (__arm_vmulhq_x_u32): Remove.
15238 (__arm_vmulhq): Remove.
15239 (__arm_vmulhq_m): Remove.
15240 (__arm_vmulhq_x): Remove.
15241 (vqsubq): Remove.
15242 (vqaddq): Remove.
15243 (vqaddq_m): Remove.
15244 (vqsubq_m): Remove.
15245 (vqsubq_u8): Remove.
15246 (vqsubq_n_u8): Remove.
15247 (vqaddq_u8): Remove.
15248 (vqaddq_n_u8): Remove.
15249 (vqsubq_s8): Remove.
15250 (vqsubq_n_s8): Remove.
15251 (vqaddq_s8): Remove.
15252 (vqaddq_n_s8): Remove.
15253 (vqsubq_u16): Remove.
15254 (vqsubq_n_u16): Remove.
15255 (vqaddq_u16): Remove.
15256 (vqaddq_n_u16): Remove.
15257 (vqsubq_s16): Remove.
15258 (vqsubq_n_s16): Remove.
15259 (vqaddq_s16): Remove.
15260 (vqaddq_n_s16): Remove.
15261 (vqsubq_u32): Remove.
15262 (vqsubq_n_u32): Remove.
15263 (vqaddq_u32): Remove.
15264 (vqaddq_n_u32): Remove.
15265 (vqsubq_s32): Remove.
15266 (vqsubq_n_s32): Remove.
15267 (vqaddq_s32): Remove.
15268 (vqaddq_n_s32): Remove.
15269 (vqaddq_m_n_s8): Remove.
15270 (vqaddq_m_n_s32): Remove.
15271 (vqaddq_m_n_s16): Remove.
15272 (vqaddq_m_n_u8): Remove.
15273 (vqaddq_m_n_u32): Remove.
15274 (vqaddq_m_n_u16): Remove.
15275 (vqaddq_m_s8): Remove.
15276 (vqaddq_m_s32): Remove.
15277 (vqaddq_m_s16): Remove.
15278 (vqaddq_m_u8): Remove.
15279 (vqaddq_m_u32): Remove.
15280 (vqaddq_m_u16): Remove.
15281 (vqsubq_m_n_s8): Remove.
15282 (vqsubq_m_n_s32): Remove.
15283 (vqsubq_m_n_s16): Remove.
15284 (vqsubq_m_n_u8): Remove.
15285 (vqsubq_m_n_u32): Remove.
15286 (vqsubq_m_n_u16): Remove.
15287 (vqsubq_m_s8): Remove.
15288 (vqsubq_m_s32): Remove.
15289 (vqsubq_m_s16): Remove.
15290 (vqsubq_m_u8): Remove.
15291 (vqsubq_m_u32): Remove.
15292 (vqsubq_m_u16): Remove.
15293 (__arm_vqsubq_u8): Remove.
15294 (__arm_vqsubq_n_u8): Remove.
15295 (__arm_vqaddq_u8): Remove.
15296 (__arm_vqaddq_n_u8): Remove.
15297 (__arm_vqsubq_s8): Remove.
15298 (__arm_vqsubq_n_s8): Remove.
15299 (__arm_vqaddq_s8): Remove.
15300 (__arm_vqaddq_n_s8): Remove.
15301 (__arm_vqsubq_u16): Remove.
15302 (__arm_vqsubq_n_u16): Remove.
15303 (__arm_vqaddq_u16): Remove.
15304 (__arm_vqaddq_n_u16): Remove.
15305 (__arm_vqsubq_s16): Remove.
15306 (__arm_vqsubq_n_s16): Remove.
15307 (__arm_vqaddq_s16): Remove.
15308 (__arm_vqaddq_n_s16): Remove.
15309 (__arm_vqsubq_u32): Remove.
15310 (__arm_vqsubq_n_u32): Remove.
15311 (__arm_vqaddq_u32): Remove.
15312 (__arm_vqaddq_n_u32): Remove.
15313 (__arm_vqsubq_s32): Remove.
15314 (__arm_vqsubq_n_s32): Remove.
15315 (__arm_vqaddq_s32): Remove.
15316 (__arm_vqaddq_n_s32): Remove.
15317 (__arm_vqaddq_m_n_s8): Remove.
15318 (__arm_vqaddq_m_n_s32): Remove.
15319 (__arm_vqaddq_m_n_s16): Remove.
15320 (__arm_vqaddq_m_n_u8): Remove.
15321 (__arm_vqaddq_m_n_u32): Remove.
15322 (__arm_vqaddq_m_n_u16): Remove.
15323 (__arm_vqaddq_m_s8): Remove.
15324 (__arm_vqaddq_m_s32): Remove.
15325 (__arm_vqaddq_m_s16): Remove.
15326 (__arm_vqaddq_m_u8): Remove.
15327 (__arm_vqaddq_m_u32): Remove.
15328 (__arm_vqaddq_m_u16): Remove.
15329 (__arm_vqsubq_m_n_s8): Remove.
15330 (__arm_vqsubq_m_n_s32): Remove.
15331 (__arm_vqsubq_m_n_s16): Remove.
15332 (__arm_vqsubq_m_n_u8): Remove.
15333 (__arm_vqsubq_m_n_u32): Remove.
15334 (__arm_vqsubq_m_n_u16): Remove.
15335 (__arm_vqsubq_m_s8): Remove.
15336 (__arm_vqsubq_m_s32): Remove.
15337 (__arm_vqsubq_m_s16): Remove.
15338 (__arm_vqsubq_m_u8): Remove.
15339 (__arm_vqsubq_m_u32): Remove.
15340 (__arm_vqsubq_m_u16): Remove.
15341 (__arm_vqsubq): Remove.
15342 (__arm_vqaddq): Remove.
15343 (__arm_vqaddq_m): Remove.
15344 (__arm_vqsubq_m): Remove.
15345 (vqdmulhq): Remove.
15346 (vqdmulhq_m): Remove.
15347 (vqdmulhq_s8): Remove.
15348 (vqdmulhq_n_s8): Remove.
15349 (vqdmulhq_s16): Remove.
15350 (vqdmulhq_n_s16): Remove.
15351 (vqdmulhq_s32): Remove.
15352 (vqdmulhq_n_s32): Remove.
15353 (vqdmulhq_m_n_s8): Remove.
15354 (vqdmulhq_m_n_s32): Remove.
15355 (vqdmulhq_m_n_s16): Remove.
15356 (vqdmulhq_m_s8): Remove.
15357 (vqdmulhq_m_s32): Remove.
15358 (vqdmulhq_m_s16): Remove.
15359 (__arm_vqdmulhq_s8): Remove.
15360 (__arm_vqdmulhq_n_s8): Remove.
15361 (__arm_vqdmulhq_s16): Remove.
15362 (__arm_vqdmulhq_n_s16): Remove.
15363 (__arm_vqdmulhq_s32): Remove.
15364 (__arm_vqdmulhq_n_s32): Remove.
15365 (__arm_vqdmulhq_m_n_s8): Remove.
15366 (__arm_vqdmulhq_m_n_s32): Remove.
15367 (__arm_vqdmulhq_m_n_s16): Remove.
15368 (__arm_vqdmulhq_m_s8): Remove.
15369 (__arm_vqdmulhq_m_s32): Remove.
15370 (__arm_vqdmulhq_m_s16): Remove.
15371 (__arm_vqdmulhq): Remove.
15372 (__arm_vqdmulhq_m): Remove.
15373 (vrhaddq): Remove.
15374 (vrhaddq_m): Remove.
15375 (vrhaddq_x): Remove.
15376 (vrhaddq_u8): Remove.
15377 (vrhaddq_s8): Remove.
15378 (vrhaddq_u16): Remove.
15379 (vrhaddq_s16): Remove.
15380 (vrhaddq_u32): Remove.
15381 (vrhaddq_s32): Remove.
15382 (vrhaddq_m_s8): Remove.
15383 (vrhaddq_m_s32): Remove.
15384 (vrhaddq_m_s16): Remove.
15385 (vrhaddq_m_u8): Remove.
15386 (vrhaddq_m_u32): Remove.
15387 (vrhaddq_m_u16): Remove.
15388 (vrhaddq_x_s8): Remove.
15389 (vrhaddq_x_s16): Remove.
15390 (vrhaddq_x_s32): Remove.
15391 (vrhaddq_x_u8): Remove.
15392 (vrhaddq_x_u16): Remove.
15393 (vrhaddq_x_u32): Remove.
15394 (__arm_vrhaddq_u8): Remove.
15395 (__arm_vrhaddq_s8): Remove.
15396 (__arm_vrhaddq_u16): Remove.
15397 (__arm_vrhaddq_s16): Remove.
15398 (__arm_vrhaddq_u32): Remove.
15399 (__arm_vrhaddq_s32): Remove.
15400 (__arm_vrhaddq_m_s8): Remove.
15401 (__arm_vrhaddq_m_s32): Remove.
15402 (__arm_vrhaddq_m_s16): Remove.
15403 (__arm_vrhaddq_m_u8): Remove.
15404 (__arm_vrhaddq_m_u32): Remove.
15405 (__arm_vrhaddq_m_u16): Remove.
15406 (__arm_vrhaddq_x_s8): Remove.
15407 (__arm_vrhaddq_x_s16): Remove.
15408 (__arm_vrhaddq_x_s32): Remove.
15409 (__arm_vrhaddq_x_u8): Remove.
15410 (__arm_vrhaddq_x_u16): Remove.
15411 (__arm_vrhaddq_x_u32): Remove.
15412 (__arm_vrhaddq): Remove.
15413 (__arm_vrhaddq_m): Remove.
15414 (__arm_vrhaddq_x): Remove.
15415 (vrmulhq): Remove.
15416 (vrmulhq_m): Remove.
15417 (vrmulhq_x): Remove.
15418 (vrmulhq_u8): Remove.
15419 (vrmulhq_s8): Remove.
15420 (vrmulhq_u16): Remove.
15421 (vrmulhq_s16): Remove.
15422 (vrmulhq_u32): Remove.
15423 (vrmulhq_s32): Remove.
15424 (vrmulhq_m_s8): Remove.
15425 (vrmulhq_m_s32): Remove.
15426 (vrmulhq_m_s16): Remove.
15427 (vrmulhq_m_u8): Remove.
15428 (vrmulhq_m_u32): Remove.
15429 (vrmulhq_m_u16): Remove.
15430 (vrmulhq_x_s8): Remove.
15431 (vrmulhq_x_s16): Remove.
15432 (vrmulhq_x_s32): Remove.
15433 (vrmulhq_x_u8): Remove.
15434 (vrmulhq_x_u16): Remove.
15435 (vrmulhq_x_u32): Remove.
15436 (__arm_vrmulhq_u8): Remove.
15437 (__arm_vrmulhq_s8): Remove.
15438 (__arm_vrmulhq_u16): Remove.
15439 (__arm_vrmulhq_s16): Remove.
15440 (__arm_vrmulhq_u32): Remove.
15441 (__arm_vrmulhq_s32): Remove.
15442 (__arm_vrmulhq_m_s8): Remove.
15443 (__arm_vrmulhq_m_s32): Remove.
15444 (__arm_vrmulhq_m_s16): Remove.
15445 (__arm_vrmulhq_m_u8): Remove.
15446 (__arm_vrmulhq_m_u32): Remove.
15447 (__arm_vrmulhq_m_u16): Remove.
15448 (__arm_vrmulhq_x_s8): Remove.
15449 (__arm_vrmulhq_x_s16): Remove.
15450 (__arm_vrmulhq_x_s32): Remove.
15451 (__arm_vrmulhq_x_u8): Remove.
15452 (__arm_vrmulhq_x_u16): Remove.
15453 (__arm_vrmulhq_x_u32): Remove.
15454 (__arm_vrmulhq): Remove.
15455 (__arm_vrmulhq_m): Remove.
15456 (__arm_vrmulhq_x): Remove.
15457
15458 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15459
15460 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
15461 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
15462 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
15463 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
15464 * config/arm/mve.md (mve_vabdq_<supf><mode>)
15465 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
15466 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
15467 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
15468 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
15469 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
15470 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
15471 ...
15472 (@mve_<mve_insn>q_<supf><mode>): ... this.
15473 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
15474 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
15475 gen_mve_vhaddq / gen_mve_vrhaddq.
15476
15477 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15478
15479 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
15480 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
15481 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
15482 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
15483 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
15484 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
15485 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
15486 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
15487 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
15488 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
15489 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
15490 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
15491 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15492
15493 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15494
15495 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
15496 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
15497 vqsubq.
15498 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
15499 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
15500 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
15501 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
15502 (mve_vqsubq_n_<supf><mode>): Merge into ...
15503 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15504
15505 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15506
15507 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
15508 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
15509 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
15510 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
15511 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
15512 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
15513 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
15514 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
15515 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
15516 (mve_vshlq_m_<supf><mode>): Merged into
15517 @mve_<mve_insn>q_m_<supf><mode>.
15518 (mve_vabdq_m_<supf><mode>): Likewise.
15519 (mve_vhaddq_m_<supf><mode>): Likewise.
15520 (mve_vhsubq_m_<supf><mode>): Likewise.
15521 (mve_vmaxq_m_<supf><mode>): Likewise.
15522 (mve_vminq_m_<supf><mode>): Likewise.
15523 (mve_vmulhq_m_<supf><mode>): Likewise.
15524 (mve_vqaddq_m_<supf><mode>): Likewise.
15525 (mve_vqrshlq_m_<supf><mode>): Likewise.
15526 (mve_vqshlq_m_<supf><mode>): Likewise.
15527 (mve_vqsubq_m_<supf><mode>): Likewise.
15528 (mve_vrhaddq_m_<supf><mode>): Likewise.
15529 (mve_vrmulhq_m_<supf><mode>): Likewise.
15530 (mve_vrshlq_m_<supf><mode>): Likewise.
15531 (mve_vqdmladhq_m_s<mode>): Likewise.
15532 (mve_vqdmladhxq_m_s<mode>): Likewise.
15533 (mve_vqdmlsdhq_m_s<mode>): Likewise.
15534 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
15535 (mve_vqdmulhq_m_s<mode>): Likewise.
15536 (mve_vqrdmladhq_m_s<mode>): Likewise.
15537 (mve_vqrdmladhxq_m_s<mode>): Likewise.
15538 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
15539 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
15540 (mve_vqrdmulhq_m_s<mode>): Likewise.
15541
15542 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15543
15544 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
15545 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
15546 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
15547 * config/arm/arm_mve.h (vcreateq_f16): Remove.
15548 (vcreateq_f32): Remove.
15549 (vcreateq_u8): Remove.
15550 (vcreateq_u16): Remove.
15551 (vcreateq_u32): Remove.
15552 (vcreateq_u64): Remove.
15553 (vcreateq_s8): Remove.
15554 (vcreateq_s16): Remove.
15555 (vcreateq_s32): Remove.
15556 (vcreateq_s64): Remove.
15557 (__arm_vcreateq_u8): Remove.
15558 (__arm_vcreateq_u16): Remove.
15559 (__arm_vcreateq_u32): Remove.
15560 (__arm_vcreateq_u64): Remove.
15561 (__arm_vcreateq_s8): Remove.
15562 (__arm_vcreateq_s16): Remove.
15563 (__arm_vcreateq_s32): Remove.
15564 (__arm_vcreateq_s64): Remove.
15565 (__arm_vcreateq_f16): Remove.
15566 (__arm_vcreateq_f32): Remove.
15567
15568 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15569
15570 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
15571 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
15572 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
15573 (@mve_<mve_insn>q_f<mode>): ... this.
15574 (mve_vcreateq_<supf><mode>): Rename into ...
15575 (@mve_<mve_insn>q_<supf><mode>): ... this.
15576
15577 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15578
15579 * config/arm/arm-mve-builtins-shapes.cc (create): New.
15580 * config/arm/arm-mve-builtins-shapes.h: (create): New.
15581
15582 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15583
15584 * config/arm/arm-mve-builtins-functions.h (class
15585 unspec_mve_function_exact_insn): New.
15586
15587 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15588
15589 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
15590 (vorrq): New.
15591 * config/arm/arm-mve-builtins-base.def (vorrq): New.
15592 * config/arm/arm-mve-builtins-base.h (vorrq): New.
15593 * config/arm/arm-mve-builtins.cc
15594 (function_instance::has_inactive_argument): Handle vorrq.
15595 * config/arm/arm_mve.h (vorrq): Remove.
15596 (vorrq_m_n): Remove.
15597 (vorrq_m): Remove.
15598 (vorrq_x): Remove.
15599 (vorrq_u8): Remove.
15600 (vorrq_s8): Remove.
15601 (vorrq_u16): Remove.
15602 (vorrq_s16): Remove.
15603 (vorrq_u32): Remove.
15604 (vorrq_s32): Remove.
15605 (vorrq_n_u16): Remove.
15606 (vorrq_f16): Remove.
15607 (vorrq_n_s16): Remove.
15608 (vorrq_n_u32): Remove.
15609 (vorrq_f32): Remove.
15610 (vorrq_n_s32): Remove.
15611 (vorrq_m_n_s16): Remove.
15612 (vorrq_m_n_u16): Remove.
15613 (vorrq_m_n_s32): Remove.
15614 (vorrq_m_n_u32): Remove.
15615 (vorrq_m_s8): Remove.
15616 (vorrq_m_s32): Remove.
15617 (vorrq_m_s16): Remove.
15618 (vorrq_m_u8): Remove.
15619 (vorrq_m_u32): Remove.
15620 (vorrq_m_u16): Remove.
15621 (vorrq_m_f32): Remove.
15622 (vorrq_m_f16): Remove.
15623 (vorrq_x_s8): Remove.
15624 (vorrq_x_s16): Remove.
15625 (vorrq_x_s32): Remove.
15626 (vorrq_x_u8): Remove.
15627 (vorrq_x_u16): Remove.
15628 (vorrq_x_u32): Remove.
15629 (vorrq_x_f16): Remove.
15630 (vorrq_x_f32): Remove.
15631 (__arm_vorrq_u8): Remove.
15632 (__arm_vorrq_s8): Remove.
15633 (__arm_vorrq_u16): Remove.
15634 (__arm_vorrq_s16): Remove.
15635 (__arm_vorrq_u32): Remove.
15636 (__arm_vorrq_s32): Remove.
15637 (__arm_vorrq_n_u16): Remove.
15638 (__arm_vorrq_n_s16): Remove.
15639 (__arm_vorrq_n_u32): Remove.
15640 (__arm_vorrq_n_s32): Remove.
15641 (__arm_vorrq_m_n_s16): Remove.
15642 (__arm_vorrq_m_n_u16): Remove.
15643 (__arm_vorrq_m_n_s32): Remove.
15644 (__arm_vorrq_m_n_u32): Remove.
15645 (__arm_vorrq_m_s8): Remove.
15646 (__arm_vorrq_m_s32): Remove.
15647 (__arm_vorrq_m_s16): Remove.
15648 (__arm_vorrq_m_u8): Remove.
15649 (__arm_vorrq_m_u32): Remove.
15650 (__arm_vorrq_m_u16): Remove.
15651 (__arm_vorrq_x_s8): Remove.
15652 (__arm_vorrq_x_s16): Remove.
15653 (__arm_vorrq_x_s32): Remove.
15654 (__arm_vorrq_x_u8): Remove.
15655 (__arm_vorrq_x_u16): Remove.
15656 (__arm_vorrq_x_u32): Remove.
15657 (__arm_vorrq_f16): Remove.
15658 (__arm_vorrq_f32): Remove.
15659 (__arm_vorrq_m_f32): Remove.
15660 (__arm_vorrq_m_f16): Remove.
15661 (__arm_vorrq_x_f16): Remove.
15662 (__arm_vorrq_x_f32): Remove.
15663 (__arm_vorrq): Remove.
15664 (__arm_vorrq_m_n): Remove.
15665 (__arm_vorrq_m): Remove.
15666 (__arm_vorrq_x): Remove.
15667
15668 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15669
15670 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
15671 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
15672 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
15673 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
15674
15675 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15676
15677 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
15678 (vandq,veorq): New.
15679 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
15680 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
15681 * config/arm/arm_mve.h (vandq): Remove.
15682 (vandq_m): Remove.
15683 (vandq_x): Remove.
15684 (vandq_u8): Remove.
15685 (vandq_s8): Remove.
15686 (vandq_u16): Remove.
15687 (vandq_s16): Remove.
15688 (vandq_u32): Remove.
15689 (vandq_s32): Remove.
15690 (vandq_f16): Remove.
15691 (vandq_f32): Remove.
15692 (vandq_m_s8): Remove.
15693 (vandq_m_s32): Remove.
15694 (vandq_m_s16): Remove.
15695 (vandq_m_u8): Remove.
15696 (vandq_m_u32): Remove.
15697 (vandq_m_u16): Remove.
15698 (vandq_m_f32): Remove.
15699 (vandq_m_f16): Remove.
15700 (vandq_x_s8): Remove.
15701 (vandq_x_s16): Remove.
15702 (vandq_x_s32): Remove.
15703 (vandq_x_u8): Remove.
15704 (vandq_x_u16): Remove.
15705 (vandq_x_u32): Remove.
15706 (vandq_x_f16): Remove.
15707 (vandq_x_f32): Remove.
15708 (__arm_vandq_u8): Remove.
15709 (__arm_vandq_s8): Remove.
15710 (__arm_vandq_u16): Remove.
15711 (__arm_vandq_s16): Remove.
15712 (__arm_vandq_u32): Remove.
15713 (__arm_vandq_s32): Remove.
15714 (__arm_vandq_m_s8): Remove.
15715 (__arm_vandq_m_s32): Remove.
15716 (__arm_vandq_m_s16): Remove.
15717 (__arm_vandq_m_u8): Remove.
15718 (__arm_vandq_m_u32): Remove.
15719 (__arm_vandq_m_u16): Remove.
15720 (__arm_vandq_x_s8): Remove.
15721 (__arm_vandq_x_s16): Remove.
15722 (__arm_vandq_x_s32): Remove.
15723 (__arm_vandq_x_u8): Remove.
15724 (__arm_vandq_x_u16): Remove.
15725 (__arm_vandq_x_u32): Remove.
15726 (__arm_vandq_f16): Remove.
15727 (__arm_vandq_f32): Remove.
15728 (__arm_vandq_m_f32): Remove.
15729 (__arm_vandq_m_f16): Remove.
15730 (__arm_vandq_x_f16): Remove.
15731 (__arm_vandq_x_f32): Remove.
15732 (__arm_vandq): Remove.
15733 (__arm_vandq_m): Remove.
15734 (__arm_vandq_x): Remove.
15735 (veorq_m): Remove.
15736 (veorq_x): Remove.
15737 (veorq_u8): Remove.
15738 (veorq_s8): Remove.
15739 (veorq_u16): Remove.
15740 (veorq_s16): Remove.
15741 (veorq_u32): Remove.
15742 (veorq_s32): Remove.
15743 (veorq_f16): Remove.
15744 (veorq_f32): Remove.
15745 (veorq_m_s8): Remove.
15746 (veorq_m_s32): Remove.
15747 (veorq_m_s16): Remove.
15748 (veorq_m_u8): Remove.
15749 (veorq_m_u32): Remove.
15750 (veorq_m_u16): Remove.
15751 (veorq_m_f32): Remove.
15752 (veorq_m_f16): Remove.
15753 (veorq_x_s8): Remove.
15754 (veorq_x_s16): Remove.
15755 (veorq_x_s32): Remove.
15756 (veorq_x_u8): Remove.
15757 (veorq_x_u16): Remove.
15758 (veorq_x_u32): Remove.
15759 (veorq_x_f16): Remove.
15760 (veorq_x_f32): Remove.
15761 (__arm_veorq_u8): Remove.
15762 (__arm_veorq_s8): Remove.
15763 (__arm_veorq_u16): Remove.
15764 (__arm_veorq_s16): Remove.
15765 (__arm_veorq_u32): Remove.
15766 (__arm_veorq_s32): Remove.
15767 (__arm_veorq_m_s8): Remove.
15768 (__arm_veorq_m_s32): Remove.
15769 (__arm_veorq_m_s16): Remove.
15770 (__arm_veorq_m_u8): Remove.
15771 (__arm_veorq_m_u32): Remove.
15772 (__arm_veorq_m_u16): Remove.
15773 (__arm_veorq_x_s8): Remove.
15774 (__arm_veorq_x_s16): Remove.
15775 (__arm_veorq_x_s32): Remove.
15776 (__arm_veorq_x_u8): Remove.
15777 (__arm_veorq_x_u16): Remove.
15778 (__arm_veorq_x_u32): Remove.
15779 (__arm_veorq_f16): Remove.
15780 (__arm_veorq_f32): Remove.
15781 (__arm_veorq_m_f32): Remove.
15782 (__arm_veorq_m_f16): Remove.
15783 (__arm_veorq_x_f16): Remove.
15784 (__arm_veorq_x_f32): Remove.
15785 (__arm_veorq): Remove.
15786 (__arm_veorq_m): Remove.
15787 (__arm_veorq_x): Remove.
15788
15789 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15790
15791 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
15792 (MVE_FP_M_BINARY_LOGIC): New.
15793 (MVE_INT_M_N_BINARY_LOGIC): New.
15794 (MVE_INT_N_BINARY_LOGIC): New.
15795 (mve_insn): Add vand, veor, vorr, vbic.
15796 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
15797 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
15798 (mve_vbicq_m_<supf><mode>): Merge into ...
15799 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15800 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
15801 (mve_vbicq_m_f<mode>): Merge into ...
15802 (@mve_<mve_insn>q_m_f<mode>): ... this.
15803 (mve_vorrq_n_<supf><mode>)
15804 (mve_vbicq_n_<supf><mode>): Merge into ...
15805 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15806 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
15807 into ...
15808 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15809
15810 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15811
15812 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
15813 * config/arm/arm-mve-builtins-shapes.h (binary): New.
15814
15815 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15816
15817 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
15818 New.
15819 (vaddq, vmulq, vsubq): New.
15820 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
15821 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
15822 * config/arm/arm_mve.h (vaddq): Remove.
15823 (vaddq_m): Remove.
15824 (vaddq_x): Remove.
15825 (vaddq_n_u8): Remove.
15826 (vaddq_n_s8): Remove.
15827 (vaddq_n_u16): Remove.
15828 (vaddq_n_s16): Remove.
15829 (vaddq_n_u32): Remove.
15830 (vaddq_n_s32): Remove.
15831 (vaddq_n_f16): Remove.
15832 (vaddq_n_f32): Remove.
15833 (vaddq_m_n_s8): Remove.
15834 (vaddq_m_n_s32): Remove.
15835 (vaddq_m_n_s16): Remove.
15836 (vaddq_m_n_u8): Remove.
15837 (vaddq_m_n_u32): Remove.
15838 (vaddq_m_n_u16): Remove.
15839 (vaddq_m_s8): Remove.
15840 (vaddq_m_s32): Remove.
15841 (vaddq_m_s16): Remove.
15842 (vaddq_m_u8): Remove.
15843 (vaddq_m_u32): Remove.
15844 (vaddq_m_u16): Remove.
15845 (vaddq_m_f32): Remove.
15846 (vaddq_m_f16): Remove.
15847 (vaddq_m_n_f32): Remove.
15848 (vaddq_m_n_f16): Remove.
15849 (vaddq_s8): Remove.
15850 (vaddq_s16): Remove.
15851 (vaddq_s32): Remove.
15852 (vaddq_u8): Remove.
15853 (vaddq_u16): Remove.
15854 (vaddq_u32): Remove.
15855 (vaddq_f16): Remove.
15856 (vaddq_f32): Remove.
15857 (vaddq_x_s8): Remove.
15858 (vaddq_x_s16): Remove.
15859 (vaddq_x_s32): Remove.
15860 (vaddq_x_n_s8): Remove.
15861 (vaddq_x_n_s16): Remove.
15862 (vaddq_x_n_s32): Remove.
15863 (vaddq_x_u8): Remove.
15864 (vaddq_x_u16): Remove.
15865 (vaddq_x_u32): Remove.
15866 (vaddq_x_n_u8): Remove.
15867 (vaddq_x_n_u16): Remove.
15868 (vaddq_x_n_u32): Remove.
15869 (vaddq_x_f16): Remove.
15870 (vaddq_x_f32): Remove.
15871 (vaddq_x_n_f16): Remove.
15872 (vaddq_x_n_f32): Remove.
15873 (__arm_vaddq_n_u8): Remove.
15874 (__arm_vaddq_n_s8): Remove.
15875 (__arm_vaddq_n_u16): Remove.
15876 (__arm_vaddq_n_s16): Remove.
15877 (__arm_vaddq_n_u32): Remove.
15878 (__arm_vaddq_n_s32): Remove.
15879 (__arm_vaddq_m_n_s8): Remove.
15880 (__arm_vaddq_m_n_s32): Remove.
15881 (__arm_vaddq_m_n_s16): Remove.
15882 (__arm_vaddq_m_n_u8): Remove.
15883 (__arm_vaddq_m_n_u32): Remove.
15884 (__arm_vaddq_m_n_u16): Remove.
15885 (__arm_vaddq_m_s8): Remove.
15886 (__arm_vaddq_m_s32): Remove.
15887 (__arm_vaddq_m_s16): Remove.
15888 (__arm_vaddq_m_u8): Remove.
15889 (__arm_vaddq_m_u32): Remove.
15890 (__arm_vaddq_m_u16): Remove.
15891 (__arm_vaddq_s8): Remove.
15892 (__arm_vaddq_s16): Remove.
15893 (__arm_vaddq_s32): Remove.
15894 (__arm_vaddq_u8): Remove.
15895 (__arm_vaddq_u16): Remove.
15896 (__arm_vaddq_u32): Remove.
15897 (__arm_vaddq_x_s8): Remove.
15898 (__arm_vaddq_x_s16): Remove.
15899 (__arm_vaddq_x_s32): Remove.
15900 (__arm_vaddq_x_n_s8): Remove.
15901 (__arm_vaddq_x_n_s16): Remove.
15902 (__arm_vaddq_x_n_s32): Remove.
15903 (__arm_vaddq_x_u8): Remove.
15904 (__arm_vaddq_x_u16): Remove.
15905 (__arm_vaddq_x_u32): Remove.
15906 (__arm_vaddq_x_n_u8): Remove.
15907 (__arm_vaddq_x_n_u16): Remove.
15908 (__arm_vaddq_x_n_u32): Remove.
15909 (__arm_vaddq_n_f16): Remove.
15910 (__arm_vaddq_n_f32): Remove.
15911 (__arm_vaddq_m_f32): Remove.
15912 (__arm_vaddq_m_f16): Remove.
15913 (__arm_vaddq_m_n_f32): Remove.
15914 (__arm_vaddq_m_n_f16): Remove.
15915 (__arm_vaddq_f16): Remove.
15916 (__arm_vaddq_f32): Remove.
15917 (__arm_vaddq_x_f16): Remove.
15918 (__arm_vaddq_x_f32): Remove.
15919 (__arm_vaddq_x_n_f16): Remove.
15920 (__arm_vaddq_x_n_f32): Remove.
15921 (__arm_vaddq): Remove.
15922 (__arm_vaddq_m): Remove.
15923 (__arm_vaddq_x): Remove.
15924 (vmulq): Remove.
15925 (vmulq_m): Remove.
15926 (vmulq_x): Remove.
15927 (vmulq_u8): Remove.
15928 (vmulq_n_u8): Remove.
15929 (vmulq_s8): Remove.
15930 (vmulq_n_s8): Remove.
15931 (vmulq_u16): Remove.
15932 (vmulq_n_u16): Remove.
15933 (vmulq_s16): Remove.
15934 (vmulq_n_s16): Remove.
15935 (vmulq_u32): Remove.
15936 (vmulq_n_u32): Remove.
15937 (vmulq_s32): Remove.
15938 (vmulq_n_s32): Remove.
15939 (vmulq_n_f16): Remove.
15940 (vmulq_f16): Remove.
15941 (vmulq_n_f32): Remove.
15942 (vmulq_f32): Remove.
15943 (vmulq_m_n_s8): Remove.
15944 (vmulq_m_n_s32): Remove.
15945 (vmulq_m_n_s16): Remove.
15946 (vmulq_m_n_u8): Remove.
15947 (vmulq_m_n_u32): Remove.
15948 (vmulq_m_n_u16): Remove.
15949 (vmulq_m_s8): Remove.
15950 (vmulq_m_s32): Remove.
15951 (vmulq_m_s16): Remove.
15952 (vmulq_m_u8): Remove.
15953 (vmulq_m_u32): Remove.
15954 (vmulq_m_u16): Remove.
15955 (vmulq_m_f32): Remove.
15956 (vmulq_m_f16): Remove.
15957 (vmulq_m_n_f32): Remove.
15958 (vmulq_m_n_f16): Remove.
15959 (vmulq_x_s8): Remove.
15960 (vmulq_x_s16): Remove.
15961 (vmulq_x_s32): Remove.
15962 (vmulq_x_n_s8): Remove.
15963 (vmulq_x_n_s16): Remove.
15964 (vmulq_x_n_s32): Remove.
15965 (vmulq_x_u8): Remove.
15966 (vmulq_x_u16): Remove.
15967 (vmulq_x_u32): Remove.
15968 (vmulq_x_n_u8): Remove.
15969 (vmulq_x_n_u16): Remove.
15970 (vmulq_x_n_u32): Remove.
15971 (vmulq_x_f16): Remove.
15972 (vmulq_x_f32): Remove.
15973 (vmulq_x_n_f16): Remove.
15974 (vmulq_x_n_f32): Remove.
15975 (__arm_vmulq_u8): Remove.
15976 (__arm_vmulq_n_u8): Remove.
15977 (__arm_vmulq_s8): Remove.
15978 (__arm_vmulq_n_s8): Remove.
15979 (__arm_vmulq_u16): Remove.
15980 (__arm_vmulq_n_u16): Remove.
15981 (__arm_vmulq_s16): Remove.
15982 (__arm_vmulq_n_s16): Remove.
15983 (__arm_vmulq_u32): Remove.
15984 (__arm_vmulq_n_u32): Remove.
15985 (__arm_vmulq_s32): Remove.
15986 (__arm_vmulq_n_s32): Remove.
15987 (__arm_vmulq_m_n_s8): Remove.
15988 (__arm_vmulq_m_n_s32): Remove.
15989 (__arm_vmulq_m_n_s16): Remove.
15990 (__arm_vmulq_m_n_u8): Remove.
15991 (__arm_vmulq_m_n_u32): Remove.
15992 (__arm_vmulq_m_n_u16): Remove.
15993 (__arm_vmulq_m_s8): Remove.
15994 (__arm_vmulq_m_s32): Remove.
15995 (__arm_vmulq_m_s16): Remove.
15996 (__arm_vmulq_m_u8): Remove.
15997 (__arm_vmulq_m_u32): Remove.
15998 (__arm_vmulq_m_u16): Remove.
15999 (__arm_vmulq_x_s8): Remove.
16000 (__arm_vmulq_x_s16): Remove.
16001 (__arm_vmulq_x_s32): Remove.
16002 (__arm_vmulq_x_n_s8): Remove.
16003 (__arm_vmulq_x_n_s16): Remove.
16004 (__arm_vmulq_x_n_s32): Remove.
16005 (__arm_vmulq_x_u8): Remove.
16006 (__arm_vmulq_x_u16): Remove.
16007 (__arm_vmulq_x_u32): Remove.
16008 (__arm_vmulq_x_n_u8): Remove.
16009 (__arm_vmulq_x_n_u16): Remove.
16010 (__arm_vmulq_x_n_u32): Remove.
16011 (__arm_vmulq_n_f16): Remove.
16012 (__arm_vmulq_f16): Remove.
16013 (__arm_vmulq_n_f32): Remove.
16014 (__arm_vmulq_f32): Remove.
16015 (__arm_vmulq_m_f32): Remove.
16016 (__arm_vmulq_m_f16): Remove.
16017 (__arm_vmulq_m_n_f32): Remove.
16018 (__arm_vmulq_m_n_f16): Remove.
16019 (__arm_vmulq_x_f16): Remove.
16020 (__arm_vmulq_x_f32): Remove.
16021 (__arm_vmulq_x_n_f16): Remove.
16022 (__arm_vmulq_x_n_f32): Remove.
16023 (__arm_vmulq): Remove.
16024 (__arm_vmulq_m): Remove.
16025 (__arm_vmulq_x): Remove.
16026 (vsubq): Remove.
16027 (vsubq_m): Remove.
16028 (vsubq_x): Remove.
16029 (vsubq_n_f16): Remove.
16030 (vsubq_n_f32): Remove.
16031 (vsubq_u8): Remove.
16032 (vsubq_n_u8): Remove.
16033 (vsubq_s8): Remove.
16034 (vsubq_n_s8): Remove.
16035 (vsubq_u16): Remove.
16036 (vsubq_n_u16): Remove.
16037 (vsubq_s16): Remove.
16038 (vsubq_n_s16): Remove.
16039 (vsubq_u32): Remove.
16040 (vsubq_n_u32): Remove.
16041 (vsubq_s32): Remove.
16042 (vsubq_n_s32): Remove.
16043 (vsubq_f16): Remove.
16044 (vsubq_f32): Remove.
16045 (vsubq_m_s8): Remove.
16046 (vsubq_m_u8): Remove.
16047 (vsubq_m_s16): Remove.
16048 (vsubq_m_u16): Remove.
16049 (vsubq_m_s32): Remove.
16050 (vsubq_m_u32): Remove.
16051 (vsubq_m_n_s8): Remove.
16052 (vsubq_m_n_s32): Remove.
16053 (vsubq_m_n_s16): Remove.
16054 (vsubq_m_n_u8): Remove.
16055 (vsubq_m_n_u32): Remove.
16056 (vsubq_m_n_u16): Remove.
16057 (vsubq_m_f32): Remove.
16058 (vsubq_m_f16): Remove.
16059 (vsubq_m_n_f32): Remove.
16060 (vsubq_m_n_f16): Remove.
16061 (vsubq_x_s8): Remove.
16062 (vsubq_x_s16): Remove.
16063 (vsubq_x_s32): Remove.
16064 (vsubq_x_n_s8): Remove.
16065 (vsubq_x_n_s16): Remove.
16066 (vsubq_x_n_s32): Remove.
16067 (vsubq_x_u8): Remove.
16068 (vsubq_x_u16): Remove.
16069 (vsubq_x_u32): Remove.
16070 (vsubq_x_n_u8): Remove.
16071 (vsubq_x_n_u16): Remove.
16072 (vsubq_x_n_u32): Remove.
16073 (vsubq_x_f16): Remove.
16074 (vsubq_x_f32): Remove.
16075 (vsubq_x_n_f16): Remove.
16076 (vsubq_x_n_f32): Remove.
16077 (__arm_vsubq_u8): Remove.
16078 (__arm_vsubq_n_u8): Remove.
16079 (__arm_vsubq_s8): Remove.
16080 (__arm_vsubq_n_s8): Remove.
16081 (__arm_vsubq_u16): Remove.
16082 (__arm_vsubq_n_u16): Remove.
16083 (__arm_vsubq_s16): Remove.
16084 (__arm_vsubq_n_s16): Remove.
16085 (__arm_vsubq_u32): Remove.
16086 (__arm_vsubq_n_u32): Remove.
16087 (__arm_vsubq_s32): Remove.
16088 (__arm_vsubq_n_s32): Remove.
16089 (__arm_vsubq_m_s8): Remove.
16090 (__arm_vsubq_m_u8): Remove.
16091 (__arm_vsubq_m_s16): Remove.
16092 (__arm_vsubq_m_u16): Remove.
16093 (__arm_vsubq_m_s32): Remove.
16094 (__arm_vsubq_m_u32): Remove.
16095 (__arm_vsubq_m_n_s8): Remove.
16096 (__arm_vsubq_m_n_s32): Remove.
16097 (__arm_vsubq_m_n_s16): Remove.
16098 (__arm_vsubq_m_n_u8): Remove.
16099 (__arm_vsubq_m_n_u32): Remove.
16100 (__arm_vsubq_m_n_u16): Remove.
16101 (__arm_vsubq_x_s8): Remove.
16102 (__arm_vsubq_x_s16): Remove.
16103 (__arm_vsubq_x_s32): Remove.
16104 (__arm_vsubq_x_n_s8): Remove.
16105 (__arm_vsubq_x_n_s16): Remove.
16106 (__arm_vsubq_x_n_s32): Remove.
16107 (__arm_vsubq_x_u8): Remove.
16108 (__arm_vsubq_x_u16): Remove.
16109 (__arm_vsubq_x_u32): Remove.
16110 (__arm_vsubq_x_n_u8): Remove.
16111 (__arm_vsubq_x_n_u16): Remove.
16112 (__arm_vsubq_x_n_u32): Remove.
16113 (__arm_vsubq_n_f16): Remove.
16114 (__arm_vsubq_n_f32): Remove.
16115 (__arm_vsubq_f16): Remove.
16116 (__arm_vsubq_f32): Remove.
16117 (__arm_vsubq_m_f32): Remove.
16118 (__arm_vsubq_m_f16): Remove.
16119 (__arm_vsubq_m_n_f32): Remove.
16120 (__arm_vsubq_m_n_f16): Remove.
16121 (__arm_vsubq_x_f16): Remove.
16122 (__arm_vsubq_x_f32): Remove.
16123 (__arm_vsubq_x_n_f16): Remove.
16124 (__arm_vsubq_x_n_f32): Remove.
16125 (__arm_vsubq): Remove.
16126 (__arm_vsubq_m): Remove.
16127 (__arm_vsubq_x): Remove.
16128 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
16129 Remove.
16130 (vmulq_u, vmulq_s, vmulq_f): Remove.
16131 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
16132 (mve_vmulq_<supf><mode>): Remove.
16133
16134 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
16135
16136 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
16137 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
16138 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
16139 iterators.
16140 * config/arm/mve.md
16141 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
16142 Factorize into ...
16143 (@mve_<mve_insn>q_n_f<mode>): ... this.
16144 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
16145 (mve_vsubq_n_<supf><mode>): Factorize into ...
16146 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16147 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
16148 into ...
16149 (mve_<mve_addsubmul>q<mode>): ... this.
16150 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
16151 Factorize into ...
16152 (mve_<mve_addsubmul>q_f<mode>): ... this.
16153 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
16154 (mve_vsubq_m_<supf><mode>): Factorize into ...
16155 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
16156 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
16157 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
16158 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16159 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
16160 Factorize into ...
16161 (@mve_<mve_insn>q_m_f<mode>): ... this.
16162 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
16163 (mve_vsubq_m_n_f<mode>): Factorize into ...
16164 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
16165
16166 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
16167
16168 * config/arm/arm-mve-builtins-functions.h (class
16169 unspec_based_mve_function_base): New.
16170 (class unspec_based_mve_function_exact_insn): New.
16171
16172 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
16173
16174 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
16175 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
16176
16177 2023-05-03 Murray Steele <murray.steele@arm.com>
16178 Christophe Lyon <christophe.lyon@arm.com>
16179
16180 * config/arm/arm-mve-builtins-base.cc (class
16181 vuninitializedq_impl): New.
16182 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
16183 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
16184 declaration.
16185 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
16186 * config/arm/arm-mve-builtins-shapes.h (inherent): New
16187 declaration.
16188 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
16189 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
16190 (__arm_vuninitializedq_u8): Remove.
16191 (__arm_vuninitializedq_u16): Remove.
16192 (__arm_vuninitializedq_u32): Remove.
16193 (__arm_vuninitializedq_u64): Remove.
16194 (__arm_vuninitializedq_s8): Remove.
16195 (__arm_vuninitializedq_s16): Remove.
16196 (__arm_vuninitializedq_s32): Remove.
16197 (__arm_vuninitializedq_s64): Remove.
16198 (__arm_vuninitializedq_f16): Remove.
16199 (__arm_vuninitializedq_f32): Remove.
16200
16201 2023-05-03 Murray Steele <murray.steele@arm.com>
16202 Christophe Lyon <christophe.lyon@arm.com>
16203
16204 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
16205 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
16206 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
16207 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
16208 (parse_type): Likewise.
16209 (parse_signature): Likewise.
16210 (build_one): Likewise.
16211 (build_all): Likewise.
16212 (overloaded_base): New struct.
16213 (unary_convert_def): Likewise.
16214 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
16215 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
16216 macro.
16217 (TYPES_reinterpret_unsigned1): Likewise.
16218 (TYPES_reinterpret_integer): Likewise.
16219 (TYPES_reinterpret_integer1): Likewise.
16220 (TYPES_reinterpret_float1): Likewise.
16221 (TYPES_reinterpret_float): Likewise.
16222 (reinterpret_integer): New.
16223 (reinterpret_float): New.
16224 (handle_arm_mve_h): Register builtins.
16225 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
16226 (vreinterpretq_s32): Likewise.
16227 (vreinterpretq_s64): Likewise.
16228 (vreinterpretq_s8): Likewise.
16229 (vreinterpretq_u16): Likewise.
16230 (vreinterpretq_u32): Likewise.
16231 (vreinterpretq_u64): Likewise.
16232 (vreinterpretq_u8): Likewise.
16233 (vreinterpretq_f16): Likewise.
16234 (vreinterpretq_f32): Likewise.
16235 (vreinterpretq_s16_s32): Likewise.
16236 (vreinterpretq_s16_s64): Likewise.
16237 (vreinterpretq_s16_s8): Likewise.
16238 (vreinterpretq_s16_u16): Likewise.
16239 (vreinterpretq_s16_u32): Likewise.
16240 (vreinterpretq_s16_u64): Likewise.
16241 (vreinterpretq_s16_u8): Likewise.
16242 (vreinterpretq_s32_s16): Likewise.
16243 (vreinterpretq_s32_s64): Likewise.
16244 (vreinterpretq_s32_s8): Likewise.
16245 (vreinterpretq_s32_u16): Likewise.
16246 (vreinterpretq_s32_u32): Likewise.
16247 (vreinterpretq_s32_u64): Likewise.
16248 (vreinterpretq_s32_u8): Likewise.
16249 (vreinterpretq_s64_s16): Likewise.
16250 (vreinterpretq_s64_s32): Likewise.
16251 (vreinterpretq_s64_s8): Likewise.
16252 (vreinterpretq_s64_u16): Likewise.
16253 (vreinterpretq_s64_u32): Likewise.
16254 (vreinterpretq_s64_u64): Likewise.
16255 (vreinterpretq_s64_u8): Likewise.
16256 (vreinterpretq_s8_s16): Likewise.
16257 (vreinterpretq_s8_s32): Likewise.
16258 (vreinterpretq_s8_s64): Likewise.
16259 (vreinterpretq_s8_u16): Likewise.
16260 (vreinterpretq_s8_u32): Likewise.
16261 (vreinterpretq_s8_u64): Likewise.
16262 (vreinterpretq_s8_u8): Likewise.
16263 (vreinterpretq_u16_s16): Likewise.
16264 (vreinterpretq_u16_s32): Likewise.
16265 (vreinterpretq_u16_s64): Likewise.
16266 (vreinterpretq_u16_s8): Likewise.
16267 (vreinterpretq_u16_u32): Likewise.
16268 (vreinterpretq_u16_u64): Likewise.
16269 (vreinterpretq_u16_u8): Likewise.
16270 (vreinterpretq_u32_s16): Likewise.
16271 (vreinterpretq_u32_s32): Likewise.
16272 (vreinterpretq_u32_s64): Likewise.
16273 (vreinterpretq_u32_s8): Likewise.
16274 (vreinterpretq_u32_u16): Likewise.
16275 (vreinterpretq_u32_u64): Likewise.
16276 (vreinterpretq_u32_u8): Likewise.
16277 (vreinterpretq_u64_s16): Likewise.
16278 (vreinterpretq_u64_s32): Likewise.
16279 (vreinterpretq_u64_s64): Likewise.
16280 (vreinterpretq_u64_s8): Likewise.
16281 (vreinterpretq_u64_u16): Likewise.
16282 (vreinterpretq_u64_u32): Likewise.
16283 (vreinterpretq_u64_u8): Likewise.
16284 (vreinterpretq_u8_s16): Likewise.
16285 (vreinterpretq_u8_s32): Likewise.
16286 (vreinterpretq_u8_s64): Likewise.
16287 (vreinterpretq_u8_s8): Likewise.
16288 (vreinterpretq_u8_u16): Likewise.
16289 (vreinterpretq_u8_u32): Likewise.
16290 (vreinterpretq_u8_u64): Likewise.
16291 (vreinterpretq_s32_f16): Likewise.
16292 (vreinterpretq_s32_f32): Likewise.
16293 (vreinterpretq_u16_f16): Likewise.
16294 (vreinterpretq_u16_f32): Likewise.
16295 (vreinterpretq_u32_f16): Likewise.
16296 (vreinterpretq_u32_f32): Likewise.
16297 (vreinterpretq_u64_f16): Likewise.
16298 (vreinterpretq_u64_f32): Likewise.
16299 (vreinterpretq_u8_f16): Likewise.
16300 (vreinterpretq_u8_f32): Likewise.
16301 (vreinterpretq_f16_f32): Likewise.
16302 (vreinterpretq_f16_s16): Likewise.
16303 (vreinterpretq_f16_s32): Likewise.
16304 (vreinterpretq_f16_s64): Likewise.
16305 (vreinterpretq_f16_s8): Likewise.
16306 (vreinterpretq_f16_u16): Likewise.
16307 (vreinterpretq_f16_u32): Likewise.
16308 (vreinterpretq_f16_u64): Likewise.
16309 (vreinterpretq_f16_u8): Likewise.
16310 (vreinterpretq_f32_f16): Likewise.
16311 (vreinterpretq_f32_s16): Likewise.
16312 (vreinterpretq_f32_s32): Likewise.
16313 (vreinterpretq_f32_s64): Likewise.
16314 (vreinterpretq_f32_s8): Likewise.
16315 (vreinterpretq_f32_u16): Likewise.
16316 (vreinterpretq_f32_u32): Likewise.
16317 (vreinterpretq_f32_u64): Likewise.
16318 (vreinterpretq_f32_u8): Likewise.
16319 (vreinterpretq_s16_f16): Likewise.
16320 (vreinterpretq_s16_f32): Likewise.
16321 (vreinterpretq_s64_f16): Likewise.
16322 (vreinterpretq_s64_f32): Likewise.
16323 (vreinterpretq_s8_f16): Likewise.
16324 (vreinterpretq_s8_f32): Likewise.
16325 (__arm_vreinterpretq_f16): Likewise.
16326 (__arm_vreinterpretq_f32): Likewise.
16327 (__arm_vreinterpretq_s16): Likewise.
16328 (__arm_vreinterpretq_s32): Likewise.
16329 (__arm_vreinterpretq_s64): Likewise.
16330 (__arm_vreinterpretq_s8): Likewise.
16331 (__arm_vreinterpretq_u16): Likewise.
16332 (__arm_vreinterpretq_u32): Likewise.
16333 (__arm_vreinterpretq_u64): Likewise.
16334 (__arm_vreinterpretq_u8): Likewise.
16335 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
16336 (__arm_vreinterpretq_s16_s64): Likewise.
16337 (__arm_vreinterpretq_s16_s8): Likewise.
16338 (__arm_vreinterpretq_s16_u16): Likewise.
16339 (__arm_vreinterpretq_s16_u32): Likewise.
16340 (__arm_vreinterpretq_s16_u64): Likewise.
16341 (__arm_vreinterpretq_s16_u8): Likewise.
16342 (__arm_vreinterpretq_s32_s16): Likewise.
16343 (__arm_vreinterpretq_s32_s64): Likewise.
16344 (__arm_vreinterpretq_s32_s8): Likewise.
16345 (__arm_vreinterpretq_s32_u16): Likewise.
16346 (__arm_vreinterpretq_s32_u32): Likewise.
16347 (__arm_vreinterpretq_s32_u64): Likewise.
16348 (__arm_vreinterpretq_s32_u8): Likewise.
16349 (__arm_vreinterpretq_s64_s16): Likewise.
16350 (__arm_vreinterpretq_s64_s32): Likewise.
16351 (__arm_vreinterpretq_s64_s8): Likewise.
16352 (__arm_vreinterpretq_s64_u16): Likewise.
16353 (__arm_vreinterpretq_s64_u32): Likewise.
16354 (__arm_vreinterpretq_s64_u64): Likewise.
16355 (__arm_vreinterpretq_s64_u8): Likewise.
16356 (__arm_vreinterpretq_s8_s16): Likewise.
16357 (__arm_vreinterpretq_s8_s32): Likewise.
16358 (__arm_vreinterpretq_s8_s64): Likewise.
16359 (__arm_vreinterpretq_s8_u16): Likewise.
16360 (__arm_vreinterpretq_s8_u32): Likewise.
16361 (__arm_vreinterpretq_s8_u64): Likewise.
16362 (__arm_vreinterpretq_s8_u8): Likewise.
16363 (__arm_vreinterpretq_u16_s16): Likewise.
16364 (__arm_vreinterpretq_u16_s32): Likewise.
16365 (__arm_vreinterpretq_u16_s64): Likewise.
16366 (__arm_vreinterpretq_u16_s8): Likewise.
16367 (__arm_vreinterpretq_u16_u32): Likewise.
16368 (__arm_vreinterpretq_u16_u64): Likewise.
16369 (__arm_vreinterpretq_u16_u8): Likewise.
16370 (__arm_vreinterpretq_u32_s16): Likewise.
16371 (__arm_vreinterpretq_u32_s32): Likewise.
16372 (__arm_vreinterpretq_u32_s64): Likewise.
16373 (__arm_vreinterpretq_u32_s8): Likewise.
16374 (__arm_vreinterpretq_u32_u16): Likewise.
16375 (__arm_vreinterpretq_u32_u64): Likewise.
16376 (__arm_vreinterpretq_u32_u8): Likewise.
16377 (__arm_vreinterpretq_u64_s16): Likewise.
16378 (__arm_vreinterpretq_u64_s32): Likewise.
16379 (__arm_vreinterpretq_u64_s64): Likewise.
16380 (__arm_vreinterpretq_u64_s8): Likewise.
16381 (__arm_vreinterpretq_u64_u16): Likewise.
16382 (__arm_vreinterpretq_u64_u32): Likewise.
16383 (__arm_vreinterpretq_u64_u8): Likewise.
16384 (__arm_vreinterpretq_u8_s16): Likewise.
16385 (__arm_vreinterpretq_u8_s32): Likewise.
16386 (__arm_vreinterpretq_u8_s64): Likewise.
16387 (__arm_vreinterpretq_u8_s8): Likewise.
16388 (__arm_vreinterpretq_u8_u16): Likewise.
16389 (__arm_vreinterpretq_u8_u32): Likewise.
16390 (__arm_vreinterpretq_u8_u64): Likewise.
16391 (__arm_vreinterpretq_s32_f16): Likewise.
16392 (__arm_vreinterpretq_s32_f32): Likewise.
16393 (__arm_vreinterpretq_s16_f16): Likewise.
16394 (__arm_vreinterpretq_s16_f32): Likewise.
16395 (__arm_vreinterpretq_s64_f16): Likewise.
16396 (__arm_vreinterpretq_s64_f32): Likewise.
16397 (__arm_vreinterpretq_s8_f16): Likewise.
16398 (__arm_vreinterpretq_s8_f32): Likewise.
16399 (__arm_vreinterpretq_u16_f16): Likewise.
16400 (__arm_vreinterpretq_u16_f32): Likewise.
16401 (__arm_vreinterpretq_u32_f16): Likewise.
16402 (__arm_vreinterpretq_u32_f32): Likewise.
16403 (__arm_vreinterpretq_u64_f16): Likewise.
16404 (__arm_vreinterpretq_u64_f32): Likewise.
16405 (__arm_vreinterpretq_u8_f16): Likewise.
16406 (__arm_vreinterpretq_u8_f32): Likewise.
16407 (__arm_vreinterpretq_f16_f32): Likewise.
16408 (__arm_vreinterpretq_f16_s16): Likewise.
16409 (__arm_vreinterpretq_f16_s32): Likewise.
16410 (__arm_vreinterpretq_f16_s64): Likewise.
16411 (__arm_vreinterpretq_f16_s8): Likewise.
16412 (__arm_vreinterpretq_f16_u16): Likewise.
16413 (__arm_vreinterpretq_f16_u32): Likewise.
16414 (__arm_vreinterpretq_f16_u64): Likewise.
16415 (__arm_vreinterpretq_f16_u8): Likewise.
16416 (__arm_vreinterpretq_f32_f16): Likewise.
16417 (__arm_vreinterpretq_f32_s16): Likewise.
16418 (__arm_vreinterpretq_f32_s32): Likewise.
16419 (__arm_vreinterpretq_f32_s64): Likewise.
16420 (__arm_vreinterpretq_f32_s8): Likewise.
16421 (__arm_vreinterpretq_f32_u16): Likewise.
16422 (__arm_vreinterpretq_f32_u32): Likewise.
16423 (__arm_vreinterpretq_f32_u64): Likewise.
16424 (__arm_vreinterpretq_f32_u8): Likewise.
16425 (__arm_vreinterpretq_s16): Likewise.
16426 (__arm_vreinterpretq_s32): Likewise.
16427 (__arm_vreinterpretq_s64): Likewise.
16428 (__arm_vreinterpretq_s8): Likewise.
16429 (__arm_vreinterpretq_u16): Likewise.
16430 (__arm_vreinterpretq_u32): Likewise.
16431 (__arm_vreinterpretq_u64): Likewise.
16432 (__arm_vreinterpretq_u8): Likewise.
16433 (__arm_vreinterpretq_f16): Likewise.
16434 (__arm_vreinterpretq_f32): Likewise.
16435 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
16436 * config/arm/unspecs.md: (REINTERPRET): New unspec.
16437
16438 2023-05-03 Murray Steele <murray.steele@arm.com>
16439 Christophe Lyon <christophe.lyon@arm.com>
16440 Christophe Lyon <christophe.lyon@arm.com
16441
16442 * config.gcc: Add arm-mve-builtins-base.o and
16443 arm-mve-builtins-shapes.o to extra_objs.
16444 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
16445 numberspace.
16446 (arm_expand_builtin): Likewise
16447 (arm_check_builtin_call): Likewise
16448 (arm_describe_resolver): Likewise.
16449 * config/arm/arm-builtins.h (enum resolver_ident): Add
16450 arm_mve_resolver.
16451 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
16452 (arm_resolve_overloaded_builtin): Handle MVE builtins.
16453 (arm_register_target_pragmas): Register arm_check_builtin_call.
16454 * config/arm/arm-mve-builtins.cc (class registered_function): New
16455 class.
16456 (struct registered_function_hasher): New struct.
16457 (pred_suffixes): New table.
16458 (mode_suffixes): New table.
16459 (type_suffix_info): New table.
16460 (TYPES_float16): New.
16461 (TYPES_all_float): New.
16462 (TYPES_integer_8): New.
16463 (TYPES_integer_8_16): New.
16464 (TYPES_integer_16_32): New.
16465 (TYPES_integer_32): New.
16466 (TYPES_signed_16_32): New.
16467 (TYPES_signed_32): New.
16468 (TYPES_all_signed): New.
16469 (TYPES_all_unsigned): New.
16470 (TYPES_all_integer): New.
16471 (TYPES_all_integer_with_64): New.
16472 (DEF_VECTOR_TYPE): New.
16473 (DEF_DOUBLE_TYPE): New.
16474 (DEF_MVE_TYPES_ARRAY): New.
16475 (all_integer): New.
16476 (all_integer_with_64): New.
16477 (float16): New.
16478 (all_float): New.
16479 (all_signed): New.
16480 (all_unsigned): New.
16481 (integer_8): New.
16482 (integer_8_16): New.
16483 (integer_16_32): New.
16484 (integer_32): New.
16485 (signed_16_32): New.
16486 (signed_32): New.
16487 (register_vector_type): Use void_type_node for mve.fp-only types when
16488 mve.fp is not enabled.
16489 (register_builtin_tuple_types): Likewise.
16490 (handle_arm_mve_h): New function..
16491 (matches_type_p): Likewise..
16492 (report_out_of_range): Likewise.
16493 (report_not_enum): Likewise.
16494 (report_missing_float): Likewise.
16495 (report_non_ice): Likewise.
16496 (check_requires_float): Likewise.
16497 (function_instance::hash): Likewise
16498 (function_instance::call_properties): Likewise.
16499 (function_instance::reads_global_state_p): Likewise.
16500 (function_instance::modifies_global_state_p): Likewise.
16501 (function_instance::could_trap_p): Likewise.
16502 (function_instance::has_inactive_argument): Likewise.
16503 (registered_function_hasher::hash): Likewise.
16504 (registered_function_hasher::equal): Likewise.
16505 (function_builder::function_builder): Likewise.
16506 (function_builder::~function_builder): Likewise.
16507 (function_builder::append_name): Likewise.
16508 (function_builder::finish_name): Likewise.
16509 (function_builder::get_name): Likewise.
16510 (add_attribute): Likewise.
16511 (function_builder::get_attributes): Likewise.
16512 (function_builder::add_function): Likewise.
16513 (function_builder::add_unique_function): Likewise.
16514 (function_builder::add_overloaded_function): Likewise.
16515 (function_builder::add_overloaded_functions): Likewise.
16516 (function_builder::register_function_group): Likewise.
16517 (function_call_info::function_call_info): Likewise.
16518 (function_resolver::function_resolver): Likewise.
16519 (function_resolver::get_vector_type): Likewise.
16520 (function_resolver::get_scalar_type_name): Likewise.
16521 (function_resolver::get_argument_type): Likewise.
16522 (function_resolver::scalar_argument_p): Likewise.
16523 (function_resolver::report_no_such_form): Likewise.
16524 (function_resolver::lookup_form): Likewise.
16525 (function_resolver::resolve_to): Likewise.
16526 (function_resolver::infer_vector_or_tuple_type): Likewise.
16527 (function_resolver::infer_vector_type): Likewise.
16528 (function_resolver::require_vector_or_scalar_type): Likewise.
16529 (function_resolver::require_vector_type): Likewise.
16530 (function_resolver::require_matching_vector_type): Likewise.
16531 (function_resolver::require_derived_vector_type): Likewise.
16532 (function_resolver::require_derived_scalar_type): Likewise.
16533 (function_resolver::require_integer_immediate): Likewise.
16534 (function_resolver::require_scalar_type): Likewise.
16535 (function_resolver::check_num_arguments): Likewise.
16536 (function_resolver::check_gp_argument): Likewise.
16537 (function_resolver::finish_opt_n_resolution): Likewise.
16538 (function_resolver::resolve_unary): Likewise.
16539 (function_resolver::resolve_unary_n): Likewise.
16540 (function_resolver::resolve_uniform): Likewise.
16541 (function_resolver::resolve_uniform_opt_n): Likewise.
16542 (function_resolver::resolve): Likewise.
16543 (function_checker::function_checker): Likewise.
16544 (function_checker::argument_exists_p): Likewise.
16545 (function_checker::require_immediate): Likewise.
16546 (function_checker::require_immediate_enum): Likewise.
16547 (function_checker::require_immediate_range): Likewise.
16548 (function_checker::check): Likewise.
16549 (gimple_folder::gimple_folder): Likewise.
16550 (gimple_folder::fold): Likewise.
16551 (function_expander::function_expander): Likewise.
16552 (function_expander::direct_optab_handler): Likewise.
16553 (function_expander::get_fallback_value): Likewise.
16554 (function_expander::get_reg_target): Likewise.
16555 (function_expander::add_output_operand): Likewise.
16556 (function_expander::add_input_operand): Likewise.
16557 (function_expander::add_integer_operand): Likewise.
16558 (function_expander::generate_insn): Likewise.
16559 (function_expander::use_exact_insn): Likewise.
16560 (function_expander::use_unpred_insn): Likewise.
16561 (function_expander::use_pred_x_insn): Likewise.
16562 (function_expander::use_cond_insn): Likewise.
16563 (function_expander::map_to_rtx_codes): Likewise.
16564 (function_expander::expand): Likewise.
16565 (resolve_overloaded_builtin): Likewise.
16566 (check_builtin_call): Likewise.
16567 (gimple_fold_builtin): Likewise.
16568 (expand_builtin): Likewise.
16569 (gt_ggc_mx): Likewise.
16570 (gt_pch_nx): Likewise.
16571 (gt_pch_nx): Likewise.
16572 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
16573 (s16): Likewise.
16574 (s32): Likewise.
16575 (s64): Likewise.
16576 (u8): Likewise.
16577 (u16): Likewise.
16578 (u32): Likewise.
16579 (u64): Likewise.
16580 (f16): Likewise.
16581 (f32): Likewise.
16582 (n): New mode.
16583 (offset): New mode.
16584 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
16585 (CP_READ_FPCR): Likewise.
16586 (CP_RAISE_FP_EXCEPTIONS): Likewise.
16587 (CP_READ_MEMORY): Likewise.
16588 (CP_WRITE_MEMORY): Likewise.
16589 (enum units_index): New enum.
16590 (enum predication_index): New.
16591 (enum type_class_index): New.
16592 (enum mode_suffix_index): New enum.
16593 (enum type_suffix_index): New.
16594 (struct mode_suffix_info): New struct.
16595 (struct type_suffix_info): New.
16596 (struct function_group_info): Likewise.
16597 (class function_instance): Likewise.
16598 (class registered_function): Likewise.
16599 (class function_builder): Likewise.
16600 (class function_call_info): Likewise.
16601 (class function_resolver): Likewise.
16602 (class function_checker): Likewise.
16603 (class gimple_folder): Likewise.
16604 (class function_expander): Likewise.
16605 (get_mve_pred16_t): Likewise.
16606 (find_mode_suffix): New function.
16607 (class function_base): Likewise.
16608 (class function_shape): Likewise.
16609 (function_instance::operator==): New function.
16610 (function_instance::operator!=): Likewise.
16611 (function_instance::vectors_per_tuple): Likewise.
16612 (function_instance::mode_suffix): Likewise.
16613 (function_instance::type_suffix): Likewise.
16614 (function_instance::scalar_type): Likewise.
16615 (function_instance::vector_type): Likewise.
16616 (function_instance::tuple_type): Likewise.
16617 (function_instance::vector_mode): Likewise.
16618 (function_call_info::function_returns_void_p): Likewise.
16619 (function_base::call_properties): Likewise.
16620 * config/arm/arm-protos.h (enum arm_builtin_class): Add
16621 ARM_BUILTIN_MVE.
16622 (handle_arm_mve_h): New.
16623 (resolve_overloaded_builtin): New.
16624 (check_builtin_call): New.
16625 (gimple_fold_builtin): New.
16626 (expand_builtin): New.
16627 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
16628 arm_gimple_fold_builtin.
16629 (arm_gimple_fold_builtin): New function.
16630 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
16631 * config/arm/predicates.md (arm_any_register_operand): New predicate.
16632 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
16633 (arm-mve-builtins-shapes.o): New target.
16634 (arm-mve-builtins-base.o): New target.
16635 * config/arm/arm-mve-builtins-base.cc: New file.
16636 * config/arm/arm-mve-builtins-base.def: New file.
16637 * config/arm/arm-mve-builtins-base.h: New file.
16638 * config/arm/arm-mve-builtins-functions.h: New file.
16639 * config/arm/arm-mve-builtins-shapes.cc: New file.
16640 * config/arm/arm-mve-builtins-shapes.h: New file.
16641
16642 2023-05-03 Murray Steele <murray.steele@arm.com>
16643 Christophe Lyon <christophe.lyon@arm.com>
16644 Christophe Lyon <christophe.lyon@arm.com>
16645
16646 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
16647 New function.
16648 (arm_init_builtin): Use arm_general_add_builtin_function instead
16649 of arm_add_builtin_function.
16650 (arm_init_acle_builtins): Likewise.
16651 (arm_init_mve_builtins): Likewise.
16652 (arm_init_crypto_builtins): Likewise.
16653 (arm_init_builtins): Likewise.
16654 (arm_general_builtin_decl): New function.
16655 (arm_builtin_decl): Defer to numberspace-specialized functions.
16656 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
16657 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
16658 (arm_general_expand_builtin_1): ... specialize for general builtins.
16659 (arm_expand_acle_builtin): Use arm_general_expand_builtin
16660 instead of arm_expand_builtin.
16661 (arm_expand_mve_builtin): Likewise.
16662 (arm_expand_neon_builtin): Likewise.
16663 (arm_expand_vfp_builtin): Likewise.
16664 (arm_general_expand_builtin): New function.
16665 (arm_expand_builtin): Specialize for general builtins.
16666 (arm_general_check_builtin_call): New function.
16667 (arm_check_builtin_call): Specialize for general builtins.
16668 (arm_describe_resolver): Validate numberspace.
16669 (arm_cde_end_args): Likewise.
16670 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
16671 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
16672
16673 2023-05-03 Martin Liska <mliska@suse.cz>
16674
16675 PR target/109713
16676 * config/riscv/sync.md: Add gcc_unreachable to a switch.
16677
16678 2023-05-03 Richard Biener <rguenther@suse.de>
16679
16680 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
16681 (patch_loop_exit): Likewise.
16682 (connect_loops): Likewise.
16683 (split_loop): Likewise.
16684 (control_dep_semi_invariant_p): Likewise.
16685 (do_split_loop_on_cond): Likewise.
16686 (split_loop_on_cond): Likewise.
16687 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
16688 Likewise.
16689 (simplify_loop_version): Likewise.
16690 (evaluate_bbs): Likewise.
16691 (find_loop_guard): Likewise.
16692 (clean_up_after_unswitching): Likewise.
16693 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
16694 Likewise.
16695 (optimize_spaceship): Take a gcond * argument, avoid
16696 last_stmt.
16697 (math_opts_dom_walker::after_dom_children): Adjust call to
16698 optimize_spaceship.
16699 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
16700 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
16701 Likewise.
16702
16703 2023-05-03 Andreas Schwab <schwab@suse.de>
16704
16705 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
16706
16707 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16708
16709 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
16710 New function.
16711 (class vlseg): New class.
16712 (class vsseg): Ditto.
16713 (class vlsseg): Ditto.
16714 (class vssseg): Ditto.
16715 (class seg_indexed_load): Ditto.
16716 (class seg_indexed_store): Ditto.
16717 (class vlsegff): Ditto.
16718 (BASE): Ditto.
16719 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16720 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
16721 Ditto.
16722 (vsseg): Ditto.
16723 (vlsseg): Ditto.
16724 (vssseg): Ditto.
16725 (vluxseg): Ditto.
16726 (vloxseg): Ditto.
16727 (vsuxseg): Ditto.
16728 (vsoxseg): Ditto.
16729 (vlsegff): Ditto.
16730 * config/riscv/riscv-vector-builtins-shapes.cc (struct
16731 seg_loadstore_def): Ditto.
16732 (struct seg_indexed_loadstore_def): Ditto.
16733 (struct seg_fault_load_def): Ditto.
16734 (SHAPE): Ditto.
16735 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16736 * config/riscv/riscv-vector-builtins.cc
16737 (function_builder::append_nf): New function.
16738 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
16739 Change ptr from double into float.
16740 (vfloat32m1x3_t): Ditto.
16741 (vfloat32m1x4_t): Ditto.
16742 (vfloat32m1x5_t): Ditto.
16743 (vfloat32m1x6_t): Ditto.
16744 (vfloat32m1x7_t): Ditto.
16745 (vfloat32m1x8_t): Ditto.
16746 (vfloat32m2x2_t): Ditto.
16747 (vfloat32m2x3_t): Ditto.
16748 (vfloat32m2x4_t): Ditto.
16749 (vfloat32m4x2_t): Ditto.
16750 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
16751 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
16752 segment ff load.
16753 * config/riscv/riscv.md: Add segment instructions.
16754 * config/riscv/vector-iterators.md: Support segment intrinsics.
16755 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
16756 pattern.
16757 (@pred_unit_strided_store<mode>): Ditto.
16758 (@pred_strided_load<mode>): Ditto.
16759 (@pred_strided_store<mode>): Ditto.
16760 (@pred_fault_load<mode>): Ditto.
16761 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
16762 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
16763 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
16764 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
16765 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
16766 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
16767 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
16768 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
16769 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
16770 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
16771 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
16772 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
16773 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
16774 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
16775
16776 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16777
16778 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
16779 tuple type support.
16780 (inttype): Ditto.
16781 (floattype): Ditto.
16782 (main): Ditto.
16783 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
16784 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
16785 tuple type vset.
16786 (vget): Add tuple type vget.
16787 * config/riscv/riscv-vector-builtins-types.def
16788 (DEF_RVV_TUPLE_OPS): New macro.
16789 (vint8mf8x2_t): Ditto.
16790 (vuint8mf8x2_t): Ditto.
16791 (vint8mf8x3_t): Ditto.
16792 (vuint8mf8x3_t): Ditto.
16793 (vint8mf8x4_t): Ditto.
16794 (vuint8mf8x4_t): Ditto.
16795 (vint8mf8x5_t): Ditto.
16796 (vuint8mf8x5_t): Ditto.
16797 (vint8mf8x6_t): Ditto.
16798 (vuint8mf8x6_t): Ditto.
16799 (vint8mf8x7_t): Ditto.
16800 (vuint8mf8x7_t): Ditto.
16801 (vint8mf8x8_t): Ditto.
16802 (vuint8mf8x8_t): Ditto.
16803 (vint8mf4x2_t): Ditto.
16804 (vuint8mf4x2_t): Ditto.
16805 (vint8mf4x3_t): Ditto.
16806 (vuint8mf4x3_t): Ditto.
16807 (vint8mf4x4_t): Ditto.
16808 (vuint8mf4x4_t): Ditto.
16809 (vint8mf4x5_t): Ditto.
16810 (vuint8mf4x5_t): Ditto.
16811 (vint8mf4x6_t): Ditto.
16812 (vuint8mf4x6_t): Ditto.
16813 (vint8mf4x7_t): Ditto.
16814 (vuint8mf4x7_t): Ditto.
16815 (vint8mf4x8_t): Ditto.
16816 (vuint8mf4x8_t): Ditto.
16817 (vint8mf2x2_t): Ditto.
16818 (vuint8mf2x2_t): Ditto.
16819 (vint8mf2x3_t): Ditto.
16820 (vuint8mf2x3_t): Ditto.
16821 (vint8mf2x4_t): Ditto.
16822 (vuint8mf2x4_t): Ditto.
16823 (vint8mf2x5_t): Ditto.
16824 (vuint8mf2x5_t): Ditto.
16825 (vint8mf2x6_t): Ditto.
16826 (vuint8mf2x6_t): Ditto.
16827 (vint8mf2x7_t): Ditto.
16828 (vuint8mf2x7_t): Ditto.
16829 (vint8mf2x8_t): Ditto.
16830 (vuint8mf2x8_t): Ditto.
16831 (vint8m1x2_t): Ditto.
16832 (vuint8m1x2_t): Ditto.
16833 (vint8m1x3_t): Ditto.
16834 (vuint8m1x3_t): Ditto.
16835 (vint8m1x4_t): Ditto.
16836 (vuint8m1x4_t): Ditto.
16837 (vint8m1x5_t): Ditto.
16838 (vuint8m1x5_t): Ditto.
16839 (vint8m1x6_t): Ditto.
16840 (vuint8m1x6_t): Ditto.
16841 (vint8m1x7_t): Ditto.
16842 (vuint8m1x7_t): Ditto.
16843 (vint8m1x8_t): Ditto.
16844 (vuint8m1x8_t): Ditto.
16845 (vint8m2x2_t): Ditto.
16846 (vuint8m2x2_t): Ditto.
16847 (vint8m2x3_t): Ditto.
16848 (vuint8m2x3_t): Ditto.
16849 (vint8m2x4_t): Ditto.
16850 (vuint8m2x4_t): Ditto.
16851 (vint8m4x2_t): Ditto.
16852 (vuint8m4x2_t): Ditto.
16853 (vint16mf4x2_t): Ditto.
16854 (vuint16mf4x2_t): Ditto.
16855 (vint16mf4x3_t): Ditto.
16856 (vuint16mf4x3_t): Ditto.
16857 (vint16mf4x4_t): Ditto.
16858 (vuint16mf4x4_t): Ditto.
16859 (vint16mf4x5_t): Ditto.
16860 (vuint16mf4x5_t): Ditto.
16861 (vint16mf4x6_t): Ditto.
16862 (vuint16mf4x6_t): Ditto.
16863 (vint16mf4x7_t): Ditto.
16864 (vuint16mf4x7_t): Ditto.
16865 (vint16mf4x8_t): Ditto.
16866 (vuint16mf4x8_t): Ditto.
16867 (vint16mf2x2_t): Ditto.
16868 (vuint16mf2x2_t): Ditto.
16869 (vint16mf2x3_t): Ditto.
16870 (vuint16mf2x3_t): Ditto.
16871 (vint16mf2x4_t): Ditto.
16872 (vuint16mf2x4_t): Ditto.
16873 (vint16mf2x5_t): Ditto.
16874 (vuint16mf2x5_t): Ditto.
16875 (vint16mf2x6_t): Ditto.
16876 (vuint16mf2x6_t): Ditto.
16877 (vint16mf2x7_t): Ditto.
16878 (vuint16mf2x7_t): Ditto.
16879 (vint16mf2x8_t): Ditto.
16880 (vuint16mf2x8_t): Ditto.
16881 (vint16m1x2_t): Ditto.
16882 (vuint16m1x2_t): Ditto.
16883 (vint16m1x3_t): Ditto.
16884 (vuint16m1x3_t): Ditto.
16885 (vint16m1x4_t): Ditto.
16886 (vuint16m1x4_t): Ditto.
16887 (vint16m1x5_t): Ditto.
16888 (vuint16m1x5_t): Ditto.
16889 (vint16m1x6_t): Ditto.
16890 (vuint16m1x6_t): Ditto.
16891 (vint16m1x7_t): Ditto.
16892 (vuint16m1x7_t): Ditto.
16893 (vint16m1x8_t): Ditto.
16894 (vuint16m1x8_t): Ditto.
16895 (vint16m2x2_t): Ditto.
16896 (vuint16m2x2_t): Ditto.
16897 (vint16m2x3_t): Ditto.
16898 (vuint16m2x3_t): Ditto.
16899 (vint16m2x4_t): Ditto.
16900 (vuint16m2x4_t): Ditto.
16901 (vint16m4x2_t): Ditto.
16902 (vuint16m4x2_t): Ditto.
16903 (vint32mf2x2_t): Ditto.
16904 (vuint32mf2x2_t): Ditto.
16905 (vint32mf2x3_t): Ditto.
16906 (vuint32mf2x3_t): Ditto.
16907 (vint32mf2x4_t): Ditto.
16908 (vuint32mf2x4_t): Ditto.
16909 (vint32mf2x5_t): Ditto.
16910 (vuint32mf2x5_t): Ditto.
16911 (vint32mf2x6_t): Ditto.
16912 (vuint32mf2x6_t): Ditto.
16913 (vint32mf2x7_t): Ditto.
16914 (vuint32mf2x7_t): Ditto.
16915 (vint32mf2x8_t): Ditto.
16916 (vuint32mf2x8_t): Ditto.
16917 (vint32m1x2_t): Ditto.
16918 (vuint32m1x2_t): Ditto.
16919 (vint32m1x3_t): Ditto.
16920 (vuint32m1x3_t): Ditto.
16921 (vint32m1x4_t): Ditto.
16922 (vuint32m1x4_t): Ditto.
16923 (vint32m1x5_t): Ditto.
16924 (vuint32m1x5_t): Ditto.
16925 (vint32m1x6_t): Ditto.
16926 (vuint32m1x6_t): Ditto.
16927 (vint32m1x7_t): Ditto.
16928 (vuint32m1x7_t): Ditto.
16929 (vint32m1x8_t): Ditto.
16930 (vuint32m1x8_t): Ditto.
16931 (vint32m2x2_t): Ditto.
16932 (vuint32m2x2_t): Ditto.
16933 (vint32m2x3_t): Ditto.
16934 (vuint32m2x3_t): Ditto.
16935 (vint32m2x4_t): Ditto.
16936 (vuint32m2x4_t): Ditto.
16937 (vint32m4x2_t): Ditto.
16938 (vuint32m4x2_t): Ditto.
16939 (vint64m1x2_t): Ditto.
16940 (vuint64m1x2_t): Ditto.
16941 (vint64m1x3_t): Ditto.
16942 (vuint64m1x3_t): Ditto.
16943 (vint64m1x4_t): Ditto.
16944 (vuint64m1x4_t): Ditto.
16945 (vint64m1x5_t): Ditto.
16946 (vuint64m1x5_t): Ditto.
16947 (vint64m1x6_t): Ditto.
16948 (vuint64m1x6_t): Ditto.
16949 (vint64m1x7_t): Ditto.
16950 (vuint64m1x7_t): Ditto.
16951 (vint64m1x8_t): Ditto.
16952 (vuint64m1x8_t): Ditto.
16953 (vint64m2x2_t): Ditto.
16954 (vuint64m2x2_t): Ditto.
16955 (vint64m2x3_t): Ditto.
16956 (vuint64m2x3_t): Ditto.
16957 (vint64m2x4_t): Ditto.
16958 (vuint64m2x4_t): Ditto.
16959 (vint64m4x2_t): Ditto.
16960 (vuint64m4x2_t): Ditto.
16961 (vfloat32mf2x2_t): Ditto.
16962 (vfloat32mf2x3_t): Ditto.
16963 (vfloat32mf2x4_t): Ditto.
16964 (vfloat32mf2x5_t): Ditto.
16965 (vfloat32mf2x6_t): Ditto.
16966 (vfloat32mf2x7_t): Ditto.
16967 (vfloat32mf2x8_t): Ditto.
16968 (vfloat32m1x2_t): Ditto.
16969 (vfloat32m1x3_t): Ditto.
16970 (vfloat32m1x4_t): Ditto.
16971 (vfloat32m1x5_t): Ditto.
16972 (vfloat32m1x6_t): Ditto.
16973 (vfloat32m1x7_t): Ditto.
16974 (vfloat32m1x8_t): Ditto.
16975 (vfloat32m2x2_t): Ditto.
16976 (vfloat32m2x3_t): Ditto.
16977 (vfloat32m2x4_t): Ditto.
16978 (vfloat32m4x2_t): Ditto.
16979 (vfloat64m1x2_t): Ditto.
16980 (vfloat64m1x3_t): Ditto.
16981 (vfloat64m1x4_t): Ditto.
16982 (vfloat64m1x5_t): Ditto.
16983 (vfloat64m1x6_t): Ditto.
16984 (vfloat64m1x7_t): Ditto.
16985 (vfloat64m1x8_t): Ditto.
16986 (vfloat64m2x2_t): Ditto.
16987 (vfloat64m2x3_t): Ditto.
16988 (vfloat64m2x4_t): Ditto.
16989 (vfloat64m4x2_t): Ditto.
16990 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
16991 Ditto.
16992 (DEF_RVV_TYPE_INDEX): Ditto.
16993 (rvv_arg_type_info::get_tuple_subpart_type): New function.
16994 (DEF_RVV_TUPLE_TYPE): New macro.
16995 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
16996 Adapt for tuple vget/vset support.
16997 (vint8mf4_t): Ditto.
16998 (vuint8mf4_t): Ditto.
16999 (vint8mf2_t): Ditto.
17000 (vuint8mf2_t): Ditto.
17001 (vint8m1_t): Ditto.
17002 (vuint8m1_t): Ditto.
17003 (vint8m2_t): Ditto.
17004 (vuint8m2_t): Ditto.
17005 (vint8m4_t): Ditto.
17006 (vuint8m4_t): Ditto.
17007 (vint8m8_t): Ditto.
17008 (vuint8m8_t): Ditto.
17009 (vint16mf4_t): Ditto.
17010 (vuint16mf4_t): Ditto.
17011 (vint16mf2_t): Ditto.
17012 (vuint16mf2_t): Ditto.
17013 (vint16m1_t): Ditto.
17014 (vuint16m1_t): Ditto.
17015 (vint16m2_t): Ditto.
17016 (vuint16m2_t): Ditto.
17017 (vint16m4_t): Ditto.
17018 (vuint16m4_t): Ditto.
17019 (vint16m8_t): Ditto.
17020 (vuint16m8_t): Ditto.
17021 (vint32mf2_t): Ditto.
17022 (vuint32mf2_t): Ditto.
17023 (vint32m1_t): Ditto.
17024 (vuint32m1_t): Ditto.
17025 (vint32m2_t): Ditto.
17026 (vuint32m2_t): Ditto.
17027 (vint32m4_t): Ditto.
17028 (vuint32m4_t): Ditto.
17029 (vint32m8_t): Ditto.
17030 (vuint32m8_t): Ditto.
17031 (vint64m1_t): Ditto.
17032 (vuint64m1_t): Ditto.
17033 (vint64m2_t): Ditto.
17034 (vuint64m2_t): Ditto.
17035 (vint64m4_t): Ditto.
17036 (vuint64m4_t): Ditto.
17037 (vint64m8_t): Ditto.
17038 (vuint64m8_t): Ditto.
17039 (vfloat32mf2_t): Ditto.
17040 (vfloat32m1_t): Ditto.
17041 (vfloat32m2_t): Ditto.
17042 (vfloat32m4_t): Ditto.
17043 (vfloat32m8_t): Ditto.
17044 (vfloat64m1_t): Ditto.
17045 (vfloat64m2_t): Ditto.
17046 (vfloat64m4_t): Ditto.
17047 (vfloat64m8_t): Ditto.
17048 (tuple_subpart): Add tuple subpart base type.
17049 * config/riscv/riscv-vector-builtins.h (struct
17050 rvv_arg_type_info): Ditto.
17051 (tuple_type_field): New function.
17052
17053 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17054
17055 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
17056 (RVV_TUPLE_PARTIAL_MODES): Ditto.
17057 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
17058 function.
17059 (get_nf): Ditto.
17060 (get_subpart_mode): Ditto.
17061 (get_tuple_mode): Ditto.
17062 (expand_tuple_move): Ditto.
17063 * config/riscv/riscv-v.cc (ENTRY): New macro.
17064 (TUPLE_ENTRY): Ditto.
17065 (get_nf): New function.
17066 (get_subpart_mode): Ditto.
17067 (get_tuple_mode): Ditto.
17068 (expand_tuple_move): Ditto.
17069 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
17070 New macro.
17071 (register_tuple_type): New function
17072 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
17073 New macro.
17074 (vint8mf8x2_t): New macro.
17075 (vuint8mf8x2_t): Ditto.
17076 (vint8mf8x3_t): Ditto.
17077 (vuint8mf8x3_t): Ditto.
17078 (vint8mf8x4_t): Ditto.
17079 (vuint8mf8x4_t): Ditto.
17080 (vint8mf8x5_t): Ditto.
17081 (vuint8mf8x5_t): Ditto.
17082 (vint8mf8x6_t): Ditto.
17083 (vuint8mf8x6_t): Ditto.
17084 (vint8mf8x7_t): Ditto.
17085 (vuint8mf8x7_t): Ditto.
17086 (vint8mf8x8_t): Ditto.
17087 (vuint8mf8x8_t): Ditto.
17088 (vint8mf4x2_t): Ditto.
17089 (vuint8mf4x2_t): Ditto.
17090 (vint8mf4x3_t): Ditto.
17091 (vuint8mf4x3_t): Ditto.
17092 (vint8mf4x4_t): Ditto.
17093 (vuint8mf4x4_t): Ditto.
17094 (vint8mf4x5_t): Ditto.
17095 (vuint8mf4x5_t): Ditto.
17096 (vint8mf4x6_t): Ditto.
17097 (vuint8mf4x6_t): Ditto.
17098 (vint8mf4x7_t): Ditto.
17099 (vuint8mf4x7_t): Ditto.
17100 (vint8mf4x8_t): Ditto.
17101 (vuint8mf4x8_t): Ditto.
17102 (vint8mf2x2_t): Ditto.
17103 (vuint8mf2x2_t): Ditto.
17104 (vint8mf2x3_t): Ditto.
17105 (vuint8mf2x3_t): Ditto.
17106 (vint8mf2x4_t): Ditto.
17107 (vuint8mf2x4_t): Ditto.
17108 (vint8mf2x5_t): Ditto.
17109 (vuint8mf2x5_t): Ditto.
17110 (vint8mf2x6_t): Ditto.
17111 (vuint8mf2x6_t): Ditto.
17112 (vint8mf2x7_t): Ditto.
17113 (vuint8mf2x7_t): Ditto.
17114 (vint8mf2x8_t): Ditto.
17115 (vuint8mf2x8_t): Ditto.
17116 (vint8m1x2_t): Ditto.
17117 (vuint8m1x2_t): Ditto.
17118 (vint8m1x3_t): Ditto.
17119 (vuint8m1x3_t): Ditto.
17120 (vint8m1x4_t): Ditto.
17121 (vuint8m1x4_t): Ditto.
17122 (vint8m1x5_t): Ditto.
17123 (vuint8m1x5_t): Ditto.
17124 (vint8m1x6_t): Ditto.
17125 (vuint8m1x6_t): Ditto.
17126 (vint8m1x7_t): Ditto.
17127 (vuint8m1x7_t): Ditto.
17128 (vint8m1x8_t): Ditto.
17129 (vuint8m1x8_t): Ditto.
17130 (vint8m2x2_t): Ditto.
17131 (vuint8m2x2_t): Ditto.
17132 (vint8m2x3_t): Ditto.
17133 (vuint8m2x3_t): Ditto.
17134 (vint8m2x4_t): Ditto.
17135 (vuint8m2x4_t): Ditto.
17136 (vint8m4x2_t): Ditto.
17137 (vuint8m4x2_t): Ditto.
17138 (vint16mf4x2_t): Ditto.
17139 (vuint16mf4x2_t): Ditto.
17140 (vint16mf4x3_t): Ditto.
17141 (vuint16mf4x3_t): Ditto.
17142 (vint16mf4x4_t): Ditto.
17143 (vuint16mf4x4_t): Ditto.
17144 (vint16mf4x5_t): Ditto.
17145 (vuint16mf4x5_t): Ditto.
17146 (vint16mf4x6_t): Ditto.
17147 (vuint16mf4x6_t): Ditto.
17148 (vint16mf4x7_t): Ditto.
17149 (vuint16mf4x7_t): Ditto.
17150 (vint16mf4x8_t): Ditto.
17151 (vuint16mf4x8_t): Ditto.
17152 (vint16mf2x2_t): Ditto.
17153 (vuint16mf2x2_t): Ditto.
17154 (vint16mf2x3_t): Ditto.
17155 (vuint16mf2x3_t): Ditto.
17156 (vint16mf2x4_t): Ditto.
17157 (vuint16mf2x4_t): Ditto.
17158 (vint16mf2x5_t): Ditto.
17159 (vuint16mf2x5_t): Ditto.
17160 (vint16mf2x6_t): Ditto.
17161 (vuint16mf2x6_t): Ditto.
17162 (vint16mf2x7_t): Ditto.
17163 (vuint16mf2x7_t): Ditto.
17164 (vint16mf2x8_t): Ditto.
17165 (vuint16mf2x8_t): Ditto.
17166 (vint16m1x2_t): Ditto.
17167 (vuint16m1x2_t): Ditto.
17168 (vint16m1x3_t): Ditto.
17169 (vuint16m1x3_t): Ditto.
17170 (vint16m1x4_t): Ditto.
17171 (vuint16m1x4_t): Ditto.
17172 (vint16m1x5_t): Ditto.
17173 (vuint16m1x5_t): Ditto.
17174 (vint16m1x6_t): Ditto.
17175 (vuint16m1x6_t): Ditto.
17176 (vint16m1x7_t): Ditto.
17177 (vuint16m1x7_t): Ditto.
17178 (vint16m1x8_t): Ditto.
17179 (vuint16m1x8_t): Ditto.
17180 (vint16m2x2_t): Ditto.
17181 (vuint16m2x2_t): Ditto.
17182 (vint16m2x3_t): Ditto.
17183 (vuint16m2x3_t): Ditto.
17184 (vint16m2x4_t): Ditto.
17185 (vuint16m2x4_t): Ditto.
17186 (vint16m4x2_t): Ditto.
17187 (vuint16m4x2_t): Ditto.
17188 (vint32mf2x2_t): Ditto.
17189 (vuint32mf2x2_t): Ditto.
17190 (vint32mf2x3_t): Ditto.
17191 (vuint32mf2x3_t): Ditto.
17192 (vint32mf2x4_t): Ditto.
17193 (vuint32mf2x4_t): Ditto.
17194 (vint32mf2x5_t): Ditto.
17195 (vuint32mf2x5_t): Ditto.
17196 (vint32mf2x6_t): Ditto.
17197 (vuint32mf2x6_t): Ditto.
17198 (vint32mf2x7_t): Ditto.
17199 (vuint32mf2x7_t): Ditto.
17200 (vint32mf2x8_t): Ditto.
17201 (vuint32mf2x8_t): Ditto.
17202 (vint32m1x2_t): Ditto.
17203 (vuint32m1x2_t): Ditto.
17204 (vint32m1x3_t): Ditto.
17205 (vuint32m1x3_t): Ditto.
17206 (vint32m1x4_t): Ditto.
17207 (vuint32m1x4_t): Ditto.
17208 (vint32m1x5_t): Ditto.
17209 (vuint32m1x5_t): Ditto.
17210 (vint32m1x6_t): Ditto.
17211 (vuint32m1x6_t): Ditto.
17212 (vint32m1x7_t): Ditto.
17213 (vuint32m1x7_t): Ditto.
17214 (vint32m1x8_t): Ditto.
17215 (vuint32m1x8_t): Ditto.
17216 (vint32m2x2_t): Ditto.
17217 (vuint32m2x2_t): Ditto.
17218 (vint32m2x3_t): Ditto.
17219 (vuint32m2x3_t): Ditto.
17220 (vint32m2x4_t): Ditto.
17221 (vuint32m2x4_t): Ditto.
17222 (vint32m4x2_t): Ditto.
17223 (vuint32m4x2_t): Ditto.
17224 (vint64m1x2_t): Ditto.
17225 (vuint64m1x2_t): Ditto.
17226 (vint64m1x3_t): Ditto.
17227 (vuint64m1x3_t): Ditto.
17228 (vint64m1x4_t): Ditto.
17229 (vuint64m1x4_t): Ditto.
17230 (vint64m1x5_t): Ditto.
17231 (vuint64m1x5_t): Ditto.
17232 (vint64m1x6_t): Ditto.
17233 (vuint64m1x6_t): Ditto.
17234 (vint64m1x7_t): Ditto.
17235 (vuint64m1x7_t): Ditto.
17236 (vint64m1x8_t): Ditto.
17237 (vuint64m1x8_t): Ditto.
17238 (vint64m2x2_t): Ditto.
17239 (vuint64m2x2_t): Ditto.
17240 (vint64m2x3_t): Ditto.
17241 (vuint64m2x3_t): Ditto.
17242 (vint64m2x4_t): Ditto.
17243 (vuint64m2x4_t): Ditto.
17244 (vint64m4x2_t): Ditto.
17245 (vuint64m4x2_t): Ditto.
17246 (vfloat32mf2x2_t): Ditto.
17247 (vfloat32mf2x3_t): Ditto.
17248 (vfloat32mf2x4_t): Ditto.
17249 (vfloat32mf2x5_t): Ditto.
17250 (vfloat32mf2x6_t): Ditto.
17251 (vfloat32mf2x7_t): Ditto.
17252 (vfloat32mf2x8_t): Ditto.
17253 (vfloat32m1x2_t): Ditto.
17254 (vfloat32m1x3_t): Ditto.
17255 (vfloat32m1x4_t): Ditto.
17256 (vfloat32m1x5_t): Ditto.
17257 (vfloat32m1x6_t): Ditto.
17258 (vfloat32m1x7_t): Ditto.
17259 (vfloat32m1x8_t): Ditto.
17260 (vfloat32m2x2_t): Ditto.
17261 (vfloat32m2x3_t): Ditto.
17262 (vfloat32m2x4_t): Ditto.
17263 (vfloat32m4x2_t): Ditto.
17264 (vfloat64m1x2_t): Ditto.
17265 (vfloat64m1x3_t): Ditto.
17266 (vfloat64m1x4_t): Ditto.
17267 (vfloat64m1x5_t): Ditto.
17268 (vfloat64m1x6_t): Ditto.
17269 (vfloat64m1x7_t): Ditto.
17270 (vfloat64m1x8_t): Ditto.
17271 (vfloat64m2x2_t): Ditto.
17272 (vfloat64m2x3_t): Ditto.
17273 (vfloat64m2x4_t): Ditto.
17274 (vfloat64m4x2_t): Ditto.
17275 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
17276 Ditto.
17277 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
17278 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
17279 function.
17280 (TUPLE_ENTRY): Ditto.
17281 (riscv_v_ext_mode_p): New function.
17282 (riscv_v_adjust_nunits): Add tuple mode adjustment.
17283 (riscv_classify_address): Ditto.
17284 (riscv_binary_cost): Ditto.
17285 (riscv_rtx_costs): Ditto.
17286 (riscv_secondary_memory_needed): Ditto.
17287 (riscv_hard_regno_nregs): Ditto.
17288 (riscv_hard_regno_mode_ok): Ditto.
17289 (riscv_vector_mode_supported_p): Ditto.
17290 (riscv_regmode_natural_size): Ditto.
17291 (riscv_array_mode): New function.
17292 (TARGET_ARRAY_MODE): New target hook.
17293 * config/riscv/riscv.md: Add tuple modes.
17294 * config/riscv/vector-iterators.md: Ditto.
17295 * config/riscv/vector.md (mov<mode>): Add tuple modes data
17296 movement.
17297 (*mov<VT:mode>_<P:mode>): Ditto.
17298
17299 2023-05-03 Richard Biener <rguenther@suse.de>
17300
17301 * cse.cc (cse_insn): Track an equivalence to the destination
17302 separately and delay using src_related for it.
17303
17304 2023-05-03 Richard Biener <rguenther@suse.de>
17305
17306 * cse.cc (HASH): Turn into inline function and mix
17307 in another HASH_SHIFT bits.
17308 (SAFE_HASH): Likewise.
17309
17310 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17311
17312 PR target/99195
17313 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
17314 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
17315
17316 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17317
17318 PR target/99195
17319 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
17320 (add<mode>3<vczle><vczbe>): ... This.
17321 (sub<mode>3): Rename to...
17322 (sub<mode>3<vczle><vczbe>): ... This.
17323 (mul<mode>3): Rename to...
17324 (mul<mode>3<vczle><vczbe>): ... This.
17325 (*div<mode>3): Rename to...
17326 (*div<mode>3<vczle><vczbe>): ... This.
17327 (neg<mode>2): Rename to...
17328 (neg<mode>2<vczle><vczbe>): ... This.
17329 (abs<mode>2): Rename to...
17330 (abs<mode>2<vczle><vczbe>): ... This.
17331 (<frint_pattern><mode>2): Rename to...
17332 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
17333 (<fmaxmin><mode>3): Rename to...
17334 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
17335 (*sqrt<mode>2): Rename to...
17336 (*sqrt<mode>2<vczle><vczbe>): ... This.
17337
17338 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
17339
17340 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
17341
17342 2023-05-03 Martin Liska <mliska@suse.cz>
17343
17344 PR tree-optimization/109693
17345 * value-range-storage.cc (vrange_allocator::vrange_allocator):
17346 Remove unused field.
17347 * value-range-storage.h: Likewise.
17348
17349 2023-05-02 Andrew Pinski <apinski@marvell.com>
17350
17351 * tree-ssa-phiopt.cc (move_stmt): New function.
17352 (match_simplify_replacement): Use move_stmt instead
17353 of the inlined version.
17354
17355 2023-05-02 Andrew Pinski <apinski@marvell.com>
17356
17357 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
17358 pattern.
17359
17360 2023-05-02 Andrew Pinski <apinski@marvell.com>
17361
17362 PR tree-optimization/109702
17363 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
17364 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
17365
17366 2023-05-02 Andrew Pinski <apinski@marvell.com>
17367
17368 PR target/109657
17369 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
17370 insn_and_split pattern.
17371
17372 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17373
17374 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
17375 load mapping.
17376
17377 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17378
17379 * config/riscv/sync.md (mem_thread_fence_1): Change fence
17380 depending on the given memory model.
17381
17382 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17383
17384 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
17385 riscv_union_memmodels function to sync.md.
17386 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
17387 get the union of two memmodels in sync.md.
17388 (riscv_print_operand): Add %I and %J flags that output the
17389 optimal LR/SC flag bits for a given memory model.
17390 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
17391 bits on SC op and replace with optimized %I, %J flags.
17392
17393 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17394
17395 * config/riscv/riscv.cc
17396 (riscv_memmodel_needs_amo_release): Change function name.
17397 (riscv_print_operand): Remove unneeded %F case.
17398 * config/riscv/sync.md: Remove unneeded fences.
17399
17400 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17401
17402 PR target/89835
17403 * config/riscv/sync.md (atomic_store<mode>): Use simple store
17404 instruction in combination with fence(s).
17405
17406 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17407
17408 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
17409 of %A to include release bits.
17410
17411 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17412
17413 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
17414 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
17415 pair.
17416
17417 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17418
17419 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
17420 sequentially consistent LR.aqrl/SC.rl pairs.
17421
17422 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17423
17424 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
17425 sanitize memmodel input with memmodel_base.
17426
17427 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
17428 Pan Li <pan2.li@intel.com>
17429
17430 PR target/109617
17431 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
17432
17433 2023-05-02 Romain Naour <romain.naour@gmail.com>
17434
17435 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
17436 the namespace.
17437
17438 2023-05-02 Martin Liska <mliska@suse.cz>
17439
17440 * doc/invoke.texi: Update documentation based on param.opt file.
17441
17442 2023-05-02 Richard Biener <rguenther@suse.de>
17443
17444 PR tree-optimization/109672
17445 * tree-vect-stmts.cc (vectorizable_operation): For plus,
17446 minus and negate always check the vector mode is word mode.
17447
17448 2023-05-01 Andrew Pinski <apinski@marvell.com>
17449
17450 * tree-ssa-phiopt.cc: Update comment about
17451 how the transformation are implemented.
17452
17453 2023-05-01 Jeff Law <jlaw@ventanamicro>
17454
17455 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
17456
17457 2023-05-01 Jeff Law <jlaw@ventanamicro>
17458
17459 * config/cris/cris.cc (TARGET_LRA_P): Remove.
17460 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
17461 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
17462 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
17463 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
17464 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
17465
17466 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
17467
17468 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
17469 * print-tree.cc (print_decl_identifier): Implement it.
17470 * toplev.cc (output_stack_usage_1): Use it.
17471
17472 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17473
17474 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
17475 friends.
17476
17477 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17478
17479 * value-range.h (irange::set_nonzero): Inline.
17480
17481 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17482
17483 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
17484 precision.
17485 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
17486 invalid_range, as it is an inverse range.
17487 * tree-vrp.cc (find_case_label_range): Avoid trees.
17488 * value-range.cc (irange::irange_set): Delete.
17489 (irange::irange_set_1bit_anti_range): Delete.
17490 (irange::irange_set_anti_range): Delete.
17491 (irange::set): Cleanup.
17492 * value-range.h (class irange): Remove irange_set,
17493 irange_set_anti_range, irange_set_1bit_anti_range.
17494 (irange::set_undefined): Remove set to m_type.
17495
17496 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17497
17498 * range-op.cc (update_known_bitmask): Adjust for irange containing
17499 wide_ints internally.
17500 * tree-ssanames.cc (set_nonzero_bits): Same.
17501 * tree-ssanames.h (set_nonzero_bits): Same.
17502 * value-range-storage.cc (irange_storage::set_irange): Same.
17503 (irange_storage::get_irange): Same.
17504 * value-range.cc (irange::operator=): Same.
17505 (irange::irange_set): Same.
17506 (irange::irange_set_1bit_anti_range): Same.
17507 (irange::irange_set_anti_range): Same.
17508 (irange::set): Same.
17509 (irange::verify_range): Same.
17510 (irange::contains_p): Same.
17511 (irange::irange_single_pair_union): Same.
17512 (irange::union_): Same.
17513 (irange::irange_contains_p): Same.
17514 (irange::intersect): Same.
17515 (irange::invert): Same.
17516 (irange::set_range_from_nonzero_bits): Same.
17517 (irange::set_nonzero_bits): Same.
17518 (mask_to_wi): Same.
17519 (irange::intersect_nonzero_bits): Same.
17520 (irange::union_nonzero_bits): Same.
17521 (gt_ggc_mx): Same.
17522 (gt_pch_nx): Same.
17523 (tree_range): Same.
17524 (range_tests_strict_enum): Same.
17525 (range_tests_misc): Same.
17526 (range_tests_nonzero_bits): Same.
17527 * value-range.h (irange::type): Same.
17528 (irange::varying_compatible_p): Same.
17529 (irange::irange): Same.
17530 (int_range::int_range): Same.
17531 (irange::set_undefined): Same.
17532 (irange::set_varying): Same.
17533 (irange::lower_bound): Same.
17534 (irange::upper_bound): Same.
17535
17536 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17537
17538 * gimple-range-fold.cc (tree_lower_bound): Delete.
17539 (tree_upper_bound): Delete.
17540 (vrp_val_max): Delete.
17541 (vrp_val_min): Delete.
17542 (fold_using_range::range_of_ssa_name_with_loop_info): Call
17543 range_of_var_in_loop.
17544 * vr-values.cc (valid_value_p): Delete.
17545 (fix_overflow): Delete.
17546 (get_scev_info): New.
17547 (bounds_of_var_in_loop): Refactor into...
17548 (induction_variable_may_overflow_p): ...this,
17549 (range_from_loop_direction): ...and this,
17550 (range_of_var_in_loop): ...and this.
17551 * vr-values.h (bounds_of_var_in_loop): Delete.
17552 (range_of_var_in_loop): New.
17553
17554 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17555
17556 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
17557 irange_val*.
17558 (vrp_val_max): New.
17559 (vrp_val_min): New.
17560 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
17561 * range-op.cc (max_limit): Same.
17562 (min_limit): Same.
17563 (plus_minus_ranges): Same.
17564 (operator_rshift::op1_range): Same.
17565 (operator_cast::inside_domain_p): Same.
17566 * value-range.cc (vrp_val_is_max): Delete.
17567 (vrp_val_is_min): Delete.
17568 (range_tests_misc): Use irange_val_*.
17569 * value-range.h (vrp_val_is_min): Delete.
17570 (vrp_val_is_max): Delete.
17571 (vrp_val_max): Delete.
17572 (irange_val_min): New.
17573 (vrp_val_min): Delete.
17574 (irange_val_max): New.
17575 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
17576
17577 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17578
17579 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
17580 * gimple-fold.cc (size_must_be_zero_p): Same.
17581 * gimple-loop-versioning.cc
17582 (loop_versioning::prune_loop_conditions): Same.
17583 * gimple-range-edge.cc (gcond_edge_range): Same.
17584 (gimple_outgoing_range::calc_switch_ranges): Same.
17585 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
17586 (adjust_realpart_expr): Same.
17587 (fold_using_range::range_of_address): Same.
17588 (fold_using_range::relation_fold_and_or): Same.
17589 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
17590 (range_is_either_true_or_false): Same.
17591 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
17592 (cfn_clz::fold_range): Same.
17593 (cfn_ctz::fold_range): Same.
17594 * gimple-range-tests.cc (class test_expr_eval): Same.
17595 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
17596 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
17597 (propagate_vr_across_jump_function): Same.
17598 (decide_whether_version_node): Same.
17599 * ipa-prop.cc (ipa_get_value_range): Same.
17600 * ipa-prop.h (ipa_range_set_and_normalize): Same.
17601 * range-op.cc (get_shift_range): Same.
17602 (value_range_from_overflowed_bounds): Same.
17603 (value_range_with_overflow): Same.
17604 (create_possibly_reversed_range): Same.
17605 (equal_op1_op2_relation): Same.
17606 (not_equal_op1_op2_relation): Same.
17607 (lt_op1_op2_relation): Same.
17608 (le_op1_op2_relation): Same.
17609 (gt_op1_op2_relation): Same.
17610 (ge_op1_op2_relation): Same.
17611 (operator_mult::op1_range): Same.
17612 (operator_exact_divide::op1_range): Same.
17613 (operator_lshift::op1_range): Same.
17614 (operator_rshift::op1_range): Same.
17615 (operator_cast::op1_range): Same.
17616 (operator_logical_and::fold_range): Same.
17617 (set_nonzero_range_from_mask): Same.
17618 (operator_bitwise_or::op1_range): Same.
17619 (operator_bitwise_xor::op1_range): Same.
17620 (operator_addr_expr::fold_range): Same.
17621 (pointer_plus_operator::wi_fold): Same.
17622 (pointer_or_operator::op1_range): Same.
17623 (INT): Same.
17624 (UINT): Same.
17625 (INT16): Same.
17626 (UINT16): Same.
17627 (SCHAR): Same.
17628 (UCHAR): Same.
17629 (range_op_cast_tests): Same.
17630 (range_op_lshift_tests): Same.
17631 (range_op_rshift_tests): Same.
17632 (range_op_bitwise_and_tests): Same.
17633 (range_relational_tests): Same.
17634 * range.cc (range_zero): Same.
17635 (range_nonzero): Same.
17636 * range.h (range_true): Same.
17637 (range_false): Same.
17638 (range_true_and_false): Same.
17639 * tree-data-ref.cc (split_constant_offset_1): Same.
17640 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
17641 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
17642 (find_unswitching_predicates_for_bb): Same.
17643 * tree-ssa-phiopt.cc (value_replacement): Same.
17644 * tree-ssa-threadbackward.cc
17645 (back_threader::find_taken_edge_cond): Same.
17646 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
17647 * tree-vrp.cc (find_case_label_range): Same.
17648 * value-query.cc (range_query::get_tree_range): Same.
17649 * value-range.cc (irange::set_nonnegative): Same.
17650 (frange::contains_p): Same.
17651 (frange::singleton_p): Same.
17652 (frange::internal_singleton_p): Same.
17653 (irange::irange_set): Same.
17654 (irange::irange_set_1bit_anti_range): Same.
17655 (irange::irange_set_anti_range): Same.
17656 (irange::set): Same.
17657 (irange::operator==): Same.
17658 (irange::singleton_p): Same.
17659 (irange::contains_p): Same.
17660 (irange::set_range_from_nonzero_bits): Same.
17661 (DEFINE_INT_RANGE_INSTANCE): Same.
17662 (INT): Same.
17663 (UINT): Same.
17664 (SCHAR): Same.
17665 (UINT128): Same.
17666 (UCHAR): Same.
17667 (range): New.
17668 (tree_range): New.
17669 (range_int): New.
17670 (range_uint): New.
17671 (range_uint128): New.
17672 (range_uchar): New.
17673 (range_char): New.
17674 (build_range3): Convert to irange wide_int API.
17675 (range_tests_irange3): Same.
17676 (range_tests_int_range_max): Same.
17677 (range_tests_strict_enum): Same.
17678 (range_tests_misc): Same.
17679 (range_tests_nonzero_bits): Same.
17680 (range_tests_nan): Same.
17681 (range_tests_signed_zeros): Same.
17682 * value-range.h (Value_Range::Value_Range): Same.
17683 (irange::set): Same.
17684 (irange::nonzero_p): Same.
17685 (irange::contains_p): Same.
17686 (range_includes_zero_p): Same.
17687 (irange::set_nonzero): Same.
17688 (irange::set_zero): Same.
17689 (contains_zero_p): Same.
17690 (frange::contains_p): Same.
17691 * vr-values.cc
17692 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
17693 (bounds_of_var_in_loop): Same.
17694 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
17695
17696 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17697
17698 * value-range.cc (irange::irange_union): Rename to...
17699 (irange::union_): ...this.
17700 (irange::irange_intersect): Rename to...
17701 (irange::intersect): ...this.
17702 * value-range.h (irange::union_): Delete.
17703 (irange::intersect): Delete.
17704
17705 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17706
17707 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
17708
17709 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17710
17711 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
17712 ranger API.
17713 (compare_ranges): Delete.
17714 (compare_range_with_value): Delete.
17715 (bounds_of_var_in_loop): Tidy up by using ranger API.
17716 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
17717 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
17718 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
17719 strict_overflow_p and only_ranges.
17720 (simplify_using_ranges::legacy_fold_cond): Adjust call to
17721 legacy_fold_cond_overflow.
17722 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
17723 rename.
17724 (range_fits_type_p): Rename value_range to irange.
17725 * vr-values.h (range_fits_type_p): Adjust prototype.
17726
17727 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17728
17729 * value-range.cc (irange::irange_set_anti_range): Remove uses of
17730 tree_lower_bound and tree_upper_bound.
17731 (irange::verify_range): Same.
17732 (irange::operator==): Same.
17733 (irange::singleton_p): Same.
17734 * value-range.h (irange::tree_lower_bound): Delete.
17735 (irange::tree_upper_bound): Delete.
17736 (irange::lower_bound): Delete.
17737 (irange::upper_bound): Delete.
17738 (irange::zero_p): Remove uses of tree_lower_bound and
17739 tree_upper_bound.
17740
17741 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17742
17743 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
17744 kind() call.
17745 (determine_value_range): Same.
17746 (record_nonwrapping_iv): Same.
17747 (infer_loop_bounds_from_signedness): Same.
17748 (scev_var_range_cant_overflow): Same.
17749 * tree-vrp.cc (operand_less_p): Delete.
17750 * tree-vrp.h (operand_less_p): Delete.
17751 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
17752 (irange::value_inside_range): Delete.
17753 * value-range.h (vrange::kind): Delete.
17754 (irange::num_pairs): Remove check of m_kind.
17755 (irange::min): Delete.
17756 (irange::max): Delete.
17757
17758 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17759
17760 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
17761 for vrange_storage.
17762 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
17763 (sbr_vector::grow): Same.
17764 (sbr_vector::set_bb_range): Same.
17765 (sbr_vector::get_bb_range): Same.
17766 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
17767 (sbr_sparse_bitmap::set_bb_range): Same.
17768 (sbr_sparse_bitmap::get_bb_range): Same.
17769 (block_range_cache::block_range_cache): Same.
17770 (ssa_global_cache::ssa_global_cache): Same.
17771 (ssa_global_cache::get_global_range): Same.
17772 (ssa_global_cache::set_global_range): Same.
17773 * gimple-range-cache.h: Same.
17774 * gimple-range-edge.cc
17775 (gimple_outgoing_range::gimple_outgoing_range): Same.
17776 (gimple_outgoing_range::switch_edge_range): Same.
17777 (gimple_outgoing_range::calc_switch_ranges): Same.
17778 * gimple-range-edge.h: Same.
17779 * gimple-range-infer.cc
17780 (infer_range_manager::infer_range_manager): Same.
17781 (infer_range_manager::get_nonzero): Same.
17782 (infer_range_manager::maybe_adjust_range): Same.
17783 (infer_range_manager::add_range): Same.
17784 * gimple-range-infer.h: Rename obstack_vrange_allocator to
17785 vrange_allocator.
17786 * tree-core.h (struct irange_storage_slot): Remove.
17787 (struct tree_ssa_name): Remove irange_info and frange_info. Make
17788 range_info a pointer to vrange_storage.
17789 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
17790 (range_info_alloc): Same.
17791 (range_info_free): Same.
17792 (range_info_get_range): Same.
17793 (range_info_set_range): Same.
17794 (get_nonzero_bits): Same.
17795 * value-query.cc (get_ssa_name_range_info): Same.
17796 * value-range-storage.cc (class vrange_internal_alloc): New.
17797 (class vrange_obstack_alloc): New.
17798 (class vrange_ggc_alloc): New.
17799 (vrange_allocator::vrange_allocator): New.
17800 (vrange_allocator::~vrange_allocator): New.
17801 (vrange_storage::alloc_slot): New.
17802 (vrange_allocator::alloc): New.
17803 (vrange_allocator::free): New.
17804 (vrange_allocator::clone): New.
17805 (vrange_allocator::clone_varying): New.
17806 (vrange_allocator::clone_undefined): New.
17807 (vrange_storage::alloc): New.
17808 (vrange_storage::set_vrange): Remove slot argument.
17809 (vrange_storage::get_vrange): Same.
17810 (vrange_storage::fits_p): Same.
17811 (vrange_storage::equal_p): New.
17812 (irange_storage::write_lengths_address): New.
17813 (irange_storage::lengths_address): New.
17814 (irange_storage_slot::alloc_slot): Remove.
17815 (irange_storage::alloc): New.
17816 (irange_storage_slot::irange_storage_slot): Remove.
17817 (irange_storage::irange_storage): New.
17818 (write_wide_int): New.
17819 (irange_storage_slot::set_irange): Remove.
17820 (irange_storage::set_irange): New.
17821 (read_wide_int): New.
17822 (irange_storage_slot::get_irange): Remove.
17823 (irange_storage::get_irange): New.
17824 (irange_storage_slot::size): Remove.
17825 (irange_storage::equal_p): New.
17826 (irange_storage_slot::num_wide_ints_needed): Remove.
17827 (irange_storage::size): New.
17828 (irange_storage_slot::fits_p): Remove.
17829 (irange_storage::fits_p): New.
17830 (irange_storage_slot::dump): Remove.
17831 (irange_storage::dump): New.
17832 (frange_storage_slot::alloc_slot): Remove.
17833 (frange_storage::alloc): New.
17834 (frange_storage_slot::set_frange): Remove.
17835 (frange_storage::set_frange): New.
17836 (frange_storage_slot::get_frange): Remove.
17837 (frange_storage::get_frange): New.
17838 (frange_storage_slot::fits_p): Remove.
17839 (frange_storage::equal_p): New.
17840 (frange_storage::fits_p): New.
17841 (ggc_vrange_allocator): New.
17842 (ggc_alloc_vrange_storage): New.
17843 * value-range-storage.h (class vrange_storage): Rewrite.
17844 (class irange_storage): Rewrite.
17845 (class frange_storage): Rewrite.
17846 (class obstack_vrange_allocator): Remove.
17847 (class ggc_vrange_allocator): Remove.
17848 (vrange_allocator::alloc_vrange): Remove.
17849 (vrange_allocator::alloc_irange): Remove.
17850 (vrange_allocator::alloc_frange): Remove.
17851 (ggc_alloc_vrange_storage): New.
17852 * value-range.h (class irange): Rename vrange_allocator to
17853 irange_storage.
17854 (class frange): Same.
17855
17856 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
17857
17858 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
17859 inc to avoid clobbering the carry flag.
17860
17861 2023-04-30 Andrew Pinski <apinski@marvell.com>
17862
17863 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
17864 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
17865
17866 2023-04-30 Andrew Pinski <apinski@marvell.com>
17867
17868 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17869 Allow some builtin/internal function calls which
17870 are known not to trap/throw.
17871 (phiopt_worker::match_simplify_replacement):
17872 Use name instead of getting the lhs again.
17873
17874 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
17875
17876 * configure: Regenerate.
17877 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
17878
17879 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
17880
17881 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
17882 emit_insn_if_valid_for_reload.
17883 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
17884 to be recognized, also try emitting a parallel that clobbers
17885 TARGET_FLAGS_REGNUM, as applicable.
17886
17887 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
17888
17889 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
17890 to a define_insn.
17891 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
17892 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
17893
17894 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
17895
17896 * config/stormy16/stormy16.md (any_lshift): New code iterator.
17897 (any_or_plus): Likewise.
17898 (any_rotate): Likewise.
17899 (*<any_lshift>_and_internal): New define_insn_and_split to
17900 recognize a logical shift followed by an AND, and split it
17901 again after reload.
17902 (*swpn): New define_insn matching xstormy16's swpn.
17903 (*swpn_zext): New define_insn recognizing swpn followed by
17904 zero_extendqihi2, i.e. with the high byte set to zero.
17905 (*swpn_sext): Likewise, for swpn followed by cbw.
17906 (*swpn_sext_2): Likewise, for an alternate RTL form.
17907 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
17908 sequence is split in the correct place to recognize the *swpn_zext
17909 followed by any_or_plus (ior, xor or plus) instruction.
17910
17911 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
17912
17913 PR target/105525
17914 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
17915 (lm32-*-uclinux*): Likewise.
17916
17917 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
17918
17919 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
17920 for riscv_use_save_libcall.
17921 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
17922 (riscv_compute_frame_info): restructure to decouple stack allocation
17923 for rv32e w/o save-restore.
17924
17925 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
17926
17927 * doc/install.texi: Fix documentation typo
17928
17929 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
17930
17931 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
17932 (u): Add div/udiv cases.
17933 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
17934 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
17935 divmod expansion.
17936 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
17937 (thead_c906_tune_info): Likewise.
17938 (optimize_size_tune_info): Likewise.
17939 (riscv_use_divmod_expander): New function.
17940 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
17941
17942 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
17943
17944 * config/riscv/bitmanip.md: Added clmulr instruction.
17945 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
17946 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
17947 (type): Add clmul
17948 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
17949 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
17950 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
17951 functions to riscv-cmo.def.
17952 * config/riscv/generic.md: Add clmul to list of instructions
17953 using the generic_imul reservation.
17954
17955 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
17956
17957 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
17958
17959 2023-04-28 Andrew Pinski <apinski@marvell.com>
17960
17961 PR tree-optimization/100958
17962 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
17963 (pass_phiopt::execute): Don't call two_value_replacement.
17964 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
17965 handle what two_value_replacement did.
17966
17967 2023-04-28 Andrew Pinski <apinski@marvell.com>
17968
17969 * match.pd: Add patterns for
17970 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
17971
17972 2023-04-28 Andrew Pinski <apinski@marvell.com>
17973
17974 * match.pd: Factor out the deciding the min/max from
17975 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
17976 pattern to ...
17977 * fold-const.cc (minmax_from_comparison): this new function.
17978 * fold-const.h (minmax_from_comparison): New prototype.
17979
17980 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
17981
17982 PR rtl-optimization/109476
17983 * lower-subreg.cc: Include explow.h for force_reg.
17984 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
17985 If decomposing a suitable LSHIFTRT and we're not splitting
17986 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
17987 instead of setting a high part SUBREG to zero, which helps combine.
17988 (decompose_multiword_subregs): Update call to resolve_shift_zext.
17989
17990 2023-04-28 Richard Biener <rguenther@suse.de>
17991
17992 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
17993 consider scatters.
17994 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
17995 gather-scatter info and cost emulated scatters accordingly.
17996 (get_load_store_type): Support emulated scatters.
17997 (vectorizable_store): Likewise. Emulate them by extracting
17998 scalar offsets and data, doing scalar stores.
17999
18000 2023-04-28 Richard Biener <rguenther@suse.de>
18001
18002 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
18003 Tame down element extracts and scalar loads for gather/scatter
18004 similar to elementwise strided accesses.
18005
18006 2023-04-28 Pan Li <pan2.li@intel.com>
18007 kito-cheng <kito.cheng@sifive.com>
18008
18009 * config/riscv/vector.md: Add new define split to perform
18010 the simplification.
18011
18012 2023-04-28 Richard Biener <rguenther@suse.de>
18013
18014 PR ipa/109652
18015 * ipa-param-manipulation.cc
18016 (ipa_param_body_adjustments::modify_expression): Allow
18017 conversion of a register to a non-register type. Elide
18018 conversions inside BIT_FIELD_REFs.
18019
18020 2023-04-28 Richard Biener <rguenther@suse.de>
18021
18022 PR tree-optimization/109644
18023 * tree-cfg.cc (verify_types_in_gimple_reference): Check
18024 register constraints on the outermost VIEW_CONVERT_EXPR
18025 only. Do not allow register or invariant bases on
18026 multi-level or possibly variable index handled components.
18027
18028 2023-04-28 Richard Biener <rguenther@suse.de>
18029
18030 * gimplify.cc (gimplify_compound_lval): When there's a
18031 non-register type produced by one of the handled component
18032 operations make sure we get a non-register base.
18033
18034 2023-04-28 Richard Biener <rguenther@suse.de>
18035
18036 PR tree-optimization/108752
18037 * tree-vect-generic.cc (build_replicated_const): Rename
18038 to build_replicated_int_cst and move to tree.{h,cc}.
18039 (do_plus_minus): Adjust.
18040 (do_negate): Likewise.
18041 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
18042 arithmetic vector operations in lowered form.
18043 * tree.h (build_replicated_int_cst): Declare.
18044 * tree.cc (build_replicated_int_cst): Moved from
18045 tree-vect-generic.cc build_replicated_const.
18046
18047 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18048
18049 PR target/99195
18050 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
18051 (aarch64_rbit<mode><vczle><vczbe>): ... This.
18052 (neg<mode>2): Rename to...
18053 (neg<mode>2<vczle><vczbe>): ... This.
18054 (abs<mode>2): Rename to...
18055 (abs<mode>2<vczle><vczbe>): ... This.
18056 (aarch64_abs<mode>): Rename to...
18057 (aarch64_abs<mode><vczle><vczbe>): ... This.
18058 (one_cmpl<mode>2): Rename to...
18059 (one_cmpl<mode>2<vczle><vczbe>): ... This.
18060 (clrsb<mode>2): Rename to...
18061 (clrsb<mode>2<vczle><vczbe>): ... This.
18062 (clz<mode>2): Rename to...
18063 (clz<mode>2<vczle><vczbe>): ... This.
18064 (popcount<mode>2): Rename to...
18065 (popcount<mode>2<vczle><vczbe>): ... This.
18066
18067 2023-04-28 Jakub Jelinek <jakub@redhat.com>
18068
18069 * gimple-range-op.cc (class cfn_sqrt): New type.
18070 (op_cfn_sqrt): New variable.
18071 (gimple_range_op_handler::maybe_builtin_call): Handle
18072 CASE_CFN_SQRT{,_FN}.
18073
18074 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
18075 Jakub Jelinek <jakub@redhat.com>
18076
18077 * value-range.h (frange_nextafter): Declare.
18078 * gimple-range-op.cc (class cfn_sincos): New.
18079 (op_cfn_sin, op_cfn_cos): New variables.
18080 (gimple_range_op_handler::maybe_builtin_call): Handle
18081 CASE_CFN_{SIN,COS}{,_FN}.
18082
18083 2023-04-28 Jakub Jelinek <jakub@redhat.com>
18084
18085 * target.def (libm_function_max_error): New target hook.
18086 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
18087 * doc/tm.texi: Regenerated.
18088 * targhooks.h (default_libm_function_max_error,
18089 glibc_linux_libm_function_max_error): Declare.
18090 * targhooks.cc: Include case-cfn-macros.h.
18091 (default_libm_function_max_error,
18092 glibc_linux_libm_function_max_error): New functions.
18093 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18094 * config/linux-protos.h (linux_libm_function_max_error): Declare.
18095 * config/linux.cc: Include target.h and targhooks.h.
18096 (linux_libm_function_max_error): New function.
18097 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
18098 (arc_libm_function_max_error): New function.
18099 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18100 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
18101 (ix86_libm_function_max_error): New function.
18102 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18103 * config/rs6000/rs6000-protos.h
18104 (rs6000_linux_libm_function_max_error): Declare.
18105 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
18106 and case-cfn-macros.h.
18107 (rs6000_linux_libm_function_max_error): New function.
18108 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18109 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18110 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
18111 (or1k_libm_function_max_error): New function.
18112 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18113
18114 2023-04-28 Alexandre Oliva <oliva@adacore.com>
18115
18116 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
18117 Move detach value calls...
18118 (pass_harden_conditional_branches::execute): ... here.
18119 (pass_harden_compares::execute): Detach values before
18120 compares.
18121
18122 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
18123
18124 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
18125 (cml<addsub_as><mode>4): Likewise.
18126 (vec_addsub<mode>3): Likewise.
18127 (cadd<rot><mode>3): Likewise.
18128 (vec_fmaddsub<mode>4): Likewise.
18129 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
18130
18131 2023-04-27 Andrew Pinski <apinski@marvell.com>
18132
18133 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
18134 up to 2 min/max expressions in the sequence/match code.
18135
18136 2023-04-27 Andrew Pinski <apinski@marvell.com>
18137
18138 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
18139 COMPARISON.
18140 * tree-eh.cc (operation_could_trap_helper_p): Treate
18141 MIN_EXPR/MAX_EXPR similar as other comparisons.
18142
18143 2023-04-27 Andrew Pinski <apinski@marvell.com>
18144
18145 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
18146 prototype.
18147 (cond_if_else_store_replacement): Likewise.
18148 (get_non_trapping): Likewise.
18149 (store_elim_worker): Move into ...
18150 (pass_cselim::execute): This.
18151
18152 2023-04-27 Andrew Pinski <apinski@marvell.com>
18153
18154 * tree-ssa-phiopt.cc (two_value_replacement): Remove
18155 prototype.
18156 (match_simplify_replacement): Likewise.
18157 (factor_out_conditional_conversion): Likewise.
18158 (value_replacement): Likewise.
18159 (minmax_replacement): Likewise.
18160 (spaceship_replacement): Likewise.
18161 (cond_removal_in_builtin_zero_pattern): Likewise.
18162 (hoist_adjacent_loads): Likewise.
18163 (tree_ssa_phiopt_worker): Move into ...
18164 (pass_phiopt::execute): this.
18165
18166 2023-04-27 Andrew Pinski <apinski@marvell.com>
18167
18168 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
18169 do_store_elim argument and split that part out to ...
18170 (store_elim_worker): This new function.
18171 (pass_cselim::execute): Call store_elim_worker.
18172 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
18173
18174 2023-04-27 Jan Hubicka <jh@suse.cz>
18175
18176 * cfgloopmanip.h (unloop_loops): Export.
18177 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
18178 that no longer loop.
18179 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
18180 vectors of loops to unloop.
18181 (canonicalize_induction_variables): Free vectors here.
18182 (tree_unroll_loops_completely): Free vectors here.
18183
18184 2023-04-27 Richard Biener <rguenther@suse.de>
18185
18186 PR tree-optimization/109170
18187 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
18188 Handle __builtin_expect and similar via cfn_pass_through_arg1
18189 and inspecting the calls fnspec.
18190 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
18191 and BUILT_IN_EXPECT_WITH_PROBABILITY.
18192
18193 2023-04-27 Alexandre Oliva <oliva@adacore.com>
18194
18195 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
18196
18197 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
18198
18199 PR tree-optimization/109639
18200 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
18201 (propagate_vr_across_jump_function): Same.
18202 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
18203 * ipa-prop.h (ipa_range_set_and_normalize): New.
18204 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
18205
18206 2023-04-27 Richard Biener <rguenther@suse.de>
18207
18208 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
18209 create a CTOR operand in the result when simplifying GIMPLE.
18210
18211 2023-04-27 Richard Biener <rguenther@suse.de>
18212
18213 * gimplify.cc (gimplify_compound_lval): When the base
18214 gimplified to a register make sure to split up chains
18215 of operations.
18216
18217 2023-04-27 Richard Biener <rguenther@suse.de>
18218
18219 PR ipa/109607
18220 * ipa-param-manipulation.h
18221 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
18222 argument.
18223 * ipa-param-manipulation.cc
18224 (ipa_param_body_adjustments::modify_expression): Likewise.
18225 When we need a conversion and the replacement is a register
18226 split the conversion out.
18227 (ipa_param_body_adjustments::modify_assignment): Pass
18228 extra_stmts to RHS modify_expression.
18229
18230 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
18231
18232 * doc/extend.texi (Zero Length): Describe example.
18233
18234 2023-04-27 Richard Biener <rguenther@suse.de>
18235
18236 PR tree-optimization/109594
18237 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
18238 what we rewrite to a register based on the above.
18239
18240 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
18241
18242 * config/riscv/riscv.cc: Fix whitespace.
18243 * config/riscv/sync.md: Fix whitespace.
18244
18245 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18246
18247 PR tree-optimization/108697
18248 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
18249 not clear the vector on an out of range query.
18250 (ssa_cache::dump): Use dump_range_query instead of get_range.
18251 (ssa_cache::dump_range_query): New.
18252 (ssa_lazy_cache::dump_range_query): New.
18253 (ssa_lazy_cache::set_range): New.
18254 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
18255 (class ssa_lazy_cache): New.
18256 (ssa_lazy_cache::ssa_lazy_cache): New.
18257 (ssa_lazy_cache::~ssa_lazy_cache): New.
18258 (ssa_lazy_cache::get_range): New.
18259 (ssa_lazy_cache::clear_range): New.
18260 (ssa_lazy_cache::clear): New.
18261 (ssa_lazy_cache::dump): New.
18262 * gimple-range-path.cc (path_range_query::path_range_query): Do
18263 not allocate a ssa_cache object nor has_cache bitmap.
18264 (path_range_query::~path_range_query): Do not free objects.
18265 (path_range_query::clear_cache): Remove.
18266 (path_range_query::get_cache): Adjust.
18267 (path_range_query::set_cache): Remove.
18268 (path_range_query::dump): Don't call through a pointer.
18269 (path_range_query::internal_range_of_expr): Set cache directly.
18270 (path_range_query::reset_path): Clear cache directly.
18271 (path_range_query::ssa_range_in_phi): Fold with globals only.
18272 (path_range_query::compute_ranges_in_phis): Simply set range.
18273 (path_range_query::compute_ranges_in_block): Call cache directly.
18274 * gimple-range-path.h (class path_range_query): Replace bitmap
18275 and cache pointer with lazy cache object.
18276 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
18277
18278 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18279
18280 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
18281 (ssa_cache::~ssa_cache): Rename.
18282 (ssa_cache::has_range): New.
18283 (ssa_cache::get_range): Rename.
18284 (ssa_cache::set_range): Rename.
18285 (ssa_cache::clear_range): Rename.
18286 (ssa_cache::clear): Rename.
18287 (ssa_cache::dump): Rename and use get_range.
18288 (ranger_cache::get_global_range): Use get_range and set_range.
18289 (ranger_cache::range_of_def): Use get_range.
18290 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
18291 (class ranger_cache): Use ssa_cache.
18292 * gimple-range-path.cc (path_range_query::path_range_query): Use
18293 ssa_cache.
18294 (path_range_query::get_cache): Use get_range.
18295 (path_range_query::set_cache): Use set_range.
18296 * gimple-range-path.h (class path_range_query): Use ssa_cache.
18297 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
18298 (assume_query::range_of_expr): Use get_range.
18299 (assume_query::assume_query): Use set_range.
18300 (assume_query::calculate_op): Use get_range and set_range.
18301 * gimple-range.h (class assume_query): Use ssa_cache.
18302
18303 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18304
18305 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
18306 and local to optionally zero memory.
18307 (br_vector::grow): Only zero memory if flag is set.
18308 (class sbr_lazy_vector): New.
18309 (sbr_lazy_vector::sbr_lazy_vector): New.
18310 (sbr_lazy_vector::set_bb_range): New.
18311 (sbr_lazy_vector::get_bb_range): New.
18312 (sbr_lazy_vector::bb_range_p): New.
18313 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
18314 * gimple-range-gori.cc (gori_map::calculate_gori): Use
18315 param_vrp_switch_limit.
18316 (gori_compute::gori_compute): Use param_vrp_switch_limit.
18317 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
18318 (vrp_switch_limit): Rename from evrp_switch_limit.
18319 (vrp_vector_threshold): New.
18320
18321 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18322
18323 * value-relation.cc (dom_oracle::query_relation): Check early for lack
18324 of any relation.
18325 * value-relation.h (equiv_oracle::has_equiv_p): New.
18326
18327 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18328
18329 PR tree-optimization/109417
18330 * gimple-range-gori.cc (range_def_chain::register_dependency):
18331 Save the ssa version number, not the pointer.
18332 (gori_compute::may_recompute_p): No need to check if a dependency
18333 is in the free list.
18334 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
18335 fields to be unsigned int instead of trees.
18336 (ange_def_chain::depend1): Adjust.
18337 (ange_def_chain::depend2): Adjust.
18338 * gimple-range.h: Include "ssa.h" to inline ssa_name().
18339
18340 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
18341
18342 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
18343 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
18344 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
18345
18346 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
18347
18348 PR target/104338
18349 * config/riscv/riscv-protos.h: Add helper function stubs.
18350 * config/riscv/riscv.cc: Add helper functions for subword masking.
18351 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
18352 -mno-inline-atomics.
18353 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
18354 fetch_and_nand, CAS, and exchange ops.
18355 * doc/invoke.texi: Add blurb regarding new command-line flags
18356 -minline-atomics and -mno-inline-atomics.
18357
18358 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18359
18360 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
18361 Reimplement using standard RTL codes instead of unspec.
18362 (aarch64_rshrn2<mode>_insn_be): Likewise.
18363 (aarch64_rshrn2<mode>): Adjust for the above.
18364 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
18365
18366 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18367
18368 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
18369 with standard RTL codes instead of an UNSPEC.
18370 (aarch64_rshrn<mode>_insn_be): Likewise.
18371 (aarch64_rshrn<mode>): Adjust for the above.
18372 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
18373
18374 2023-04-26 Pan Li <pan2.li@intel.com>
18375 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18376
18377 * config/riscv/riscv.cc (riscv_classify_address): Allow
18378 const0_rtx for the RVV load/store.
18379
18380 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18381
18382 * range-op.cc (range_op_cast_tests): Remove legacy support.
18383 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
18384 * value-range.cc (irange::operator=): Same.
18385 (get_legacy_range): Same.
18386 (irange::copy_legacy_to_multi_range): Delete.
18387 (irange::copy_to_legacy): Delete.
18388 (irange::irange_set_anti_range): Delete.
18389 (irange::set): Remove legacy support.
18390 (irange::verify_range): Same.
18391 (irange::legacy_lower_bound): Delete.
18392 (irange::legacy_upper_bound): Delete.
18393 (irange::legacy_equal_p): Delete.
18394 (irange::operator==): Remove legacy support.
18395 (irange::singleton_p): Same.
18396 (irange::value_inside_range): Same.
18397 (irange::contains_p): Same.
18398 (intersect_ranges): Delete.
18399 (irange::legacy_intersect): Delete.
18400 (union_ranges): Delete.
18401 (irange::legacy_union): Delete.
18402 (irange::legacy_verbose_union_): Delete.
18403 (irange::legacy_verbose_intersect): Delete.
18404 (irange::irange_union): Remove legacy support.
18405 (irange::irange_intersect): Same.
18406 (irange::intersect): Same.
18407 (irange::invert): Same.
18408 (ranges_from_anti_range): Delete.
18409 (gt_pch_nx): Adjust for legacy removal.
18410 (gt_ggc_mx): Same.
18411 (range_tests_legacy): Delete.
18412 (range_tests_misc): Adjust for legacy removal.
18413 (range_tests): Same.
18414 * value-range.h (class irange): Same.
18415 (irange::legacy_mode_p): Delete.
18416 (ranges_from_anti_range): Delete.
18417 (irange::nonzero_p): Adjust for legacy removal.
18418 (irange::lower_bound): Same.
18419 (irange::upper_bound): Same.
18420 (irange::union_): Same.
18421 (irange::intersect): Same.
18422 (irange::set_nonzero): Same.
18423 (irange::set_zero): Same.
18424 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
18425
18426 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18427
18428 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
18429 of range_has_numeric_bounds_p with irange API.
18430 (range_has_numeric_bounds_p): Delete.
18431 * value-range.h (range_has_numeric_bounds_p): Delete.
18432
18433 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18434
18435 * tree-data-ref.cc (compute_distributive_range): Replace uses of
18436 range_int_cst_p with irange API.
18437 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
18438 * tree-vrp.h (range_int_cst_p): Delete.
18439 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
18440 range_int_cst_p with irange API.
18441 (vr_set_zero_nonzero_bits): Same.
18442 (range_fits_type_p): Same.
18443 (simplify_using_ranges::simplify_casted_cond): Same.
18444 * tree-vrp.cc (range_int_cst_p): Remove.
18445
18446 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18447
18448 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
18449
18450 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18451
18452 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
18453 API uses to new API.
18454 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
18455 * internal-fn.cc (get_min_precision): Same.
18456 * match.pd: Same.
18457 * tree-affine.cc (expr_to_aff_combination): Same.
18458 * tree-data-ref.cc (dr_step_indicator): Same.
18459 * tree-dfa.cc (get_ref_base_and_extent): Same.
18460 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
18461 * tree-ssa-phiopt.cc (two_value_replacement): Same.
18462 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
18463 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
18464 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
18465 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
18466 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
18467 * tree.cc (get_range_pos_neg): Same.
18468
18469 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18470
18471 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
18472 vrange::dump instead of ad-hoc dumper.
18473 * tree-ssa-strlen.cc (dump_strlen_info): Same.
18474 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
18475 dump_generic_node.
18476
18477 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18478
18479 * range-op.cc (operator_cast::op1_range): Use
18480 create_possibly_reversed_range.
18481 (operator_bitwise_and::simple_op1_range_solver): Same.
18482 * value-range.cc (swap_out_of_order_endpoints): Delete.
18483 (irange::set): Remove call to swap_out_of_order_endpoints.
18484
18485 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18486
18487 * builtins.cc (determine_block_size): Convert use of legacy API to
18488 get_legacy_range.
18489 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
18490 (array_bounds_checker::check_array_ref): Same.
18491 * gimple-ssa-warn-restrict.cc
18492 (builtin_memref::extend_offset_range): Same.
18493 * ipa-cp.cc (ipcp_store_vr_results): Same.
18494 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
18495 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
18496 (ipa_write_jump_function): Same.
18497 * pointer-query.cc (get_size_range): Same.
18498 * tree-data-ref.cc (split_constant_offset): Same.
18499 * tree-ssa-strlen.cc (get_range): Same.
18500 (maybe_diag_stxncpy_trunc): Same.
18501 (strlen_pass::get_len_or_size): Same.
18502 (strlen_pass::count_nonzero_bytes_addr): Same.
18503 * tree-vect-patterns.cc (vect_get_range_info): Same.
18504 * value-range.cc (irange::maybe_anti_range): Remove.
18505 (get_legacy_range): New.
18506 (irange::copy_to_legacy): Use get_legacy_range.
18507 (ranges_from_anti_range): Same.
18508 * value-range.h (class irange): Remove maybe_anti_range.
18509 (get_legacy_range): New.
18510 * vr-values.cc (check_for_binary_op_overflow): Convert use of
18511 legacy API to get_legacy_range.
18512 (compare_ranges): Same.
18513 (compare_range_with_value): Same.
18514 (bounds_of_var_in_loop): Same.
18515 (find_case_label_ranges): Same.
18516 (simplify_using_ranges::simplify_switch_using_ranges): Same.
18517
18518 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18519
18520 * value-range-pretty-print.cc (vrange_printer::visit): Remove
18521 constant_p use.
18522 * value-range.cc (irange::constant_p): Remove.
18523 (irange::get_nonzero_bits_from_range): Remove constant_p use.
18524 * value-range.h (class irange): Remove constant_p.
18525 (irange::num_pairs): Remove constant_p use.
18526
18527 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18528
18529 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
18530 symbolics support.
18531 (irange::set): Same.
18532 (irange::legacy_lower_bound): Same.
18533 (irange::legacy_upper_bound): Same.
18534 (irange::contains_p): Same.
18535 (range_tests_legacy): Same.
18536 (irange::normalize_addresses): Remove.
18537 (irange::normalize_symbolics): Remove.
18538 (irange::symbolic_p): Remove.
18539 * value-range.h (class irange): Remove symbolic_p,
18540 normalize_symbolics, and normalize_addresses.
18541 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
18542 Remove symbolics support.
18543
18544 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18545
18546 * value-range.cc (irange::may_contain_p): Remove.
18547 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
18548 usage with contains_p.
18549 * vr-values.cc (compare_range_with_value): Same.
18550
18551 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18552
18553 * tree-vrp.cc (supported_types_p): Remove.
18554 (defined_ranges_p): Remove.
18555 (range_fold_binary_expr): Remove.
18556 (range_fold_unary_expr): Remove.
18557 * tree-vrp.h (range_fold_unary_expr): Remove.
18558 (range_fold_binary_expr): Remove.
18559
18560 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18561
18562 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
18563 (ipa_value_range_from_jfunc): Same.
18564 (propagate_vr_across_jump_function): Same.
18565 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
18566 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
18567 * vr-values.cc (bounds_of_var_in_loop): Same.
18568
18569 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18570
18571 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
18572 Add irange argument.
18573 (check_out_of_bounds_and_warn): Remove check for vr.
18574 (array_bounds_checker::check_array_ref): Remove pointer qualifier
18575 for vr and adjust accordingly.
18576 * gimple-array-bounds.h (get_value_range): Add irange argument.
18577 * value-query.cc (class equiv_allocator): Delete.
18578 (range_query::get_value_range): Delete.
18579 (range_query::range_query): Remove allocator access.
18580 (range_query::~range_query): Same.
18581 * value-query.h (get_value_range): Delete.
18582 * vr-values.cc
18583 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
18584 call to get_value_range.
18585 (check_for_binary_op_overflow): Same.
18586 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
18587 (simplify_using_ranges::simplify_abs_using_ranges): Same.
18588 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
18589 (simplify_using_ranges::simplify_casted_cond): Same.
18590 (simplify_using_ranges::simplify_switch_using_ranges): Same.
18591 (simplify_using_ranges::two_valued_val_range_p): Same.
18592
18593 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18594
18595 * vr-values.cc
18596 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
18597 Rename to...
18598 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
18599 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
18600 (simplify_using_ranges::legacy_fold_cond): ...this.
18601 (simplify_using_ranges::fold_cond): Rename
18602 vrp_evaluate_conditional_warnv_with_ops to
18603 legacy_fold_cond_overflow.
18604 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
18605 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
18606 legacy_fold_cond_overflow respectively.
18607
18608 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18609
18610 * vr-values.cc (get_vr_for_comparison): Remove.
18611 (compare_name_with_value): Same.
18612 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
18613 compare_name_with_value.
18614 * vr-values.h: Remove compare_name_with_value.
18615 Remove get_vr_for_comparison.
18616
18617 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
18618
18619 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
18620 (bswapsi2): New define_insn.
18621 (swaphi): New define_insn to exchange two registers (swpw).
18622 (define_peephole2): Recognize exchange of registers as swaphi.
18623
18624 2023-04-26 Richard Biener <rguenther@suse.de>
18625
18626 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
18627 Avoid last_stmt.
18628 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
18629 * predict.cc (apply_return_prediction): Likewise.
18630 * sese.cc (set_ifsese_condition): Likewise. Simplify.
18631 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
18632 (make_edges_bb): Likewise.
18633 (make_cond_expr_edges): Likewise.
18634 (end_recording_case_labels): Likewise.
18635 (make_gimple_asm_edges): Likewise.
18636 (cleanup_dead_labels): Likewise.
18637 (group_case_labels): Likewise.
18638 (gimple_can_merge_blocks_p): Likewise.
18639 (gimple_merge_blocks): Likewise.
18640 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
18641 (gimple_duplicate_sese_tail): Avoid last_stmt.
18642 (find_loop_dist_alias): Likewise.
18643 (gimple_block_ends_with_condjump_p): Likewise.
18644 (gimple_purge_dead_eh_edges): Likewise.
18645 (gimple_purge_dead_abnormal_call_edges): Likewise.
18646 (pass_warn_function_return::execute): Likewise.
18647 (execute_fixup_cfg): Likewise.
18648 * tree-eh.cc (redirect_eh_edge_1): Likewise.
18649 (pass_lower_resx::execute): Likewise.
18650 (pass_lower_eh_dispatch::execute): Likewise.
18651 (cleanup_empty_eh): Likewise.
18652 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
18653 (predicate_bbs): Likewise.
18654 (ifcvt_split_critical_edges): Likewise.
18655 * tree-loop-distribution.cc (create_edge_for_control_dependence):
18656 Likewise.
18657 (loop_distribution::transform_reduction_loop): Likewise.
18658 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
18659 (try_transform_to_exit_first_loop_alt): Likewise.
18660 (transform_to_exit_first_loop): Likewise.
18661 (create_parallel_loop): Likewise.
18662 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
18663 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
18664 (eliminate_unnecessary_stmts): Likewise.
18665 * tree-ssa-dom.cc
18666 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
18667 Likewise.
18668 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
18669 (pass_tree_ifcombine::execute): Likewise.
18670 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
18671 (should_duplicate_loop_header_p): Likewise.
18672 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
18673 (tree_estimate_loop_size): Likewise.
18674 (try_unroll_loop_completely): Likewise.
18675 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
18676 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
18677 (canonicalize_loop_ivs): Likewise.
18678 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
18679 (bound_difference): Likewise.
18680 (number_of_iterations_popcount): Likewise.
18681 (number_of_iterations_cltz): Likewise.
18682 (number_of_iterations_cltz_complement): Likewise.
18683 (simplify_using_initial_conditions): Likewise.
18684 (number_of_iterations_exit_assumptions): Likewise.
18685 (loop_niter_by_eval): Likewise.
18686 (estimate_numbers_of_iterations): Likewise.
18687
18688 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18689
18690 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
18691
18692 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
18693
18694 PR target/108758
18695 * config/rs6000/rs6000-builtins.def
18696 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
18697 __builtin_vsx_scalar_cmp_exp_qp_lt,
18698 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
18699 to power9-vector.
18700
18701 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
18702
18703 PR target/109069
18704 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
18705 easy_vector_constant with const_vector_each_byte_same, add
18706 handlings in preparation for !easy_vector_constant, and update
18707 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
18708 * config/rs6000/predicates.md (const_vector_each_byte_same): New
18709 predicate.
18710
18711 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
18712
18713 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
18714 (*pred_ltge<mode>_merge_tie_mask): Ditto.
18715 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
18716 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
18717 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
18718 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
18719 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
18720
18721 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18722
18723 * config/riscv/vector.md: Fix redundant vmv1r.v.
18724
18725 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18726
18727 * config/riscv/vector.md: Fix RA constraint.
18728
18729 2023-04-26 Pan Li <pan2.li@intel.com>
18730
18731 PR target/109272
18732 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
18733 check for vn_reference equal.
18734
18735 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18736
18737 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
18738 auto-vectorization preference.
18739 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
18740 auto-vectorization.
18741 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
18742
18743 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
18744
18745 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
18746 and bclridisi_nottwobits patterns.
18747 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
18748 predicate to avoid splitting arith constants.
18749 (const_nottwobits_not_arith_operand): New predicate.
18750
18751 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
18752
18753 * recog.cc (peep2_attempt, peep2_update_life): Correct
18754 head-comment description of parameter match_len.
18755
18756 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
18757
18758 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
18759 riscv_split_symbol() drop in_splitter arg.
18760 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
18761 riscv_split_symbol() drop in_splitter arg.
18762 riscv_force_temporary() drop in_splitter arg.
18763 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
18764 riscv_split_symbol() drop in_splitter arg.
18765
18766 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
18767
18768 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
18769 superfluous debug temporaries for single GIMPLE assignments.
18770
18771 2023-04-25 Richard Biener <rguenther@suse.de>
18772
18773 PR tree-optimization/109609
18774 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
18775 Clarify semantics.
18776 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
18777 the size given by arg_max_access_size_given_by_arg_p as
18778 maximum, not exact, size.
18779
18780 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18781
18782 PR target/99195
18783 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
18784 (orn<mode>3<vczle><vczbe>): ... This.
18785 (bic<mode>3): Rename to...
18786 (bic<mode>3<vczle><vczbe>): ... This.
18787 (<su><maxmin><mode>3): Rename to...
18788 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
18789
18790 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18791
18792 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
18793 * config/aarch64/iterators.md (VQDIV): New mode iterator.
18794 (vnx2di): New mode attribute.
18795
18796 2023-04-25 Richard Biener <rguenther@suse.de>
18797
18798 PR rtl-optimization/109585
18799 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
18800
18801 2023-04-25 Jakub Jelinek <jakub@redhat.com>
18802
18803 PR target/109566
18804 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
18805 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
18806 is larger than signed int maximum.
18807
18808 2023-04-25 Martin Liska <mliska@suse.cz>
18809
18810 * doc/gcov.texi: Document the new "calls" field and document
18811 the API bump. Mention also "block_ids" for lines.
18812 * gcov.cc (output_intermediate_json_line): Output info about
18813 calls and extend branches as well.
18814 (generate_results): Bump version to 2.
18815 (output_line_details): Use block ID instead of a non-sensual
18816 index.
18817
18818 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
18819
18820 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
18821 length attribute for the first (memory operand) alternative.
18822
18823 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
18824
18825 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
18826 * config/aarch64/constraints.md: Make "Umn" relaxed memory
18827 constraint.
18828 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
18829
18830 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
18831
18832 * value-range.cc (frange::set): Adjust constructor.
18833 * value-range.h (nan_state::nan_state): Replace default
18834 constructor with one taking an argument.
18835
18836 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
18837
18838 * ipa-cp.cc (ipa_range_contains_p): New.
18839 (decide_whether_version_node): Use it.
18840
18841 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
18842
18843 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
18844 simplify two successive VEC_PERM_EXPRs with same VLA mask,
18845 where mask chooses elements in reverse order.
18846
18847 2023-04-24 Andrew Pinski <apinski@marvell.com>
18848
18849 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
18850 and support diamond shaped basic block form.
18851 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
18852
18853 2023-04-24 Andrew Pinski <apinski@marvell.com>
18854
18855 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18856 Instead of calling last_and_only_stmt, look for the last statement
18857 manually.
18858
18859 2023-04-24 Andrew Pinski <apinski@marvell.com>
18860
18861 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18862 New function.
18863 (match_simplify_replacement): Call
18864 empty_bb_or_one_feeding_into_p instead of doing it inline.
18865
18866 2023-04-24 Andrew Pinski <apinski@marvell.com>
18867
18868 PR tree-optimization/68894
18869 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
18870 continue for the do_hoist_loads diamond case.
18871
18872 2023-04-24 Andrew Pinski <apinski@marvell.com>
18873
18874 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
18875 code for better code readability.
18876
18877 2023-04-24 Andrew Pinski <apinski@marvell.com>
18878
18879 PR tree-optimization/109604
18880 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
18881 diamond form check from ...
18882 (minmax_replacement): Here.
18883
18884 2023-04-24 Patrick Palka <ppalka@redhat.com>
18885
18886 * tree.cc (strip_array_types): Don't define here.
18887 (is_typedef_decl): Don't define here.
18888 (typedef_variant_p): Don't define here.
18889 * tree.h (strip_array_types): Define here.
18890 (is_typedef_decl): Define here.
18891 (typedef_variant_p): Define here.
18892
18893 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
18894
18895 * doc/generic.texi (OpenMP): Add != to allowed
18896 conditions and state that vars can be unsigned.
18897 * tree.def (OMP_FOR): Likewise.
18898
18899 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18900
18901 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
18902
18903 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
18904
18905 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
18906 Remove explicit Solaris 11 references.
18907 Markup fixes.
18908 (Options specification, --with-gnu-as): as and gas always differ
18909 on Solaris.
18910 Remove /usr/ccs/bin reference.
18911 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
18912 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
18913 (*-*-solaris2*): ... here.
18914 Update bundled GCC versions.
18915 Don't refer to pre-built binaries.
18916 Remove /bin/sh warning.
18917 Update assembler, linker recommendations.
18918 Document GNAT bootstrap compiler.
18919 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
18920 (sparc64-*-solaris2*): Move content...
18921 (sparcv9-*-solaris2*): ...here.
18922 Add GDC for 64-bit bootstrap compilers.
18923
18924 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18925
18926 PR target/109406
18927 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
18928 case.
18929 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
18930 pattern.
18931
18932 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18933
18934 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
18935 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
18936 (aarch64_<su>abal2<mode>): New define_expand.
18937 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
18938 (aarch64_rtx_costs): Handle ABD rtxes.
18939 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
18940 * config/aarch64/iterators.md (ABAL2): Delete.
18941 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
18942
18943 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18944
18945 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
18946 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
18947 (<sur>sadv16qi): Rename to...
18948 (<su>sadv16qi): ... This. Adjust for the above.
18949 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
18950 (<su>sad<vsi2qi>): ... This. Adjust for the above.
18951 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
18952 * config/aarch64/iterators.md (ABAL): Delete.
18953 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
18954
18955 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18956
18957 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
18958 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
18959 (aarch64_<su>abdl2<mode>): New define_expand.
18960 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
18961 * config/aarch64/iterators.md (ABDL2): Delete.
18962 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
18963
18964 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18965
18966 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
18967 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
18968 unspec.
18969 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
18970 * config/aarch64/iterators.md (ABDL): Delete.
18971 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
18972
18973 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18974
18975 * config/aarch64/aarch64-simd.md
18976 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
18977
18978 2023-04-24 Richard Biener <rguenther@suse.de>
18979
18980 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
18981 last_stmt.
18982 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
18983 Likewise.
18984 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
18985 (set_switch_stmt_execution_predicate): Likewise.
18986 (phi_result_unknown_predicate): Likewise.
18987 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
18988 (ipa_analyze_indirect_call_uses): Likewise.
18989 * predict.cc (predict_iv_comparison): Likewise.
18990 (predict_extra_loop_exits): Likewise.
18991 (predict_loops): Likewise.
18992 (tree_predict_by_opcode): Likewise.
18993 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
18994 Likewise.
18995 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
18996 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
18997 (replace_phi_edge_with_variable): Likewise.
18998 (two_value_replacement): Likewise.
18999 (value_replacement): Likewise.
19000 (minmax_replacement): Likewise.
19001 (spaceship_replacement): Likewise.
19002 (cond_removal_in_builtin_zero_pattern): Likewise.
19003 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
19004 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
19005 (vn_phi_lookup): Likewise.
19006 (vn_phi_insert): Likewise.
19007 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
19008 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
19009 Likewise.
19010 (back_threader_profitability::possibly_profitable_path_p):
19011 Likewise.
19012 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
19013 Likewise.
19014 * tree-switch-conversion.cc (pass_convert_switch::execute):
19015 Likewise.
19016 (pass_lower_switch<O0>::execute): Likewise.
19017 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
19018 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
19019 * tree-vect-slp.cc (vect_slp_function): Likewise.
19020 * tree-vect-stmts.cc (cfun_returns): Likewise.
19021 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
19022 (vect_loop_dist_alias_call): Likewise.
19023
19024 2023-04-24 Richard Biener <rguenther@suse.de>
19025
19026 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
19027
19028 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19029
19030 * config/riscv/riscv-vsetvl.cc
19031 (vector_infos_manager::all_avail_in_compatible_p): New function.
19032 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
19033 * config/riscv/riscv-vsetvl.h: New function.
19034
19035 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19036
19037 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
19038 comment for cleanup_insns.
19039
19040 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19041
19042 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
19043 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
19044 with the fault first load property.
19045
19046 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19047
19048 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
19049 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
19050
19051 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19052
19053 PR target/99195
19054 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
19055 (aarch64_addp<mode><vczle><vczbe>): ... This.
19056
19057 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
19058
19059 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
19060 provide reasonable values for common arithmetic operations and
19061 immediate operands (in several machine modes).
19062
19063 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
19064
19065 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
19066 format specifier to output high_part register name of SImode reg.
19067 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
19068 (zero_extendqihi2): Fix lengths, consistent formatting and add
19069 "and Rx,#255" alternative, for documentation purposes.
19070 (zero_extendhisi2): New define_insn.
19071
19072 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
19073
19074 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
19075 SImode shifts by two by performing a single bit SImode shift twice.
19076
19077 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
19078
19079 PR tree-optimization/109593
19080 * value-range.cc (frange::operator==): Handle NANs.
19081
19082 2023-04-23 liuhongt <hongtao.liu@intel.com>
19083
19084 PR rtl-optimization/108707
19085 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
19086 GENERAL_REGS when preferred reg_class is not known.
19087
19088 2023-04-22 Andrew Pinski <apinski@marvell.com>
19089
19090 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
19091 Change the code around slightly to move diamond
19092 handling for do_store_elim/do_hoist_loads out of
19093 the big if/else.
19094
19095 2023-04-22 Andrew Pinski <apinski@marvell.com>
19096
19097 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
19098 Remove check on empty_block_p.
19099
19100 2023-04-22 Jakub Jelinek <jakub@redhat.com>
19101
19102 PR bootstrap/109589
19103 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
19104 * realmpfr.h (class auto_mpfr): Likewise.
19105
19106 2023-04-22 Jakub Jelinek <jakub@redhat.com>
19107
19108 PR tree-optimization/109583
19109 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
19110 if vec_mode is not VECTOR_MODE_P.
19111
19112 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
19113 Ondrej Kubanek <kubanek0ondrej@gmail.com>
19114
19115 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
19116 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
19117 loop profile and bounds after header duplication.
19118 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
19119 Break out from try_peel_loop; fix handling of 0 iterations.
19120 (try_peel_loop): Use adjust_loop_info_after_peeling.
19121
19122 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
19123
19124 PR tree-optimization/109546
19125 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
19126 not fold conditions with ADDR_EXPR early.
19127
19128 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19129
19130 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
19131 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
19132 for umax.
19133 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
19134 (*aarch64_<optab><mode>3_zero): Define.
19135 (*aarch64_<optab><mode>3_cssc): Likewise.
19136 * config/aarch64/iterators.md (maxminand): New code attribute.
19137
19138 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19139
19140 PR target/108779
19141 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
19142 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
19143 Define prototype.
19144 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
19145 (aarch64_override_options_internal): Handle the above.
19146 (aarch64_output_load_tp): New function.
19147 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
19148 aarch64_output_load_tp.
19149 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
19150 (mtp=): New option.
19151 * doc/invoke.texi (AArch64 Options): Document -mtp=.
19152
19153 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19154
19155 PR target/99195
19156 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
19157 (add_vec_concat_subst_be): Likewise.
19158 (vczle): Likewise.
19159 (vczbe): Likewise.
19160 (add<mode>3): Rename to...
19161 (add<mode>3<vczle><vczbe>): ... This.
19162 (sub<mode>3): Rename to...
19163 (sub<mode>3<vczle><vczbe>): ... This.
19164 (mul<mode>3): Rename to...
19165 (mul<mode>3<vczle><vczbe>): ... This.
19166 (and<mode>3): Rename to...
19167 (and<mode>3<vczle><vczbe>): ... This.
19168 (ior<mode>3): Rename to...
19169 (ior<mode>3<vczle><vczbe>): ... This.
19170 (xor<mode>3): Rename to...
19171 (xor<mode>3<vczle><vczbe>): ... This.
19172 * config/aarch64/iterators.md (VDZ): Define.
19173
19174 2023-04-21 Patrick Palka <ppalka@redhat.com>
19175
19176 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
19177 and type_p.
19178
19179 2023-04-21 Jan Hubicka <jh@suse.cz>
19180
19181 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
19182 commit.
19183
19184 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
19185
19186 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
19187 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
19188
19189 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19190
19191 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
19192 force_reg instead of copy_to_mode_reg.
19193 (aarch64_expand_vector_init): Likewise.
19194
19195 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
19196
19197 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
19198 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
19199 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
19200 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
19201 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
19202 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
19203 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
19204 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
19205 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
19206 * config/i386/predicates.md (index_register_operand):
19207 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
19208 * config/i386/i386.cc (ix86_legitimate_address_p): Use
19209 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
19210 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
19211
19212 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
19213 Ondrej Kubanek <kubanek0ondrej@gmail.com>
19214
19215 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
19216 latch.
19217
19218 2023-04-21 Richard Biener <rguenther@suse.de>
19219
19220 * is-a.h (safe_is_a): New.
19221
19222 2023-04-21 Richard Biener <rguenther@suse.de>
19223
19224 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
19225 (gphi_iterator::operator*): Likewise.
19226
19227 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
19228 Michal Jires <michal@jires.eu>
19229
19230 * ipa-inline.cc (class inline_badness): New class.
19231 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
19232 of sreal.
19233 (update_edge_key): Update.
19234 (lookup_recursive_calls): Likewise.
19235 (recursive_inlining): Likewise.
19236 (add_new_edges_to_heap): Likewise.
19237 (inline_small_functions): Likewise.
19238
19239 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
19240
19241 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
19242
19243 2023-04-21 Richard Biener <rguenther@suse.de>
19244
19245 PR tree-optimization/109573
19246 * tree-vect-loop.cc (vectorizable_live_operation): Allow
19247 unhandled SSA copy as well. Demote assert to checking only.
19248
19249 2023-04-21 Richard Biener <rguenther@suse.de>
19250
19251 * df-core.cc (df_analyze): Compute RPO on the reverse graph
19252 for DF_BACKWARD problems.
19253 (loop_post_order_compute): Rename to ...
19254 (loop_rev_post_order_compute): ... this, compute a RPO.
19255 (loop_inverted_post_order_compute): Rename to ...
19256 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
19257 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
19258 problems, RPO on the inverted graph for DF_BACKWARD.
19259
19260 2023-04-21 Richard Biener <rguenther@suse.de>
19261
19262 * cfganal.h (inverted_rev_post_order_compute): Rename
19263 from ...
19264 (inverted_post_order_compute): ... this. Add struct function
19265 argument, change allocation to a C array.
19266 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
19267 * lcm.cc (compute_antinout_edge): Adjust.
19268 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
19269 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
19270 * tree-ssa-pre.cc (compute_antic): Likewise.
19271
19272 2023-04-21 Richard Biener <rguenther@suse.de>
19273
19274 * df.h (df_d::postorder_inverted): Change back to int *,
19275 clarify comments.
19276 * df-core.cc (rest_of_handle_df_finish): Adjust.
19277 (df_analyze_1): Likewise.
19278 (df_analyze): For DF_FORWARD problems use RPO on the forward
19279 graph. Adjust.
19280 (loop_inverted_post_order_compute): Adjust API.
19281 (df_analyze_loop): Adjust.
19282 (df_get_n_blocks): Likewise.
19283 (df_get_postorder): Likewise.
19284
19285 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19286
19287 PR target/108270
19288 * config/riscv/riscv-vsetvl.cc
19289 (vector_infos_manager::all_empty_predecessor_p): New function.
19290 (pass_vsetvl::backward_demand_fusion): Ditto.
19291 * config/riscv/riscv-vsetvl.h: Ditto.
19292
19293 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
19294
19295 PR target/109582
19296 * config/riscv/generic.md: Change standard names to insn names.
19297
19298 2023-04-21 Richard Biener <rguenther@suse.de>
19299
19300 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
19301 (compute_laterin): Use RPO.
19302 (compute_available): Likewise.
19303
19304 2023-04-21 Peng Fan <fanpeng@loongson.cn>
19305
19306 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
19307
19308 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19309
19310 PR target/109547
19311 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
19312 (vector_insn_info::skip_avl_compatible_p): Ditto.
19313 (vector_insn_info::merge): Remove default value.
19314 (pass_vsetvl::compute_local_backward_infos): Ditto.
19315 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
19316 * config/riscv/riscv-vsetvl.h: Ditto.
19317
19318 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
19319
19320 * doc/extend.texi (Common Function Attributes): Remove duplicate
19321 word.
19322
19323 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
19324
19325 PR tree-optimization/109564
19326 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
19327 UNDEFINED range names when deciding if all PHI arguments are the same,
19328
19329 2023-04-20 Jakub Jelinek <jakub@redhat.com>
19330
19331 PR tree-optimization/109011
19332 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
19333 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
19334 .CTZ (X) = PREC - .POPCOUNT (X | -X).
19335
19336 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
19337
19338 * lra-constraints.cc (match_reload): Exclude some hard regs for
19339 multi-reg inout reload pseudos used in asm in different mode.
19340
19341 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
19342
19343 * config/arm/arm.cc (thumb1_legitimate_address_p):
19344 Use VIRTUAL_REGISTER_P predicate.
19345 (arm_eliminable_register): Ditto.
19346 * config/avr/avr.md (push<mode>_1): Ditto.
19347 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
19348 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
19349 * config/i386/predicates.md (register_no_elim_operand): Ditto.
19350 * config/iq2000/predicates.md (call_insn_operand): Ditto.
19351 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
19352
19353 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
19354
19355 PR target/78952
19356 * config/i386/predicates.md (extract_operator): New predicate.
19357 * config/i386/i386.md (any_extract): Remove code iterator.
19358 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
19359 (*cmpqi_ext<mode>_1): Ditto.
19360 (*cmpqi_ext<mode>_2): Ditto.
19361 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
19362 (*cmpqi_ext<mode>_3): Ditto.
19363 (*cmpqi_ext<mode>_4): Ditto.
19364 (*extzvqi_mem_rex64): Ditto.
19365 (*extzvqi): Ditto.
19366 (*insvqi_2): Ditto.
19367 (*extendqi<SWI24:mode>_ext_1): Ditto.
19368 (*addqi_ext<mode>_0): Ditto.
19369 (*addqi_ext<mode>_1): Ditto.
19370 (*addqi_ext<mode>_2): Ditto.
19371 (*subqi_ext<mode>_0): Ditto.
19372 (*subqi_ext<mode>_2): Ditto.
19373 (*testqi_ext<mode>_1): Ditto.
19374 (*testqi_ext<mode>_2): Ditto.
19375 (*andqi_ext<mode>_0): Ditto.
19376 (*andqi_ext<mode>_1): Ditto.
19377 (*andqi_ext<mode>_1_cc): Ditto.
19378 (*andqi_ext<mode>_2): Ditto.
19379 (*<any_or:code>qi_ext<mode>_0): Ditto.
19380 (*<any_or:code>qi_ext<mode>_1): Ditto.
19381 (*<any_or:code>qi_ext<mode>_2): Ditto.
19382 (*xorqi_ext<mode>_1_cc): Ditto.
19383 (*negqi_ext<mode>_2): Ditto.
19384 (*ashlqi_ext<mode>_2): Ditto.
19385 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
19386
19387 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
19388
19389 PR target/108248
19390 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
19391 <bitmanip_insn> as the type to allow for fine grained control of
19392 scheduling these insns.
19393 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
19394 min, max.
19395 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
19396 pcnt, signed and unsigned min/max.
19397
19398 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19399 kito-cheng <kito.cheng@sifive.com>
19400
19401 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
19402
19403 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19404 kito-cheng <kito.cheng@sifive.com>
19405
19406 PR target/109535
19407 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
19408 (pass_vsetvl::cleanup_insns): Fix bug.
19409
19410 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
19411
19412 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
19413 (ldexp<mode>3): Delete.
19414 (ldexp<mode>3<exec>): Change "B" to "A".
19415
19416 2023-04-20 Jakub Jelinek <jakub@redhat.com>
19417 Jonathan Wakely <jwakely@redhat.com>
19418
19419 * tree.h (built_in_function_equal_p): New helper function.
19420 (fndecl_built_in_p): Turn into variadic template to support
19421 1 or more built_in_function arguments.
19422 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
19423 * gimplify.cc (goa_stabilize_expr): Likewise.
19424 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
19425 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
19426 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
19427 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
19428 cgraph_update_edges_for_call_stmt_node,
19429 cgraph_edge::verify_corresponds_to_fndecl,
19430 cgraph_node::verify_node): Likewise.
19431 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
19432 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
19433 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
19434
19435 2023-04-20 Jakub Jelinek <jakub@redhat.com>
19436
19437 PR tree-optimization/109011
19438 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
19439 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
19440 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
19441 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
19442 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
19443 case.
19444 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
19445
19446 2023-04-20 Richard Biener <rguenther@suse.de>
19447
19448 * df-core.cc (rest_of_handle_df_initialize): Remove
19449 computation of df->postorder, df->postorder_inverted and
19450 df->n_blocks.
19451
19452 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19453
19454 * common/config/i386/i386-common.cc
19455 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
19456 (ix86_handle_option): Set AVX flag for VAES.
19457 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
19458 Add OPTION_MASK_ISA2_VAES_UNSET.
19459 (def_builtin): Share builtin between AES and VAES.
19460 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
19461 Ditto.
19462 * config/i386/i386.md (aes): New isa attribute.
19463 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
19464 (aesenclast): Ditto.
19465 (aesdec): Ditto.
19466 (aesdeclast): Ditto.
19467 * config/i386/vaesintrin.h: Remove redundant avx target push.
19468 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
19469 (_mm_aesdeclast_si128): Ditto.
19470 (_mm_aesenc_si128): Ditto.
19471 (_mm_aesenclast_si128): Ditto.
19472
19473 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
19474
19475 * config/i386/avx2intrin.h
19476 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
19477 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
19478 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
19479 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
19480 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
19481 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
19482 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
19483 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
19484 (_mm_reduce_add_epi16): New instrinsics.
19485 (_mm_reduce_mul_epi16): Ditto.
19486 (_mm_reduce_and_epi16): Ditto.
19487 (_mm_reduce_or_epi16): Ditto.
19488 (_mm_reduce_max_epi16): Ditto.
19489 (_mm_reduce_max_epu16): Ditto.
19490 (_mm_reduce_min_epi16): Ditto.
19491 (_mm_reduce_min_epu16): Ditto.
19492 (_mm256_reduce_add_epi16): Ditto.
19493 (_mm256_reduce_mul_epi16): Ditto.
19494 (_mm256_reduce_and_epi16): Ditto.
19495 (_mm256_reduce_or_epi16): Ditto.
19496 (_mm256_reduce_max_epi16): Ditto.
19497 (_mm256_reduce_max_epu16): Ditto.
19498 (_mm256_reduce_min_epi16): Ditto.
19499 (_mm256_reduce_min_epu16): Ditto.
19500 (_mm_reduce_add_epi8): Ditto.
19501 (_mm_reduce_mul_epi8): Ditto.
19502 (_mm_reduce_and_epi8): Ditto.
19503 (_mm_reduce_or_epi8): Ditto.
19504 (_mm_reduce_max_epi8): Ditto.
19505 (_mm_reduce_max_epu8): Ditto.
19506 (_mm_reduce_min_epi8): Ditto.
19507 (_mm_reduce_min_epu8): Ditto.
19508 (_mm256_reduce_add_epi8): Ditto.
19509 (_mm256_reduce_mul_epi8): Ditto.
19510 (_mm256_reduce_and_epi8): Ditto.
19511 (_mm256_reduce_or_epi8): Ditto.
19512 (_mm256_reduce_max_epi8): Ditto.
19513 (_mm256_reduce_max_epu8): Ditto.
19514 (_mm256_reduce_min_epi8): Ditto.
19515 (_mm256_reduce_min_epu8): Ditto.
19516 * config/i386/avx512vlbwintrin.h:
19517 (_mm_mask_reduce_add_epi16): Ditto.
19518 (_mm_mask_reduce_mul_epi16): Ditto.
19519 (_mm_mask_reduce_and_epi16): Ditto.
19520 (_mm_mask_reduce_or_epi16): Ditto.
19521 (_mm_mask_reduce_max_epi16): Ditto.
19522 (_mm_mask_reduce_max_epu16): Ditto.
19523 (_mm_mask_reduce_min_epi16): Ditto.
19524 (_mm_mask_reduce_min_epu16): Ditto.
19525 (_mm256_mask_reduce_add_epi16): Ditto.
19526 (_mm256_mask_reduce_mul_epi16): Ditto.
19527 (_mm256_mask_reduce_and_epi16): Ditto.
19528 (_mm256_mask_reduce_or_epi16): Ditto.
19529 (_mm256_mask_reduce_max_epi16): Ditto.
19530 (_mm256_mask_reduce_max_epu16): Ditto.
19531 (_mm256_mask_reduce_min_epi16): Ditto.
19532 (_mm256_mask_reduce_min_epu16): Ditto.
19533 (_mm_mask_reduce_add_epi8): Ditto.
19534 (_mm_mask_reduce_mul_epi8): Ditto.
19535 (_mm_mask_reduce_and_epi8): Ditto.
19536 (_mm_mask_reduce_or_epi8): Ditto.
19537 (_mm_mask_reduce_max_epi8): Ditto.
19538 (_mm_mask_reduce_max_epu8): Ditto.
19539 (_mm_mask_reduce_min_epi8): Ditto.
19540 (_mm_mask_reduce_min_epu8): Ditto.
19541 (_mm256_mask_reduce_add_epi8): Ditto.
19542 (_mm256_mask_reduce_mul_epi8): Ditto.
19543 (_mm256_mask_reduce_and_epi8): Ditto.
19544 (_mm256_mask_reduce_or_epi8): Ditto.
19545 (_mm256_mask_reduce_max_epi8): Ditto.
19546 (_mm256_mask_reduce_max_epu8): Ditto.
19547 (_mm256_mask_reduce_min_epi8): Ditto.
19548 (_mm256_mask_reduce_min_epu8): Ditto.
19549
19550 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19551
19552 * common/config/i386/i386-common.cc
19553 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
19554 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
19555 (OPTION_MASK_ISA_AVX_UNSET):
19556 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
19557 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
19558 * config/i386/i386.md (vpclmulqdqvl): New.
19559 * config/i386/sse.md (pclmulqdq): Add evex encoding.
19560 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
19561 push.
19562
19563 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19564
19565 * config/i386/avx512vlbwintrin.h
19566 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
19567 (_mm_mask_blend_epi8): Ditto.
19568 (_mm256_mask_blend_epi16): Ditto.
19569 (_mm256_mask_blend_epi8): Ditto.
19570 * config/i386/avx512vlintrin.h
19571 (_mm256_mask_blend_pd): Ditto.
19572 (_mm256_mask_blend_ps): Ditto.
19573 (_mm256_mask_blend_epi64): Ditto.
19574 (_mm256_mask_blend_epi32): Ditto.
19575 (_mm_mask_blend_pd): Ditto.
19576 (_mm_mask_blend_ps): Ditto.
19577 (_mm_mask_blend_epi64): Ditto.
19578 (_mm_mask_blend_epi32): Ditto.
19579 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
19580 (VF_AVX512HFBFVL): Move it before the first usage.
19581 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
19582 to VF_AVX512HFBFVL.
19583
19584 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19585
19586 * common/config/i386/i386-common.cc
19587 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
19588 to OPTION_MASK_ISA_AVX512BW_SET.
19589 (OPTION_MASK_ISA_AVX512F_UNSET):
19590 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
19591 (OPTION_MASK_ISA_AVX512BW_UNSET):
19592 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
19593 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
19594 * config/i386/avx512vbmi2vlintrin.h: Ditto.
19595 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
19596 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
19597 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
19598 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
19599 VI12_AVX512VL.
19600 (compressstore<mode>_mask): Ditto.
19601 (expand<mode>_mask): Ditto.
19602 (expand<mode>_maskz): Ditto.
19603 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
19604 VI12_VI48F_AVX512VL.
19605
19606 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19607
19608 * common/config/i386/i386-common.cc
19609 (OPTION_MASK_ISA_AVX512BITALG_SET):
19610 Change OPTION_MASK_ISA_AVX512F_SET
19611 to OPTION_MASK_ISA_AVX512BW_SET.
19612 (OPTION_MASK_ISA_AVX512F_UNSET):
19613 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
19614 (OPTION_MASK_ISA_AVX512BW_UNSET):
19615 Add OPTION_MASK_ISA_AVX512BITALG_SET.
19616 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
19617 * config/i386/i386-builtin.def:
19618 Remove redundant OPTION_MASK_ISA_AVX512BW.
19619 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
19620 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
19621 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
19622
19623 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19624
19625 * config/i386/i386-expand.cc
19626 (ix86_check_builtin_isa_match): Correct wrong comments.
19627 Add a new macro SHARE_BUILTIN and refactor the current if
19628 clauses to macro.
19629
19630 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
19631
19632 * config/i386/cpuid.h: Open a new section for Extended Features
19633 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
19634 %ecx == 1).
19635
19636 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
19637
19638 * config/i386/sse.md: Modify insn vperm{i,f}
19639 and vshuf{i,f}.
19640
19641 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
19642
19643 * config/xtensa/xtensa-opts.h: New header.
19644 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
19645 xtensa_strict_align.
19646 * config/xtensa/xtensa.cc (xtensa_option_override): When
19647 -m[no-]strict-align is not specified in the command line set
19648 xtensa_strict_align to 0 if the hardware supports both unaligned
19649 loads and stores or to 1 otherwise.
19650 * config/xtensa/xtensa.opt (mstrict-align): New option.
19651 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
19652
19653 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
19654
19655 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
19656 function.
19657
19658 2023-04-19 Andrew Pinski <apinski@marvell.com>
19659
19660 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
19661
19662 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19663
19664 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
19665 (VECTOR_BOOL_MODE): Ditto.
19666 (ADJUST_NUNITS): Ditto.
19667 (ADJUST_ALIGNMENT): Ditto.
19668 (ADJUST_BYTESIZE): Ditto.
19669 (ADJUST_PRECISION): Ditto.
19670 (RVV_MODES): Ditto.
19671 (VECTOR_MODE_WITH_PREFIX): Ditto.
19672 * config/riscv/riscv-v.cc (ENTRY): Ditto.
19673 (get_vlmul): Ditto.
19674 (get_ratio): Ditto.
19675 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
19676 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
19677 (vbool64_t): Ditto.
19678 (vbool32_t): Ditto.
19679 (vbool16_t): Ditto.
19680 (vbool8_t): Ditto.
19681 (vbool4_t): Ditto.
19682 (vbool2_t): Ditto.
19683 (vbool1_t): Ditto.
19684 (vint8mf8_t): Ditto.
19685 (vuint8mf8_t): Ditto.
19686 (vint8mf4_t): Ditto.
19687 (vuint8mf4_t): Ditto.
19688 (vint8mf2_t): Ditto.
19689 (vuint8mf2_t): Ditto.
19690 (vint8m1_t): Ditto.
19691 (vuint8m1_t): Ditto.
19692 (vint8m2_t): Ditto.
19693 (vuint8m2_t): Ditto.
19694 (vint8m4_t): Ditto.
19695 (vuint8m4_t): Ditto.
19696 (vint8m8_t): Ditto.
19697 (vuint8m8_t): Ditto.
19698 (vint16mf4_t): Ditto.
19699 (vuint16mf4_t): Ditto.
19700 (vint16mf2_t): Ditto.
19701 (vuint16mf2_t): Ditto.
19702 (vint16m1_t): Ditto.
19703 (vuint16m1_t): Ditto.
19704 (vint16m2_t): Ditto.
19705 (vuint16m2_t): Ditto.
19706 (vint16m4_t): Ditto.
19707 (vuint16m4_t): Ditto.
19708 (vint16m8_t): Ditto.
19709 (vuint16m8_t): Ditto.
19710 (vint32mf2_t): Ditto.
19711 (vuint32mf2_t): Ditto.
19712 (vint32m1_t): Ditto.
19713 (vuint32m1_t): Ditto.
19714 (vint32m2_t): Ditto.
19715 (vuint32m2_t): Ditto.
19716 (vint32m4_t): Ditto.
19717 (vuint32m4_t): Ditto.
19718 (vint32m8_t): Ditto.
19719 (vuint32m8_t): Ditto.
19720 (vint64m1_t): Ditto.
19721 (vuint64m1_t): Ditto.
19722 (vint64m2_t): Ditto.
19723 (vuint64m2_t): Ditto.
19724 (vint64m4_t): Ditto.
19725 (vuint64m4_t): Ditto.
19726 (vint64m8_t): Ditto.
19727 (vuint64m8_t): Ditto.
19728 (vfloat32mf2_t): Ditto.
19729 (vfloat32m1_t): Ditto.
19730 (vfloat32m2_t): Ditto.
19731 (vfloat32m4_t): Ditto.
19732 (vfloat32m8_t): Ditto.
19733 (vfloat64m1_t): Ditto.
19734 (vfloat64m2_t): Ditto.
19735 (vfloat64m4_t): Ditto.
19736 (vfloat64m8_t): Ditto.
19737 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
19738 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
19739 (riscv_convert_vector_bits): Ditto.
19740 * config/riscv/riscv.md:
19741 * config/riscv/vector-iterators.md:
19742 * config/riscv/vector.md
19743 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19744 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
19745 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19746 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
19747 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
19748 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
19749 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
19750 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
19751 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
19752
19753 2023-04-19 Pan Li <pan2.li@intel.com>
19754
19755 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
19756 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
19757
19758 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
19759
19760 PR target/78904
19761 PR target/78952
19762 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
19763 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
19764 for operand 0. Use any_extract code iterator.
19765 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
19766 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
19767 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
19768 (*cmpqi_ext<mode>_1): Use general_operand predicate
19769 for operand 1. Use any_extract code iterator.
19770 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
19771 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
19772
19773 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19774
19775 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
19776 (aarch64_uaddw2<mode>): Delete.
19777 (aarch64_ssubw2<mode>): Delete.
19778 (aarch64_usubw2<mode>): Delete.
19779 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
19780
19781 2023-04-19 Richard Biener <rguenther@suse.de>
19782
19783 * tree-ssa-structalias.cc (do_ds_constraint): Use
19784 solve_add_graph_edge.
19785
19786 2023-04-19 Richard Biener <rguenther@suse.de>
19787
19788 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
19789 split out from ...
19790 (do_sd_constraint): ... here.
19791
19792 2023-04-19 Richard Biener <rguenther@suse.de>
19793
19794 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
19795 rejecting the merge when A contains only a non-local label.
19796
19797 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
19798
19799 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
19800 (VIRTUAL_REGISTER_NUM_P): Ditto.
19801 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
19802 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
19803 * function.cc (instantiate_decl_rtl): Ditto.
19804 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
19805 (nonzero_address_p): Ditto.
19806 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
19807
19808 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
19809
19810 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
19811
19812 2023-04-19 Richard Biener <rguenther@suse.de>
19813
19814 * system.h (auto_mpz::operator->()): New.
19815 * realmpfr.h (auto_mpfr::operator->()): New.
19816 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
19817 * real.cc (real_from_string): Likewise.
19818 (dconst_e_ptr): Likewise.
19819 (dconst_sqrt2_ptr): Likewise.
19820 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
19821 Use auto_mpz.
19822 (bound_difference_of_offsetted_base): Likewise.
19823 (number_of_iterations_ne): Likewise.
19824 (number_of_iterations_lt_to_ne): Likewise.
19825 * ubsan.cc: Include realmpfr.h.
19826 (ubsan_instrument_float_cast): Use auto_mpfr.
19827
19828 2023-04-19 Richard Biener <rguenther@suse.de>
19829
19830 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
19831 edges, remove edges from escaped after special-casing them.
19832
19833 2023-04-19 Richard Biener <rguenther@suse.de>
19834
19835 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
19836 special casing.
19837
19838 2023-04-19 Richard Biener <rguenther@suse.de>
19839
19840 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
19841 to the LHS varinfo solution member.
19842
19843 2023-04-19 Richard Biener <rguenther@suse.de>
19844
19845 * tree-ssa-structalias.cc (topo_visit): Look at the real
19846 destination of edges.
19847
19848 2023-04-19 Richard Biener <rguenther@suse.de>
19849
19850 PR tree-optimization/44794
19851 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
19852 If an epilogue loop is required set its iteration upper bound.
19853
19854 2023-04-19 Xi Ruoyao <xry111@xry111.site>
19855
19856 PR target/109465
19857 * config/loongarch/loongarch-protos.h
19858 (loongarch_expand_block_move): Add a parameter as alignment RTX.
19859 * config/loongarch/loongarch.h:
19860 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
19861 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
19862 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
19863 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
19864 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
19865 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
19866 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
19867 Take the alignment from the parameter, but set it to
19868 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
19869 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
19870 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
19871 (loongarch_block_move_straight): When there are left-over bytes,
19872 half the mode size instead of falling back to byte mode at once.
19873 (loongarch_block_move_loop): Limit the length of loop body with
19874 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
19875 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
19876 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
19877 to loongarch_expand_block_move.
19878
19879 2023-04-19 Xi Ruoyao <xry111@xry111.site>
19880
19881 * config/loongarch/loongarch.cc
19882 (loongarch_setup_incoming_varargs): Don't save more GARs than
19883 cfun->va_list_gpr_size / UNITS_PER_WORD.
19884
19885 2023-04-19 Richard Biener <rguenther@suse.de>
19886
19887 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
19888 no epilogue condition.
19889
19890 2023-04-19 Richard Biener <rguenther@suse.de>
19891
19892 * gimple.h (gimple_assign_load): Outline...
19893 * gimple.cc (gimple_assign_load): ... here. Avoid
19894 get_base_address and instead just strip the outermost
19895 handled component, treating a remaining handled component
19896 as load.
19897
19898 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19899
19900 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
19901 definition.
19902 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
19903
19904 2023-04-19 Jakub Jelinek <jakub@redhat.com>
19905
19906 PR tree-optimization/109011
19907 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
19908 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
19909 CLZ, CTZ and FFS. Remove vargs variable, use
19910 gimple_build_call_internal rather than gimple_build_call_internal_vec.
19911 (vect_vect_recog_func_ptrs): Adjust popcount entry.
19912
19913 2023-04-19 Jakub Jelinek <jakub@redhat.com>
19914
19915 PR target/109040
19916 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
19917 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
19918 a new REG rather than the SUBREG.
19919
19920 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19921
19922 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
19923 New pattern.
19924
19925 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19926
19927 PR target/108840
19928 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
19929 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
19930
19931 2023-04-19 Richard Biener <rguenther@suse.de>
19932
19933 PR rtl-optimization/109237
19934 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
19935 TREE_VISITED on INSN_VAR_LOCATION_DECL.
19936 (delete_trivially_dead_insns): Maintain TREE_VISITED on
19937 active debug bind INSN_VAR_LOCATION_DECL.
19938
19939 2023-04-19 Richard Biener <rguenther@suse.de>
19940
19941 PR rtl-optimization/109237
19942 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19943
19944 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
19945
19946 * doc/install.texi (enable-decimal-float): Add AArch64.
19947
19948 2023-04-19 liuhongt <hongtao.liu@intel.com>
19949
19950 PR rtl-optimization/109351
19951 * ira.cc (setup_class_subset_and_memory_move_costs): Check
19952 hard_regno_mode_ok before setting lowest memory move cost for
19953 the mode with different reg classes.
19954
19955 2023-04-18 Jason Merrill <jason@redhat.com>
19956
19957 * doc/invoke.texi: Remove stray @gol.
19958
19959 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19960
19961 * ifcvt.cc (cond_move_process_if_block): Consider the result of
19962 targetm.noce_conversion_profitable_p() when replacing the original
19963 sequence with the converted one.
19964
19965 2023-04-18 Mark Harmstone <mark@harmstone.com>
19966
19967 * common.opt (gcodeview): Add new option.
19968 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
19969 * opts.cc (command_handle_option): Similarly.
19970 * doc/invoke.texi: Add documentation for -gcodeview.
19971
19972 2023-04-18 Andrew Pinski <apinski@marvell.com>
19973
19974 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
19975 (make_pass_phiopt): Make execute out of line.
19976 (tree_ssa_cs_elim): Move code into ...
19977 (pass_cselim::execute): here.
19978
19979 2023-04-18 Sam James <sam@gentoo.org>
19980
19981 * system.h: Drop unused INCLUDE_PTHREAD_H.
19982
19983 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
19984
19985 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
19986 condition.
19987
19988 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
19989
19990 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
19991 (bswapdi2, bswapsi2): Similarly.
19992
19993 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
19994
19995 PR target/94908
19996 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
19997 Use CODE_FOR_sse4_1_insertps_v4sf.
19998 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
19999 (expand_vec_perm_1): Call expand_vec_per_insertps.
20000 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
20001 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
20002 (@sse4_1_insertps_<mode>): New insn pattern.
20003 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
20004 pattern from sse4_1_insertps using VI4F_128 mode iterator.
20005
20006 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20007
20008 * value-range.cc (gt_ggc_mx): New.
20009 (gt_pch_nx): New.
20010 * value-range.h (class vrange): Add GTY marker.
20011 (class frange): Same.
20012 (gt_ggc_mx): Remove.
20013 (gt_pch_nx): Remove.
20014
20015 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
20016
20017 * lra-constraints.cc (constraint_unique): New.
20018 (process_address_1): Apply constraint_unique test.
20019 * recog.cc (constrain_operands): Allow relaxed memory
20020 constaints.
20021
20022 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
20023
20024 * doc/extend.texi (Target Builtins): Add RISC-V Vector
20025 Intrinsics.
20026 (RISC-V Vector Intrinsics): Document GCC implemented which
20027 version of RISC-V vector intrinsics and its reference.
20028
20029 2023-04-18 Richard Biener <rguenther@suse.de>
20030
20031 PR middle-end/108786
20032 * bitmap.h (bitmap_clear_first_set_bit): New.
20033 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
20034 bitmap_first_set_bit and add optional clearing of the bit.
20035 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
20036 (bitmap_clear_first_set_bit): Likewise.
20037 * df-core.cc (df_worklist_dataflow_doublequeue): Use
20038 bitmap_clear_first_set_bit.
20039 * graphite-scop-detection.cc (scop_detection::merge_sese):
20040 Likewise.
20041 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
20042 (sanitize_asan_mark_poison): Likewise.
20043 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
20044 * tree-into-ssa.cc (rewrite_blocks): Likewise.
20045 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
20046 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
20047
20048 2023-04-18 Richard Biener <rguenther@suse.de>
20049
20050 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
20051 (dump_sa_points_to_info): ... this function.
20052 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
20053 and call dump_sa_stats guarded with TDF_STATS.
20054 (ipa_pta_execute): Likewise.
20055 (compute_may_aliases): Guard dump_alias_info with
20056 TDF_DETAILS|TDF_ALIAS.
20057
20058 2023-04-18 Andrew Pinski <apinski@marvell.com>
20059
20060 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
20061 the expression that is being tried when TDF_FOLDING
20062 is true.
20063 (phiopt_worker::match_simplify_replacement): Dump
20064 the sequence which was created by gimple_simplify_phiopt
20065 when TDF_FOLDING is true.
20066
20067 2023-04-18 Andrew Pinski <apinski@marvell.com>
20068
20069 * tree-ssa-phiopt.cc (match_simplify_replacement):
20070 Simplify code that does the movement slightly.
20071
20072 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20073
20074 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
20075 define_expand.
20076 (rev16<mode>2): Rename to...
20077 (aarch64_rev16<mode>2_alt1): ... This.
20078 (rev16<mode>2_alt): Rename to...
20079 (*aarch64_rev16<mode>2_alt2): ... This.
20080
20081 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20082
20083 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
20084 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
20085 declaration.
20086 * range-op-float.cc (zero_range): Use dconstm0.
20087 (zero_to_inf_range): Same.
20088 * real.h (dconstm0): New.
20089 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
20090 (frange::set_zero): Do not declare dconstm0.
20091
20092 2023-04-18 Richard Biener <rguenther@suse.de>
20093
20094 * system.h (class auto_mpz): New,
20095 * realmpfr.h (class auto_mpfr): Likewise.
20096 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
20097 (do_mpfr_arg2): Likewise.
20098 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
20099
20100 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20101
20102 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
20103 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
20104
20105 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20106
20107 * value-range.cc (frange::operator==): Adjust for NAN.
20108 (range_tests_nan): Remove some NAN tests.
20109
20110 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20111
20112 * inchash.cc (hash::add_real_value): New.
20113 * inchash.h (class hash): Add add_real_value.
20114 * value-range.cc (add_vrange): New.
20115 * value-range.h (inchash::add_vrange): New.
20116
20117 2023-04-18 Richard Biener <rguenther@suse.de>
20118
20119 PR tree-optimization/109539
20120 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
20121 Re-implement pointer relatedness for PHIs.
20122
20123 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
20124
20125 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
20126 (SV_FP): New iterator.
20127 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
20128 (recip<mode>2): Unify the two patterns using SV_FP.
20129 (div_scale<mode><exec_vcc>): New insn.
20130 (div_fmas<mode><exec>): New insn.
20131 (div_fixup<mode><exec>): New insn.
20132 (div<mode>3): Unify the two expanders and rewrite using hardfp.
20133 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
20134 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
20135 and UNSPEC_DIV_FIXUP.
20136 (vccwait): New attribute.
20137
20138 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20139
20140 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
20141 if the argument matches that.
20142
20143 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20144
20145 * config/aarch64/atomics.md
20146 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
20147 Use SD_HSDI for destination mode iterator.
20148
20149 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
20150
20151 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
20152 of z-extensions and s-extensions.
20153 (riscv_subset_list::parse): Likewise.
20154
20155 2023-04-18 Jakub Jelinek <jakub@redhat.com>
20156
20157 PR tree-optimization/109240
20158 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
20159 first vec_perm operand and minus as second using fneg/fadd and
20160 minus as first vec_perm operand and plus as second using fneg/fsub.
20161
20162 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20163
20164 * data-streamer.cc (bp_pack_real_value): New.
20165 (bp_unpack_real_value): New.
20166 * data-streamer.h (bp_pack_real_value): New.
20167 (bp_unpack_real_value): New.
20168 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
20169 bp_unpack_real_value.
20170 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
20171 bp_pack_real_value.
20172
20173 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20174
20175 * wide-int.h (WIDE_INT_MAX_HWIS): New.
20176 (class fixed_wide_int_storage): Use it.
20177 (trailing_wide_ints <N>::set_precision): Use it.
20178 (trailing_wide_ints <N>::extra_size): Use it.
20179
20180 2023-04-18 Xi Ruoyao <xry111@xry111.site>
20181
20182 * config/loongarch/loongarch-protos.h
20183 (loongarch_addu16i_imm12_operand_p): New function prototype.
20184 (loongarch_split_plus_constant): Likewise.
20185 * config/loongarch/loongarch.cc
20186 (loongarch_addu16i_imm12_operand_p): New function.
20187 (loongarch_split_plus_constant): Likewise.
20188 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
20189 (DUAL_IMM12_OPERAND): Likewise.
20190 (DUAL_ADDU16I_OPERAND): Likewise.
20191 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
20192 constraint.
20193 * config/loongarch/predicates.md (const_dual_imm12_operand): New
20194 predicate.
20195 (const_addu16i_operand): Likewise.
20196 (const_addu16i_imm12_di_operand): Likewise.
20197 (const_addu16i_imm12_si_operand): Likewise.
20198 (plus_di_operand): Likewise.
20199 (plus_si_operand): Likewise.
20200 (plus_si_extend_operand): Likewise.
20201 * config/loongarch/loongarch.md (add<mode>3): Convert to
20202 define_insn_and_split. Use plus_<mode>_operand predicate
20203 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
20204 and Le constraints.
20205 (*addsi3_extended): Convert to define_insn_and_split. Use
20206 plus_si_extend_operand instead of arith_operand. Add
20207 alternatives for La and Le alternatives.
20208
20209 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20210
20211 * value-range.h (Value_Range::Value_Range): New.
20212 (Value_Range::contains_p): New.
20213
20214 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20215
20216 * value-range.h (class vrange): Make m_discriminator const.
20217 (class irange): Make m_max_ranges const. Adjust constructors
20218 accordingly.
20219 (class unsupported_range): Construct vrange appropriately.
20220 (class frange): Same.
20221
20222 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
20223
20224 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
20225 definition.
20226
20227 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
20228
20229 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
20230
20231 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
20232
20233 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
20234 readable.
20235 (riscv_expand_epilogue): Likewise.
20236
20237 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
20238
20239 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
20240 stack allocation.
20241 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
20242
20243 2023-04-17 Andrew Pinski <apinski@marvell.com>
20244
20245 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
20246 prototype.
20247
20248 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
20249
20250 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
20251 global ranges.
20252
20253 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
20254
20255 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
20256 parameter remaining_size.
20257 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
20258 (riscv_expand_prologue): Likewise.
20259 (riscv_expand_epilogue): Likewise.
20260
20261 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
20262
20263 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
20264 roriw for constant counts.
20265 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
20266 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
20267 (simplify_context::simplify_binary_operation_1): Use it.
20268 * expmed.cc (expand_shift_1): Likewise.
20269
20270 2023-04-17 Martin Jambor <mjambor@suse.cz>
20271
20272 PR ipa/107769
20273 PR ipa/109318
20274 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
20275 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
20276 (ipa_zap_jf_refdesc): New function.
20277 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
20278 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
20279 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
20280 the new parameter of find_reference.
20281 (adjust_references_in_caller): Likewise. Make sure the constant jump
20282 function is not used to decrement a refdec counter again. Only
20283 decrement refdesc counters when the pass_through jump function allows
20284 it. Added a detailed dump when decrementing refdesc counters.
20285 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
20286 (ipa_set_jf_simple_pass_through): Initialize the new flag.
20287 (ipa_set_jf_unary_pass_through): Likewise.
20288 (ipa_set_jf_arith_pass_through): Likewise.
20289 (remove_described_reference): Provide a value for the new parameter of
20290 find_reference.
20291 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
20292 the previous pass_through had a flag mandating that we do so.
20293 (propagate_controlled_uses): Likewise. Only decrement refdesc
20294 counters when the pass_through jump function allows it.
20295 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
20296 parameter of find_reference.
20297 (ipa_write_jump_function): Assert the new flag does not have to be
20298 streamed.
20299 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
20300 it in searching.
20301
20302 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
20303 Di Zhao <di.zhao@amperecomputing.com>
20304
20305 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
20306 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
20307 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
20308 Check for the above tuning option when processing loads.
20309
20310 2023-04-17 Richard Biener <rguenther@suse.de>
20311
20312 PR tree-optimization/109524
20313 * tree-vrp.cc (remove_unreachable::m_list): Change to a
20314 vector of pairs of block indices.
20315 (remove_unreachable::maybe_register_block): Adjust.
20316 (remove_unreachable::remove_and_update_globals): Likewise.
20317 Deal with removed blocks.
20318
20319 2023-04-16 Jeff Law <jlaw@ventanamicro>
20320
20321 PR target/109508
20322 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
20323 TARGET_SFB_ALU, force the true arm into a register.
20324
20325 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
20326
20327 PR target/104989
20328 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
20329 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
20330 size is zero.
20331 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
20332 (pa_function_arg_size): Change return type to int. Return zero
20333 for arguments larger than 1 GB. Update comments.
20334
20335 2023-04-15 Jakub Jelinek <jakub@redhat.com>
20336
20337 PR tree-optimization/109154
20338 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
20339 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
20340
20341 2023-04-15 Jason Merrill <jason@redhat.com>
20342
20343 PR c++/109514
20344 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
20345 Overhaul lhs_ref.ref analysis.
20346
20347 2023-04-14 Richard Biener <rguenther@suse.de>
20348
20349 PR tree-optimization/109502
20350 * tree-vect-stmts.cc (vectorizable_assignment): Fix
20351 check for conversion between mask and non-mask types.
20352
20353 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
20354 Jakub Jelinek <jakub@redhat.com>
20355
20356 PR target/108947
20357 PR target/109040
20358 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
20359 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
20360 smaller than word_mode.
20361 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
20362 <case AND>: Likewise.
20363
20364 2023-04-14 Jakub Jelinek <jakub@redhat.com>
20365
20366 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
20367 of GEN_INT.
20368
20369 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
20370
20371 PR tree-optimization/108139
20372 PR tree-optimization/109462
20373 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
20374 equivalency check for PHI nodes.
20375 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
20376 does not dominate single-arg equivalency edges.
20377
20378 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
20379
20380 PR target/108910
20381 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
20382 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
20383
20384 2023-04-13 Richard Biener <rguenther@suse.de>
20385
20386 PR tree-optimization/109491
20387 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
20388 NULL operands test.
20389
20390 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20391
20392 PR target/109479
20393 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
20394 (vint16mf4_t): Ditto.
20395 (vint32mf2_t): Ditto.
20396 (vint64m1_t): Ditto.
20397 (vint64m2_t): Ditto.
20398 (vint64m4_t): Ditto.
20399 (vint64m8_t): Ditto.
20400 (vuint8mf8_t): Ditto.
20401 (vuint16mf4_t): Ditto.
20402 (vuint32mf2_t): Ditto.
20403 (vuint64m1_t): Ditto.
20404 (vuint64m2_t): Ditto.
20405 (vuint64m4_t): Ditto.
20406 (vuint64m8_t): Ditto.
20407 (vfloat32mf2_t): Ditto.
20408 (vbool64_t): Ditto.
20409 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
20410 (register_vector_type): Ditto.
20411 (check_required_extensions): Fix condition.
20412 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
20413 (RVV_REQUIRE_ELEN_64): New define.
20414 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
20415 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
20416 (TARGET_VECTOR_FP64): Ditto.
20417 (ENTRY): Fix predicate.
20418 * config/riscv/vector-iterators.md: Fix predicate.
20419
20420 2023-04-12 Jakub Jelinek <jakub@redhat.com>
20421
20422 PR tree-optimization/109410
20423 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
20424 block if first statement of the function is a call to returns_twice
20425 function.
20426
20427 2023-04-12 Jakub Jelinek <jakub@redhat.com>
20428
20429 PR target/109458
20430 * config/i386/i386.cc: Include rtl-error.h.
20431 (ix86_print_operand): For z modifier warning, use warning_for_asm
20432 if this_is_asm_operands. For Z modifier errors, use %c and code
20433 instead of hardcoded Z.
20434
20435 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
20436
20437 * config/i386/x-mingw32-utf8: Remove extrataneous $@
20438
20439 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
20440
20441 PR tree-optimization/109462
20442 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
20443 check for equivalences if NAME is a phi node.
20444
20445 2023-04-12 Richard Biener <rguenther@suse.de>
20446
20447 PR tree-optimization/109473
20448 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
20449 Convert scalar result to the computation type before performing
20450 the reduction adjustment.
20451
20452 2023-04-12 Richard Biener <rguenther@suse.de>
20453
20454 PR tree-optimization/109469
20455 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
20456 a returns-twice call.
20457
20458 2023-04-12 Richard Biener <rguenther@suse.de>
20459
20460 PR tree-optimization/109434
20461 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
20462 handle possibly throwing calls when processing the LHS
20463 and may-defs are not OK.
20464
20465 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
20466
20467 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
20468 predicate to avoid splitting arith constants.
20469
20470 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
20471 Pan Li <pan2.li@intel.com>
20472 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20473 Kito Cheng <kito.cheng@sifive.com>
20474
20475 PR target/109104
20476 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
20477 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
20478 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
20479 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
20480 (riscv_zero_call_used_regs): New.
20481 (TARGET_ZERO_CALL_USED_REGS): New.
20482
20483 2023-04-11 Martin Liska <mliska@suse.cz>
20484
20485 PR driver/108241
20486 * opts.cc (finish_options): Drop also
20487 x_flag_var_tracking_assignments.
20488
20489 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
20490
20491 PR tree-optimization/108888
20492 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
20493
20494 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
20495
20496 PR target/108812
20497 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
20498 (vsx_sign_extend_v16qi_<mode>): ... this.
20499 (vsx_sign_extend_hi_<mode>): Rename to...
20500 (vsx_sign_extend_v8hi_<mode>): ... this.
20501 (vsx_sign_extend_si_v2di): Rename to...
20502 (vsx_sign_extend_v4si_v2di): ... this.
20503 (vsignextend_qi_<mode>): Remove.
20504 (vsignextend_hi_<mode>): Remove.
20505 (vsignextend_si_v2di): Remove.
20506 (vsignextend_v2di_v1ti): Remove.
20507 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
20508 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
20509 with gen_vsx_sign_extend_v16qi_v4si.
20510 * config/rs6000/rs6000.md (split for DI constant generation):
20511 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
20512 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
20513 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
20514 with gen_vsx_sign_extend_v16qi_si.
20515 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
20516 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
20517 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
20518 vsx_sign_extend_v16qi_v4si.
20519 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
20520 vsx_sign_extend_v8hi_v2di.
20521 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
20522 vsx_sign_extend_v8hi_v4si.
20523 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
20524 vsx_sign_extend_si_v2di.
20525 (__builtin_altivec_vsignext): Set bif-pattern to
20526 vsx_sign_extend_v2di_v1ti.
20527 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
20528 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
20529 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
20530 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
20531
20532 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
20533
20534 PR target/70243
20535 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
20536 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
20537
20538 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
20539
20540 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
20541
20542 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
20543
20544 * common/config/i386/cpuinfo.h (get_available_features):
20545 Detect AMX-COMPLEX.
20546 * common/config/i386/i386-common.cc
20547 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
20548 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
20549 (ix86_handle_option): Handle -mamx-complex.
20550 * common/config/i386/i386-cpuinfo.h (enum processor_features):
20551 Add FEATURE_AMX_COMPLEX.
20552 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
20553 amx-complex.
20554 * config.gcc: Add amxcomplexintrin.h.
20555 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
20556 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
20557 __AMX_COMPLEX__.
20558 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
20559 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
20560 Handle amx-complex.
20561 * config/i386/i386.opt: Add option -mamx-complex.
20562 * config/i386/immintrin.h: Include amxcomplexintrin.h.
20563 * doc/extend.texi: Document amx-complex.
20564 * doc/invoke.texi: Document -mamx-complex.
20565 * doc/sourcebuild.texi: Document target amx-complex.
20566 * config/i386/amxcomplexintrin.h: New file.
20567
20568 2023-04-08 Jakub Jelinek <jakub@redhat.com>
20569
20570 PR tree-optimization/109392
20571 * tree-vect-generic.cc (tree_vec_extract): Handle failure
20572 of maybe_push_res_to_seq better.
20573
20574 2023-04-08 Jakub Jelinek <jakub@redhat.com>
20575
20576 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
20577 poly-int-types.h.
20578 (SYSTEM_H): Depend on $(HASHTAB_H).
20579 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
20580 dependency on $(RTL_BASE_H), remove redundant dependency on
20581 insn-modes.h.
20582
20583 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
20584
20585 PR target/107674
20586 * config/arm/arm.cc (arm_effective_regno): New function.
20587 (mve_vector_mem_operand): Use it.
20588
20589 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
20590
20591 PR tree-optimization/109417
20592 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
20593 dependency is in SSA_NAME_FREE_LIST.
20594
20595 2023-04-06 Andrew Pinski <apinski@marvell.com>
20596
20597 PR tree-optimization/109427
20598 * params.opt (-param=vect-induction-float=):
20599 Fix option attribute typo for IntegerRange.
20600
20601 2023-04-05 Jeff Law <jlaw@ventanamicro>
20602
20603 PR target/108892
20604 * combine.cc (combine_instructions): Force re-recognition when
20605 after restoring the body of an insn to its original form.
20606
20607 2023-04-05 Martin Jambor <mjambor@suse.cz>
20608
20609 PR ipa/108959
20610 * ipa-sra.cc (zap_useless_ipcp_results): New function.
20611 (process_isra_node_results): Call it.
20612
20613 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20614
20615 * config/riscv/vector.md: Fix incorrect operand order.
20616
20617 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20618
20619 * config/riscv/riscv-vsetvl.cc
20620 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
20621 demand fusion.
20622
20623 2023-04-05 Li Xu <xuli1@eswincomputing.com>
20624
20625 * config/riscv/riscv-vector-builtins.def: Fix typo.
20626 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
20627 * config/riscv/vector-iterators.md: Ditto.
20628
20629 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
20630
20631 * doc/md.texi (Including Patterns): Fix page break.
20632
20633 2023-04-04 Jakub Jelinek <jakub@redhat.com>
20634
20635 PR tree-optimization/109386
20636 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
20637 foperator_le::op1_range, foperator_le::op2_range,
20638 foperator_gt::op1_range, foperator_gt::op2_range,
20639 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
20640 BRS_FALSE case even if the other op is maybe_isnan, not just
20641 known_isnan.
20642 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
20643 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
20644 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
20645 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
20646 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
20647 not just known_isnan.
20648
20649 2023-04-04 Marek Polacek <polacek@redhat.com>
20650
20651 PR sanitizer/109107
20652 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
20653 when associating.
20654 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
20655
20656 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
20657
20658 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
20659 (mve_vcreateq_f<mode>): Swap operands.
20660
20661 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
20662
20663 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
20664
20665 2023-04-04 Jakub Jelinek <jakub@redhat.com>
20666
20667 PR target/109384
20668 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20669 Reword diagnostics about zfinx conflict with f, formatting fixes.
20670
20671 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20672
20673 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
20674
20675 2023-04-04 Richard Biener <rguenther@suse.de>
20676
20677 PR tree-optimization/109304
20678 * tree-profile.cc (tree_profiling): Use symtab node
20679 availability to decide whether to skip adjusting calls.
20680 Do not adjust calls to internal functions.
20681
20682 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
20683
20684 PR target/108807
20685 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
20686 function for permutation control vector by considering big endianness.
20687
20688 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
20689
20690 PR target/108699
20691 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
20692 (rs6000_vprtyb<mode>2): ... this.
20693 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
20694 rs6000_vprtybv2di2.
20695 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
20696 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
20697 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
20698 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
20699
20700 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
20701 Sandra Loosemore <sandra@codesourcery.com>
20702
20703 * doc/md.texi (Insn Splitting): Tweak wording for readability.
20704
20705 2023-04-03 Martin Jambor <mjambor@suse.cz>
20706
20707 PR ipa/109303
20708 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
20709 offset + size will be representable in unsigned int.
20710
20711 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20712
20713 * configure.ac (ZSTD_LIB): Move before zstd.h check.
20714 Unset gcc_cv_header_zstd_h without libzstd.
20715 * configure: Regenerate.
20716
20717 2023-04-03 Martin Liska <mliska@suse.cz>
20718
20719 * doc/invoke.texi: Document new param.
20720
20721 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
20722
20723 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
20724 new check_effective_target function.
20725
20726 2023-04-03 Li Xu <xuli1@eswincomputing.com>
20727
20728 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
20729 (vfloat32m8_t): Likewise
20730
20731 2023-04-03 liuhongt <hongtao.liu@intel.com>
20732
20733 * doc/md.texi: Document signbitm2.
20734
20735 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20736 kito-cheng <kito.cheng@sifive.com>
20737
20738 * config/riscv/vector.md: Fix RA constraint.
20739
20740 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20741
20742 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
20743 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
20744 * config/riscv/vector.md: Fix scalar move bug.
20745
20746 2023-04-01 Jakub Jelinek <jakub@redhat.com>
20747
20748 * range-op-float.cc (foperator_equal::fold_range): If at least
20749 one of the op ranges is not singleton and neither is NaN and all
20750 4 bounds are zero, return [1, 1].
20751 (foperator_not_equal::fold_range): In the same case return [0, 0].
20752
20753 2023-04-01 Jakub Jelinek <jakub@redhat.com>
20754
20755 * range-op-float.cc (foperator_equal::fold_range): Perform the
20756 non-singleton handling regardless of maybe_isnan (op1, op2).
20757 (foperator_not_equal::fold_range): Likewise.
20758 (foperator_lt::fold_range, foperator_le::fold_range,
20759 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
20760 real_* comparison check which results in range_false (type)
20761 even if maybe_isnan (op1, op2). Simplify.
20762 (foperator_ltgt): New class.
20763 (fop_ltgt): New variable.
20764 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
20765 fop_ltgt.
20766
20767 2023-04-01 Jakub Jelinek <jakub@redhat.com>
20768
20769 PR target/109254
20770 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
20771 returns VOIDmode, handle it like if the register isn't used for
20772 passing arguments at all.
20773 (apply_result_size): If targetm.calls.get_raw_result_mode returns
20774 VOIDmode, handle it like if the register isn't used for returning
20775 results at all.
20776 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
20777 means to return VOIDmode.
20778 * doc/tm.texi: Regenerated.
20779 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
20780 TARGET_SVE for P0_REGNUM.
20781 (aarch64_function_arg_regno_p): Also return true for p0-p3.
20782 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
20783
20784 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
20785
20786 * lra-constraints.cc: (combine_reload_insn): New function.
20787
20788 2023-03-31 Jakub Jelinek <jakub@redhat.com>
20789
20790 PR tree-optimization/91645
20791 * range-op-float.cc (foperator_unordered_lt::fold_range,
20792 foperator_unordered_le::fold_range,
20793 foperator_unordered_gt::fold_range,
20794 foperator_unordered_ge::fold_range,
20795 foperator_unordered_equal::fold_range): Call the ordered
20796 fold_range on ranges with cleared NaNs.
20797 * value-query.cc (range_query::get_tree_range): Handle also
20798 COMPARISON_CLASS_P trees.
20799
20800 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
20801 Andrew Pinski <pinskia@gmail.com>
20802
20803 PR target/109328
20804 * config/riscv/t-riscv: Add missing dependencies.
20805
20806 2023-03-31 liuhongt <hongtao.liu@intel.com>
20807
20808 * config/i386/i386.cc (inline_memory_move_cost): Return 100
20809 for MASK_REGS when MODE_SIZE > 8.
20810
20811 2023-03-31 liuhongt <hongtao.liu@intel.com>
20812
20813 PR target/85048
20814 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
20815 ufloat/ufix to floatuns/fixuns.
20816 * config/i386/i386-expand.cc
20817 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
20818 * config/i386/sse.md
20819 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
20820 Renamed to ..
20821 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
20822 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
20823 Renamed to ..
20824 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
20825 .. this.
20826 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
20827 Renamed to ..
20828 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
20829 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
20830 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
20831 (ufloatv2siv2df2<mask_name>): Renamed to ..
20832 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
20833 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
20834 Renamed to ..
20835 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
20836 .. this.
20837 (ufix_notruncv2dfv2si2): Renamed to ..
20838 (fixuns_notruncv2dfv2si2):.. this.
20839 (ufix_notruncv2dfv2si2_mask): Renamed to ..
20840 (fixuns_notruncv2dfv2si2_mask): .. this.
20841 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
20842 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
20843 (ufix_truncv2dfv2si2): Renamed to ..
20844 (*fixuns_truncv2dfv2si2): .. this.
20845 (ufix_truncv2dfv2si2_mask): Renamed to ..
20846 (fixuns_truncv2dfv2si2_mask): .. this.
20847 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
20848 (*fixuns_truncv2dfv2si2_mask_1): .. this.
20849 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
20850 (fixuns_truncv4dfv4si2<mask_name>): .. this.
20851 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20852 Renamed to ..
20853 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20854 .. this.
20855 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
20856 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
20857 .. this.
20858
20859 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
20860
20861 PR tree-optimization/109154
20862 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
20863 * gimple-range-gori.h (may_recompute_p): Add depth param.
20864 * params.opt (ranger-recompute-depth): New param.
20865
20866 2023-03-30 Jason Merrill <jason@redhat.com>
20867
20868 PR c++/107897
20869 PR c++/108887
20870 * cgraph.h: Move reset() from cgraph_node to symtab_node.
20871 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
20872 remove_from_same_comdat_group.
20873
20874 2023-03-30 Richard Biener <rguenther@suse.de>
20875
20876 PR tree-optimization/107561
20877 * gimple-ssa-warn-access.cc (get_size_range): Add flags
20878 argument and pass it on.
20879 (check_access): When querying for the size range pass
20880 SR_ALLOW_ZERO when the known destination size is zero.
20881
20882 2023-03-30 Richard Biener <rguenther@suse.de>
20883
20884 PR tree-optimization/109342
20885 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
20886 overload for edge. When that edge is a backedge use
20887 dominated_by_p directly.
20888
20889 2023-03-30 liuhongt <hongtao.liu@intel.com>
20890
20891 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
20892 vpblendd instead of vpblendw for V4SI under avx2.
20893
20894 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
20895
20896 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
20897 for many quick operands, for register-sized modes.
20898
20899 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
20900
20901 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20902 New check.
20903
20904 2023-03-29 Martin Liska <mliska@suse.cz>
20905
20906 PR bootstrap/109310
20907 * configure.ac: Emit a warning for deprecated option
20908 --enable-link-mutex.
20909 * configure: Regenerate.
20910
20911 2023-03-29 Richard Biener <rguenther@suse.de>
20912
20913 PR tree-optimization/109331
20914 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
20915 discover a taken edge make sure to cleanup the CFG.
20916
20917 2023-03-29 Richard Biener <rguenther@suse.de>
20918
20919 PR tree-optimization/109327
20920 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
20921 already removed stmts when draining to_remove.
20922
20923 2023-03-29 Richard Biener <rguenther@suse.de>
20924
20925 PR ipa/106124
20926 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
20927 so we can re-create the DIE for the type if required.
20928
20929 2023-03-29 Jakub Jelinek <jakub@redhat.com>
20930 Richard Biener <rguenther@suse.de>
20931
20932 PR tree-optimization/109301
20933 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
20934 properties_provided from PROP_gimple_opt_math to 0.
20935 (pass_data_expand_powcabs): Change properties_provided from 0 to
20936 PROP_gimple_opt_math.
20937
20938 2023-03-29 Richard Biener <rguenther@suse.de>
20939
20940 PR tree-optimization/109154
20941 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
20942 inverted condition specially by inverting at the caller.
20943 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
20944
20945 2023-03-28 David Malcolm <dmalcolm@redhat.com>
20946
20947 PR c/107002
20948 * diagnostic-show-locus.cc (column_range::column_range): Factor
20949 out assertion conditional into...
20950 (column_range::valid_p): ...this new function.
20951 (line_corrections::add_hint): Don't attempt to consolidate hints
20952 if it would lead to invalid column_range instances.
20953
20954 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
20955
20956 PR target/109312
20957 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
20958 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
20959 minor refactor.
20960
20961 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
20962
20963 PR rtl-optimization/109187
20964 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
20965 subtraction in three-way comparison.
20966
20967 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
20968
20969 PR tree-optimization/109265
20970 PR tree-optimization/109274
20971 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
20972 not create a relation record is op1 and op2 are the same symbol.
20973 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
20974 handler for this stmt, but create a new record only if this statement
20975 generates a relation based on the ranges.
20976 (gori_compute::compute_operand2_range): Ditto.
20977 * value-relation.h (value_relation::set_relation): Always create the
20978 record that is requested.
20979
20980 2023-03-28 Richard Biener <rguenther@suse.de>
20981
20982 PR tree-optimization/107087
20983 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
20984 executable regions to avoid useless work and to better
20985 propagate degenerate PHIs.
20986
20987 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
20988
20989 * config/i386/x-mingw32-utf8: update comments.
20990
20991 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
20992
20993 PR target/109072
20994 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
20995 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
20996 variable.
20997 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
20998 New function.
20999 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
21000 after inlining. Record which decls are loaded from. Fix handling
21001 of vops for loads and stores.
21002 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
21003 (aarch64_accesses_vector_load_decl_p): Likewise.
21004 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
21005 variable.
21006 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
21007 that loads from a decl, treat vector stores to those decls as
21008 zero cost.
21009 (aarch64_vector_costs::finish_cost): ...and in that case,
21010 if the vector code does nothing more than a store, give the
21011 prologue a zero cost as well.
21012
21013 2023-03-28 Richard Biener <rguenther@suse.de>
21014
21015 PR bootstrap/84402
21016 PR tree-optimization/108129
21017 * genmatch.cc (lower_for): For (match ...) delay
21018 substituting into the match operator if possible.
21019 (dt_operand::gen_gimple_expr): For user_id look at the
21020 first substitute for determining how to access operands.
21021 (dt_operand::gen_generic_expr): Likewise.
21022 (dt_node::gen_kids): Properly sort user_ids according
21023 to their substitutes.
21024 (dt_node::gen_kids_1): Code-generate user_id matching.
21025
21026 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21027 Jonathan Wakely <jwakely@redhat.com>
21028
21029 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
21030 Use subcommand rather than sub-command in function comments.
21031
21032 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21033
21034 PR tree-optimization/109154
21035 * value-range.h (frange::flush_denormals_to_zero): Make it public
21036 rather than private.
21037 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
21038 here.
21039 * range-op-float.cc (range_operator_float::fold_range): Call
21040 flush_denormals_to_zero.
21041
21042 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21043
21044 PR middle-end/106190
21045 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
21046 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
21047
21048 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21049
21050 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
21051 as 4th argument to set to avoid clear_nan and union_ calls.
21052
21053 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21054
21055 PR target/109276
21056 * config/i386/i386.cc (assign_386_stack_local): For DImode
21057 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
21058 align 32 rather than 0 to assign_stack_local.
21059
21060 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
21061
21062 PR target/109140
21063 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
21064 on operand #3 to get the final condition code. Use std::swap.
21065 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
21066 (fucmp<gcond:code>8<P:mode>_vis): Move around.
21067 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
21068 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
21069
21070 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
21071
21072 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
21073 top-level sections.
21074
21075 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
21076
21077 * config.host: Pull in i386/x-mingw32-utf8 Makefile
21078 fragment and reference utf8rc-mingw32.o explicitly
21079 for mingw hosts.
21080 * config/i386/sym-mingw32.cc: prevent name mangling of
21081 stub symbol.
21082 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
21083 depend on manifest file explicitly.
21084
21085 2023-03-28 Richard Biener <rguenther@suse.de>
21086
21087 Revert:
21088 2023-03-27 Richard Biener <rguenther@suse.de>
21089
21090 PR rtl-optimization/109237
21091 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
21092
21093 2023-03-28 Richard Biener <rguenther@suse.de>
21094
21095 * common.opt (gdwarf): Remove Negative(gdwarf-).
21096
21097 2023-03-28 Richard Biener <rguenther@suse.de>
21098
21099 * common.opt (gdwarf): Add RejectNegative.
21100 (gdwarf-): Likewise.
21101 (ggdb): Likewise.
21102 (gvms): Likewise.
21103
21104 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21105
21106 * config/cris/constraints.md ("T"): Correct to
21107 define_memory_constraint.
21108
21109 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21110
21111 * config/cris/cris.md (BW2): New mode-iterator.
21112 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
21113 peephole2s.
21114
21115 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21116
21117 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
21118 for possible eliminable compares.
21119
21120 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21121
21122 * config/cris/constraints.md ("R"): Remove unused constraint.
21123
21124 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
21125
21126 PR gcov-profile/109297
21127 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
21128 (merge_stream_usage): Likewise.
21129 (overlap_usage): Likewise.
21130
21131 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
21132
21133 PR target/109296
21134 * config/riscv/thead.md: Add missing mode specifiers.
21135
21136 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
21137 Jiangning Liu <jiangning.liu@amperecomputing.com>
21138 Manolis Tsamis <manolis.tsamis@vrull.eu>
21139
21140 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
21141
21142 2023-03-27 Richard Biener <rguenther@suse.de>
21143
21144 PR rtl-optimization/109237
21145 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
21146
21147 2023-03-27 Richard Biener <rguenther@suse.de>
21148
21149 PR lto/109263
21150 * lto-wrapper.cc (run_gcc): Parse alternate debug options
21151 as well, they always enable debug.
21152
21153 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
21154
21155 PR target/109167
21156 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
21157 from ...
21158 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
21159
21160 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
21161
21162 PR target/109082
21163 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
21164 than zero when calling vec_sld.
21165 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
21166 zero when calling vec_sld.
21167 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
21168 than zero when calling vec_sld.
21169
21170 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
21171
21172 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
21173 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
21174 loops are represented and which fields are vectors. Add
21175 documentation for OMP_FOR_PRE_BODY field. Document internal
21176 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
21177 * tree.def (OMP_FOR): Make documentation consistent with the
21178 Texinfo manual, to fill some gaps and correct errors.
21179
21180 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
21181
21182 PR target/106282
21183 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21184 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
21185 (handle_move_double): Call it before handle_movsi.
21186 * config/m68k/m68k-protos.h: Declare it.
21187
21188 2023-03-26 Jakub Jelinek <jakub@redhat.com>
21189
21190 PR tree-optimization/109230
21191 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
21192
21193 2023-03-26 Jakub Jelinek <jakub@redhat.com>
21194
21195 PR ipa/105685
21196 * predict.cc (compute_function_frequency): Don't call
21197 warn_function_cold if function already has cold attribute.
21198
21199 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
21200
21201 * doc/install.texi: Remove anachronistic note
21202 related to languages built and separate source tarballs.
21203
21204 2023-03-25 David Malcolm <dmalcolm@redhat.com>
21205
21206 PR analyzer/109098
21207 * diagnostic-format-sarif.cc (read_until_eof): Delete.
21208 (maybe_read_file): Delete.
21209 (sarif_builder::maybe_make_artifact_content_object): Use
21210 get_source_file_content rather than maybe_read_file.
21211 Reject it if it's not valid UTF-8.
21212 * input.cc (file_cache_slot::get_full_file_content): New.
21213 (get_source_file_content): New.
21214 (selftest::check_cpp_valid_utf8_p): New.
21215 (selftest::test_cpp_valid_utf8_p): New.
21216 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
21217 * input.h (get_source_file_content): New prototype.
21218
21219 2023-03-24 David Malcolm <dmalcolm@redhat.com>
21220
21221 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
21222 debugging options.
21223 (Special Functions for Debugging the Analyzer): Convert to a
21224 table, and rewrite in places.
21225 (Other Debugging Techniques): Add notes on how to compare two
21226 different exploded graphs.
21227
21228 2023-03-24 David Malcolm <dmalcolm@redhat.com>
21229
21230 PR other/109163
21231 * json.cc: Update comments to indicate that we now preserve
21232 insertion order of keys within objects.
21233 (object::print): Traverse keys in insertion order.
21234 (object::set): Preserve insertion order of keys.
21235 (selftest::test_writing_objects): Add an additional key to verify
21236 that we preserve insertion order.
21237 * json.h (object::m_keys): New field.
21238
21239 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
21240
21241 PR tree-optimization/109238
21242 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
21243 predecessors which this block dominates.
21244
21245 2023-03-24 Richard Biener <rguenther@suse.de>
21246
21247 PR tree-optimization/106912
21248 * tree-profile.cc (tree_profiling): Update stmts only when
21249 profiling or testing coverage. Make sure to update calls
21250 fntype, stripping 'const' there.
21251
21252 2023-03-24 Jakub Jelinek <jakub@redhat.com>
21253
21254 PR middle-end/109258
21255 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
21256 if target == const0_rtx.
21257
21258 2023-03-24 Alexandre Oliva <oliva@adacore.com>
21259
21260 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
21261 Document options and effective targets.
21262
21263 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
21264
21265 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
21266 optional.
21267
21268 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
21269
21270 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
21271 non-earlyclobber alternative.
21272
21273 2023-03-23 Andrew Pinski <apinski@marvell.com>
21274
21275 PR c/84900
21276 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
21277 as a lvalue.
21278
21279 2023-03-23 Richard Biener <rguenther@suse.de>
21280
21281 PR tree-optimization/107569
21282 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
21283 Do not push SSA names with zero uses as available leader.
21284 (process_bb): Likewise.
21285
21286 2023-03-23 Richard Biener <rguenther@suse.de>
21287
21288 PR tree-optimization/109262
21289 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
21290 combining a piecewise complex load avoid touching loads
21291 that throw internally. Use fun, not cfun throughout.
21292
21293 2023-03-23 Jakub Jelinek <jakub@redhat.com>
21294
21295 * value-range.cc (irange::irange_union, irange::intersect): Fix
21296 comment spelling bugs.
21297 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
21298 * gimple-range-trace.h: Likewise.
21299 * gimple-range-edge.cc: Likewise.
21300 (gimple_outgoing_range_stmt_p,
21301 gimple_outgoing_range::switch_edge_range,
21302 gimple_outgoing_range::edge_range_p): Likewise.
21303 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
21304 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
21305 assume_query::assume_query, assume_query::calculate_phi): Likewise.
21306 * gimple-range-edge.h: Likewise.
21307 * value-range.h (Value_Range::set, Value_Range::lower_bound,
21308 Value_Range::upper_bound, frange::set_undefined): Likewise.
21309 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
21310 gori_compute): Likewise.
21311 * gimple-range-fold.h (fold_using_range): Likewise.
21312 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
21313 Likewise.
21314 * gimple-range-gori.cc (range_def_chain::in_chain_p,
21315 range_def_chain::dump, gori_map::calculate_gori,
21316 gori_compute::compute_operand_range_switch,
21317 gori_compute::logical_combine, gori_compute::refine_using_relation,
21318 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
21319 Likewise.
21320 * gimple-range.h: Likewise.
21321 (enable_ranger): Likewise.
21322 * range-op.h (empty_range_varying): Likewise.
21323 * value-query.h (value_query): Likewise.
21324 * gimple-range-cache.cc (block_range_cache::set_bb_range,
21325 block_range_cache::dump, ssa_global_cache::clear_global_range,
21326 temporal_cache::temporal_value, temporal_cache::current_p,
21327 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
21328 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
21329 Likewise.
21330 * gimple-range-fold.cc (fur_edge::get_phi_operand,
21331 fur_stmt::get_operand, gimple_range_adjustment,
21332 fold_using_range::range_of_phi,
21333 fold_using_range::relation_fold_and_or): Likewise.
21334 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
21335 * value-query.cc (range_query::value_of_expr,
21336 range_query::value_on_edge, range_query::query_relation): Likewise.
21337 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
21338 intersect_range_with_nonzero_bits): Likewise.
21339 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
21340 exit_range): Likewise.
21341 * value-relation.h: Likewise.
21342 (equiv_oracle, relation_trio::relation_trio, value_relation,
21343 value_relation::value_relation, pe_min): Likewise.
21344 * range-op-float.cc (range_operator_float::rv_fold,
21345 frange_arithmetic, foperator_unordered_equal::op1_range,
21346 foperator_div::rv_fold): Likewise.
21347 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
21348 * value-relation.cc (equiv_oracle::query_relation,
21349 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
21350 value_relation::apply_transitive, relation_chain_head::find_relation,
21351 dom_oracle::query_relation, dom_oracle::find_relation_block,
21352 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
21353 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
21354 create_possibly_reversed_range, adjust_op1_for_overflow,
21355 operator_mult::wi_fold, operator_exact_divide::op1_range,
21356 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
21357 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
21358 range_op_lshift_tests): Likewise.
21359
21360 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
21361
21362 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
21363 (move_callee_saved_registers): Detect the bug condition early.
21364
21365 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
21366
21367 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
21368 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
21369 (V_2REG_ALT): New.
21370 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
21371 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
21372 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
21373 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
21374 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
21375
21376 2023-03-23 Jakub Jelinek <jakub@redhat.com>
21377
21378 PR tree-optimization/109176
21379 * tree-vect-generic.cc (expand_vector_condition): If a has
21380 vector boolean type and is a comparison, also check if both
21381 the comparison and VEC_COND_EXPR could be successfully expanded
21382 individually.
21383
21384 2023-03-23 Pan Li <pan2.li@intel.com>
21385 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21386
21387 PR target/108654
21388 PR target/108185
21389 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
21390 for vector mask modes.
21391 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
21392 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
21393
21394 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
21395
21396 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
21397
21398 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21399
21400 PR target/109244
21401 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
21402 (emit_vlmax_op): Ditto.
21403 * config/riscv/riscv-v.cc (get_sew): New function.
21404 (emit_vlmax_vsetvl): Adapt function.
21405 (emit_pred_op): Ditto.
21406 (emit_vlmax_op): Ditto.
21407 (emit_nonvlmax_op): Ditto.
21408 (legitimize_move): Fix LRA ICE.
21409 (gen_no_side_effects_vsetvl_rtx): Adapt function.
21410 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
21411 (@mov<VB:mode><P:mode>_lra): Ditto.
21412 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
21413 (*mov<VB:mode><P:mode>_lra): Ditto.
21414
21415 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21416
21417 PR target/109228
21418 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
21419 __riscv_vlenb support.
21420 (BASE): Ditto.
21421 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21422 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
21423 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
21424 (SHAPE): Ditto.
21425 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21426 * config/riscv/riscv-vector-builtins.cc: Ditto.
21427
21428 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21429 kito-cheng <kito.cheng@sifive.com>
21430
21431 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
21432 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
21433 (pass_vsetvl::need_vsetvl): Fix bugs.
21434 (pass_vsetvl::backward_demand_fusion): Fix bugs.
21435 (pass_vsetvl::demand_fusion): Fix bugs.
21436 (eliminate_insn): Fix bugs.
21437 (insert_vsetvl): Ditto.
21438 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
21439 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
21440 * config/riscv/vector.md: Ditto.
21441
21442 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21443 kito-cheng <kito.cheng@sifive.com>
21444
21445 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
21446 * config/riscv/vector-iterators.md (nmsac): Ditto.
21447 (nmsub): Ditto.
21448 (msac): Ditto.
21449 (msub): Ditto.
21450 (nmadd): Ditto.
21451 (nmacc): Ditto.
21452 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
21453 (@pred_mul_plus<mode>): Ditto.
21454 (*pred_madd<mode>): Ditto.
21455 (*pred_macc<mode>): Ditto.
21456 (*pred_mul_plus<mode>): Ditto.
21457 (@pred_mul_plus<mode>_scalar): Ditto.
21458 (*pred_madd<mode>_scalar): Ditto.
21459 (*pred_macc<mode>_scalar): Ditto.
21460 (*pred_mul_plus<mode>_scalar): Ditto.
21461 (*pred_madd<mode>_extended_scalar): Ditto.
21462 (*pred_macc<mode>_extended_scalar): Ditto.
21463 (*pred_mul_plus<mode>_extended_scalar): Ditto.
21464 (@pred_minus_mul<mode>): Ditto.
21465 (*pred_<madd_nmsub><mode>): Ditto.
21466 (*pred_nmsub<mode>): Ditto.
21467 (*pred_<macc_nmsac><mode>): Ditto.
21468 (*pred_nmsac<mode>): Ditto.
21469 (*pred_mul_<optab><mode>): Ditto.
21470 (*pred_minus_mul<mode>): Ditto.
21471 (@pred_mul_<optab><mode>_scalar): Ditto.
21472 (@pred_minus_mul<mode>_scalar): Ditto.
21473 (*pred_<madd_nmsub><mode>_scalar): Ditto.
21474 (*pred_nmsub<mode>_scalar): Ditto.
21475 (*pred_<macc_nmsac><mode>_scalar): Ditto.
21476 (*pred_nmsac<mode>_scalar): Ditto.
21477 (*pred_mul_<optab><mode>_scalar): Ditto.
21478 (*pred_minus_mul<mode>_scalar): Ditto.
21479 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
21480 (*pred_nmsub<mode>_extended_scalar): Ditto.
21481 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
21482 (*pred_nmsac<mode>_extended_scalar): Ditto.
21483 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
21484 (*pred_minus_mul<mode>_extended_scalar): Ditto.
21485 (*pred_<madd_msub><mode>): Ditto.
21486 (*pred_<macc_msac><mode>): Ditto.
21487 (*pred_<madd_msub><mode>_scalar): Ditto.
21488 (*pred_<macc_msac><mode>_scalar): Ditto.
21489 (@pred_neg_mul_<optab><mode>): Ditto.
21490 (@pred_mul_neg_<optab><mode>): Ditto.
21491 (*pred_<nmadd_msub><mode>): Ditto.
21492 (*pred_<nmsub_nmadd><mode>): Ditto.
21493 (*pred_<nmacc_msac><mode>): Ditto.
21494 (*pred_<nmsac_nmacc><mode>): Ditto.
21495 (*pred_neg_mul_<optab><mode>): Ditto.
21496 (*pred_mul_neg_<optab><mode>): Ditto.
21497 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
21498 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
21499 (*pred_<nmadd_msub><mode>_scalar): Ditto.
21500 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
21501 (*pred_<nmacc_msac><mode>_scalar): Ditto.
21502 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
21503 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
21504 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
21505 (@pred_widen_neg_mul_<optab><mode>): Ditto.
21506 (@pred_widen_mul_neg_<optab><mode>): Ditto.
21507 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
21508 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
21509
21510 2023-03-23 liuhongt <hongtao.liu@intel.com>
21511
21512 * builtins.cc (builtin_memset_read_str): Replace
21513 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
21514 (builtin_memset_gen_str): Ditto.
21515 * config/i386/i386-expand.cc
21516 (ix86_convert_const_wide_int_to_broadcast): Replace
21517 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
21518 (ix86_expand_vector_move): Ditto.
21519 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
21520 Removed.
21521 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
21522 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
21523 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
21524 * doc/tm.texi.in: Ditto.
21525 * target.def: Ditto.
21526
21527 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
21528
21529 * lra.cc (lra): Do not repeat inheritance and live range splitting
21530 when asm error is found.
21531
21532 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
21533
21534 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
21535 (gcn_expand_dpp_distribute_even_insn)
21536 (gcn_expand_dpp_distribute_odd_insn): Declare.
21537 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
21538 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
21539 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
21540 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
21541 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
21542 (fms<mode>4_negop2): New patterns.
21543 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
21544 (gcn_expand_dpp_distribute_even_insn)
21545 (gcn_expand_dpp_distribute_odd_insn): New functions.
21546 * config/gcn/gcn.md: Add entries to unspec enum.
21547
21548 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
21549
21550 PR tree-optimization/109008
21551 * value-range.cc (frange::set): Add nan_state argument.
21552 * value-range.h (class nan_state): New.
21553 (frange::get_nan_state): New.
21554
21555 2023-03-22 Martin Liska <mliska@suse.cz>
21556
21557 * configure: Regenerate.
21558
21559 2023-03-21 Joseph Myers <joseph@codesourcery.com>
21560
21561 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
21562 to variants.
21563
21564 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
21565
21566 PR tree-optimization/109192
21567 * gimple-range-gori.cc (gori_compute::compute_operand_range):
21568 Terminate gori calculations if a relation is not relevant.
21569 * value-relation.h (value_relation::set_relation): Allow
21570 equality between op1 and op2 if they are the same.
21571
21572 2023-03-21 Richard Biener <rguenther@suse.de>
21573
21574 PR tree-optimization/109219
21575 * tree-vect-loop.cc (vectorizable_reduction): Check
21576 slp_node, not STMT_SLP_TYPE.
21577 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
21578 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
21579 Remove assertion on STMT_SLP_TYPE.
21580
21581 2023-03-21 Jakub Jelinek <jakub@redhat.com>
21582
21583 PR tree-optimization/109215
21584 * tree.h (enum special_array_member): Adjust comments for int_0
21585 and trail_0.
21586 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
21587 has zero sized element type and the array has variable number of
21588 elements or constant one or more elements.
21589 (component_ref_size): Adjust comments, formatting fix.
21590
21591 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21592
21593 * configure.ac: Add check for the Texinfo 6.8
21594 CONTENTS_OUTPUT_LOCATION customization variable and set it if
21595 supported.
21596 * configure: Regenerate.
21597 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
21598 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
21599 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
21600 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
21601
21602 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21603
21604 * doc/extend.texi: Associate use_hazard_barrier_return index
21605 entry with its attribute.
21606 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
21607 its attribute
21608
21609 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21610
21611 * doc/implement-c.texi: Remove usage of @gol.
21612 * doc/invoke.texi: Ditto.
21613 * doc/sourcebuild.texi: Ditto.
21614 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
21615 texinfo.tex versions, the bug it was working around appears to
21616 be gone.
21617
21618 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21619
21620 * doc/include/texinfo.tex: Update to 2023-01-17.19.
21621
21622 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21623
21624 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
21625 @enddefbuiltin for defining built-in functions.
21626 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
21627 places where it should be used.
21628
21629 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21630
21631 * doc/extend.texi (Formatted Output Function Checking): New
21632 subsection for grouping together printf et al.
21633 (Exception handling) Fix missing @ sign before copyright
21634 header, which lead to the copyright line leaking into
21635 '(gcc)Exception handling'.
21636 * doc/gcc.texi: Set document language to en_US.
21637 (@copying): Wrap front cover texts in quotations, move in manual
21638 description text.
21639
21640 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21641
21642 * doc/gcc.texi: Add the Indices appendix, to make texinfo
21643 generate nice indices overview page.
21644
21645 2023-03-21 Richard Biener <rguenther@suse.de>
21646
21647 PR tree-optimization/109170
21648 * gimple-range-op.cc (cfn_pass_through_arg1): New.
21649 (gimple_range_op_handler::maybe_builtin_call): Handle
21650 __builtin_expect via cfn_pass_through_arg1.
21651
21652 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
21653
21654 PR target/109067
21655 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
21656 (init_float128_ieee): Delete code to switch complex multiply and divide
21657 for long double.
21658 (complex_multiply_builtin_code): New helper function.
21659 (complex_divide_builtin_code): Likewise.
21660 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
21661 of complex 128-bit multiply and divide built-in functions.
21662
21663 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
21664
21665 PR target/109178
21666 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
21667
21668 2023-03-19 Jonny Grant <jg@jguk.org>
21669
21670 * doc/extend.texi (Common Function Attributes) <nonnull>:
21671 Correct typo.
21672
21673 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
21674
21675 PR rtl-optimization/109179
21676 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
21677 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
21678
21679 2023-03-17 Jakub Jelinek <jakub@redhat.com>
21680
21681 PR target/105554
21682 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
21683 to false.
21684 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
21685 to allocate_struct_function instead of false.
21686 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
21687 nor DECL_RESULT here. Pass true as ABSTRACT_P to
21688 push_struct_function. Call targetm.target_option.relayout_function
21689 after it.
21690 (tree_function_versioning): Formatting fix.
21691
21692 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
21693
21694 * lra-constraints.cc: Include hooks.h.
21695 (combine_reload_insn): New function.
21696 (lra_constraints): Call it.
21697
21698 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21699 kito-cheng <kito.cheng@sifive.com>
21700
21701 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
21702 as legitimate value.
21703 * config/riscv/riscv-vector-builtins.cc
21704 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
21705 (function_expander::use_widen_ternop_insn): Ditto.
21706 * config/riscv/vector.md (@vundefined<mode>): New pattern.
21707 (pred_mul_<optab><mode>_undef_merge): Remove.
21708 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
21709 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
21710 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
21711 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
21712
21713 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21714
21715 PR target/109092
21716 * config/riscv/riscv.md: Fix subreg bug.
21717
21718 2023-03-17 Jakub Jelinek <jakub@redhat.com>
21719
21720 PR middle-end/108685
21721 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
21722 use its loop_father rather than BODY_BB's loop_father.
21723 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
21724 If broken_loop with ordered > collapse and at least one of those
21725 extra loops aren't guaranteed to have at least one iteration, change
21726 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
21727 loop_father to l0_bb's loop_father rather than l1_bb's.
21728
21729 2023-03-17 Jakub Jelinek <jakub@redhat.com>
21730
21731 PR plugins/108634
21732 * gdbhooks.py (TreePrinter.to_string): Wrap
21733 gdb.parse_and_eval('tree_code_type') in a try block, parse
21734 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
21735 raises exception. Update comments for the recent tree_code_type
21736 changes.
21737
21738 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
21739
21740 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
21741 issues. Add more line breaks to example so it doesn't overflow
21742 the margins.
21743
21744 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
21745
21746 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
21747 line breaks in examples.
21748 <malloc>: Fix bad line breaks in running text, also copy-edit
21749 for consistency.
21750 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
21751 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
21752 @gol.
21753 (C++ Dialect Options) <-fcontracts>: Add line break in example.
21754 <-Wctad-maybe-unsupported>: Likewise.
21755 <-Winvalid-constexpr>: Likewise.
21756 (Warning Options) <-Wdangling-pointer>: Likewise.
21757 <-Winterference-size>: Likewise.
21758 <-Wvla-parameter>: Likewise.
21759 (Static Analyzer Options): Fix bad line breaks in running text,
21760 plus add some missing markup.
21761 (Optimize Options) <openacc-privatization>: Fix more bad line
21762 breaks in running text.
21763
21764 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
21765
21766 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
21767 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
21768 (expand_vec_perm_2perm_pblendv): Ditto.
21769
21770 2023-03-16 Martin Liska <mliska@suse.cz>
21771
21772 PR middle-end/106133
21773 * gcc.cc (driver_handle_option): Use x_main_input_basename
21774 if x_dump_base_name is null.
21775 * opts.cc (common_handle_option): Likewise.
21776
21777 2023-03-16 Richard Biener <rguenther@suse.de>
21778
21779 PR tree-optimization/109123
21780 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
21781 Do not emit -Wuse-after-free late.
21782 (pass_waccess::check_call): Always check call pointer uses.
21783
21784 2023-03-16 Richard Biener <rguenther@suse.de>
21785
21786 PR tree-optimization/109141
21787 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
21788 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
21789 out from ...
21790 (renumber_gimple_stmt_uids): ... here and
21791 (renumber_gimple_stmt_uids_in_blocks): ... here.
21792 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
21793 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
21794 to PHIs.
21795 (pass_waccess::check_pointer_uses): Process all PHIs.
21796
21797 2023-03-15 David Malcolm <dmalcolm@redhat.com>
21798
21799 PR analyzer/109097
21800 * diagnostic-format-sarif.cc (class sarif_invocation): New.
21801 (class sarif_ice_notification): New.
21802 (sarif_builder::m_invocation_obj): New field.
21803 (sarif_invocation::add_notification_for_ice): New.
21804 (sarif_invocation::prepare_to_flush): New.
21805 (sarif_ice_notification::sarif_ice_notification): New.
21806 (sarif_builder::sarif_builder): Add m_invocation_obj.
21807 (sarif_builder::end_diagnostic): Special-case DK_ICE and
21808 DK_ICE_NOBT.
21809 (sarif_builder::flush_to_file): Call prepare_to_flush on
21810 m_invocation_obj. Pass the latter to make_top_level_object.
21811 (sarif_builder::make_result_object): Move creation of "locations"
21812 array to...
21813 (sarif_builder::make_locations_arr): ...this new function.
21814 (sarif_builder::make_top_level_object): Add "invocation_obj" param
21815 and pass it to make_run_object.
21816 (sarif_builder::make_run_object): Add "invocation_obj" param and
21817 use it.
21818 (sarif_ice_handler): New callback.
21819 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
21820 * diagnostic.cc (diagnostic_initialize): Initialize new field
21821 "ice_handler_cb".
21822 (diagnostic_action_after_output): If it is set, make one attempt
21823 to call ice_handler_cb.
21824 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
21825
21826 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
21827
21828 * config/i386/i386-expand.cc (expand_vec_perm_blend):
21829 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
21830 and fix V2HImode handling.
21831 (expand_vec_perm_1): Try to emit BLEND instruction
21832 before MOVSS/MOVSD.
21833 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
21834
21835 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
21836
21837 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
21838
21839 2023-03-15 Richard Biener <rguenther@suse.de>
21840
21841 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
21842 Do not diagnose clobbers.
21843
21844 2023-03-15 Richard Biener <rguenther@suse.de>
21845
21846 PR tree-optimization/109139
21847 * tree-ssa-live.cc (remove_unused_locals): Look at the
21848 base address for unused decls on the LHS of .DEFERRED_INIT.
21849
21850 2023-03-15 Xi Ruoyao <xry111@xry111.site>
21851
21852 PR other/109086
21853 * builtins.cc (inline_string_cmp): Force the character
21854 difference into "result" pseudo-register, instead of reassign
21855 the pseudo-register.
21856
21857 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21858
21859 * config.gcc: Add thead.o to RISC-V extra_objs.
21860 * config/riscv/peephole.md: Add mempair peephole passes.
21861 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
21862 prototype.
21863 (th_mempair_operands_p): Likewise.
21864 (th_mempair_order_operands): Likewise.
21865 (th_mempair_prepare_save_restore_operands): Likewise.
21866 (th_mempair_save_restore_regs): Likewise.
21867 (th_mempair_output_move): Likewise.
21868 * config/riscv/riscv.cc (riscv_save_reg): Move code.
21869 (riscv_restore_reg): Move code.
21870 (riscv_for_each_saved_reg): Add code to emit mempair insns.
21871 * config/riscv/t-riscv: Add thead.cc.
21872 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
21873 New insn.
21874 (*th_mempair_store_<GPR:mode>2): Likewise.
21875 (*th_mempair_load_extendsidi2): Likewise.
21876 (*th_mempair_load_zero_extendsidi2): Likewise.
21877 * config/riscv/thead.cc: New file.
21878
21879 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21880
21881 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
21882 New constraint "th_f_fmv".
21883 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
21884 "th_r_fmv".
21885 * config/riscv/riscv.cc (riscv_split_doubleword_move):
21886 Add split code for XTheadFmv.
21887 (riscv_secondary_memory_needed): XTheadFmv does not need
21888 secondary memory.
21889 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
21890 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
21891 movdf_hardfloat_rv32.
21892 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
21893 (th_fmv_x_w): New INSN.
21894 (th_fmv_x_hw): New INSN.
21895
21896 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21897
21898 * config/riscv/riscv.md (maddhisi4): New expand.
21899 (msubhisi4): New expand.
21900 * config/riscv/thead.md (*th_mula<mode>): New pattern.
21901 (*th_mulawsi): New pattern.
21902 (*th_mulawsi2): New pattern.
21903 (*th_maddhisi4): New pattern.
21904 (*th_sextw_maddhisi4): New pattern.
21905 (*th_muls<mode>): New pattern.
21906 (*th_mulswsi): New pattern.
21907 (*th_mulswsi2): New pattern.
21908 (*th_msubhisi4): New pattern.
21909 (*th_sextw_msubhisi4): New pattern.
21910
21911 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21912
21913 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
21914 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
21915 Add prototype.
21916 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
21917 XTheadCondMov.
21918 (riscv_expand_conditional_move): New function.
21919 (riscv_expand_conditional_move_onesided): New function.
21920 * config/riscv/riscv.md: Add support for XTheadCondMov.
21921 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
21922 support for XTheadCondMov.
21923 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
21924
21925 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21926
21927 * config/riscv/bitmanip.md (clzdi2): New expand.
21928 (clzsi2): New expand.
21929 (ctz<mode>2): New expand.
21930 (popcount<mode>2): New expand.
21931 (<bitmanip_optab>si2): Rename INSN.
21932 (*<bitmanip_optab>si2): Hide INSN name.
21933 (<bitmanip_optab>di2): Rename INSN.
21934 (*<bitmanip_optab>di2): Hide INSN name.
21935 (rotrsi3): Remove INSN.
21936 (rotr<mode>3): Add expand.
21937 (*rotrsi3): New INSN.
21938 (rotrdi3): Rename INSN.
21939 (*rotrdi3): Hide INSN name.
21940 (rotrsi3_sext): Rename INSN.
21941 (*rotrsi3_sext): Hide INSN name.
21942 (bswap<mode>2): Remove INSN.
21943 (bswapdi2): Add expand.
21944 (bswapsi2): Add expand.
21945 (*bswap<mode>2): Hide INSN name.
21946 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
21947 extraction.
21948 * config/riscv/riscv.md (extv<mode>): New expand.
21949 (extzv<mode>): New expand.
21950 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
21951 (*th_ext<mode>): New INSN.
21952 (*th_extu<mode>): New INSN.
21953 (*th_clz<mode>2): New INSN.
21954 (*th_rev<mode>2): New INSN.
21955
21956 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21957
21958 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
21959 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
21960
21961 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21962
21963 * config/riscv/riscv.md: Include thead.md
21964 * config/riscv/thead.md: New file.
21965
21966 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21967
21968 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
21969
21970 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21971
21972 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
21973 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
21974 (MASK_XTHEADBB): New.
21975 (MASK_XTHEADBS): New.
21976 (MASK_XTHEADCMO): New.
21977 (MASK_XTHEADCONDMOV): New.
21978 (MASK_XTHEADFMEMIDX): New.
21979 (MASK_XTHEADFMV): New.
21980 (MASK_XTHEADINT): New.
21981 (MASK_XTHEADMAC): New.
21982 (MASK_XTHEADMEMIDX): New.
21983 (MASK_XTHEADMEMPAIR): New.
21984 (MASK_XTHEADSYNC): New.
21985 (TARGET_XTHEADBA): New.
21986 (TARGET_XTHEADBB): New.
21987 (TARGET_XTHEADBS): New.
21988 (TARGET_XTHEADCMO): New.
21989 (TARGET_XTHEADCONDMOV): New.
21990 (TARGET_XTHEADFMEMIDX): New.
21991 (TARGET_XTHEADFMV): New.
21992 (TARGET_XTHEADINT): New.
21993 (TARGET_XTHEADMAC): New.
21994 (TARGET_XTHEADMEMIDX): New.
21995 (TARGET_XTHEADMEMPAIR): new.
21996 (TARGET_XTHEADSYNC): New.
21997 * config/riscv/riscv.opt: Add riscv_xthead_subext.
21998
21999 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
22000
22001 PR target/109117
22002 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
22003 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
22004 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
22005
22006 2023-03-14 Jakub Jelinek <jakub@redhat.com>
22007
22008 PR target/109109
22009 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
22010 when lo is equal to dhi and hi is a MEM which uses dlo register.
22011
22012 2023-03-14 Martin Jambor <mjambor@suse.cz>
22013
22014 PR ipa/107925
22015 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
22016 global0 instead of zeroing when it does not have as many counts as
22017 it should.
22018
22019 2023-03-14 Martin Jambor <mjambor@suse.cz>
22020
22021 PR ipa/107925
22022 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
22023 ipa count, remove assert, lenient_count_portion_handling, dump
22024 also orig_node_count.
22025
22026 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
22027
22028 * config/i386/i386-expand.cc (expand_vec_perm_movs):
22029 Handle V2SImode for TARGET_MMX_WITH_SSE.
22030 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
22031 using V2FI mode iterator to handle both V2SI and V2SF modes.
22032
22033 2023-03-14 Sam James <sam@gentoo.org>
22034
22035 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
22036 including <sstream> earlier.
22037 * system.h: Add INCLUDE_SSTREAM.
22038
22039 2023-03-14 Richard Biener <rguenther@suse.de>
22040
22041 * tree-ssa-live.cc (remove_unused_locals): Do not treat
22042 the .DEFERRED_INIT of a variable as use, instead remove
22043 that if it is the only use.
22044
22045 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
22046
22047 PR rtl-optimization/107762
22048 * expr.cc (emit_group_store): Revert latest change.
22049
22050 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
22051
22052 PR tree-optimization/109005
22053 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
22054 aggregate type check.
22055
22056 2023-03-14 Jakub Jelinek <jakub@redhat.com>
22057
22058 PR tree-optimization/109115
22059 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
22060 r.upper_bound () on r.undefined_p () range.
22061
22062 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
22063
22064 PR tree-optimization/106896
22065 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
22066 implementatoin with probability_in; avoid some asserts.
22067
22068 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
22069
22070 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
22071
22072 2023-03-13 Sean Bright <sean@seanbright.com>
22073
22074 * doc/invoke.texi (Warning Options): Remove errant 'See'
22075 before @xref.
22076
22077 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22078
22079 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
22080 REG_OK_FOR_BASE_P): Remove.
22081
22082 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22083
22084 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
22085 (=vd,vd,vr,vr): Ditto.
22086 * config/riscv/vector.md: Ditto.
22087
22088 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22089
22090 * config/riscv/riscv-vector-builtins.cc
22091 (function_expander::use_compare_insn): Add operand predicate check.
22092
22093 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22094
22095 * config/riscv/vector.md: Fine tune RA constraints.
22096
22097 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
22098
22099 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
22100 hsaco assemble/link.
22101
22102 2023-03-13 Richard Biener <rguenther@suse.de>
22103
22104 PR tree-optimization/109046
22105 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
22106 piecewise complex loads.
22107
22108 2023-03-12 Jakub Jelinek <jakub@redhat.com>
22109
22110 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
22111 (aarch64_bf16_ptr_type_node): Adjust comment.
22112 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
22113 bfloat16_type_node rather than aarch64_bf16_type_node.
22114 (aarch64_libgcc_floating_mode_supported_p,
22115 aarch64_scalar_mode_supported_p): Also support BFmode.
22116 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
22117 (aarch64_invalid_binary_op): Remove BFmode related rejections.
22118 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
22119 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
22120 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
22121 aarch64_bf16_type_node.
22122 (aarch64_init_simd_builtin_types): Likewise.
22123 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
22124 which is created in tree.cc already.
22125 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
22126
22127 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
22128
22129 PR middle-end/109031
22130 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
22131 ensure that the type of x is as wide or wider than the type of a.
22132
22133 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22134
22135 PR target/108583
22136 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
22137 (*bitmask_shift_plus<mode>): New.
22138 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
22139 (@aarch64_bitmask_udiv<mode>3): Remove.
22140 * config/aarch64/aarch64.cc
22141 (aarch64_vectorize_can_special_div_by_constant,
22142 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
22143 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
22144 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
22145
22146 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22147
22148 PR target/108583
22149 * target.def (preferred_div_as_shifts_over_mult): New.
22150 * doc/tm.texi.in: Document it.
22151 * doc/tm.texi: Regenerate.
22152 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
22153 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
22154 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
22155
22156 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22157 Richard Sandiford <richard.sandiford@arm.com>
22158
22159 PR target/108583
22160 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
22161 single use.
22162
22163 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22164 Andrew MacLeod <amacleod@redhat.com>
22165
22166 PR target/108583
22167 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
22168 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
22169 Use it.
22170 (gimple_range_op_handler::maybe_non_standard): New.
22171 * range-op.cc (class operator_widen_plus_signed,
22172 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
22173 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
22174 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
22175 operator_widen_mult_unsigned::wi_fold,
22176 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
22177 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
22178 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
22179 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
22180
22181 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22182
22183 PR target/108583
22184 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
22185 * doc/tm.texi.in: Likewise.
22186 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
22187 * expmed.cc (expand_divmod): Likewise.
22188 * expmed.h (expand_divmod): Likewise.
22189 * expr.cc (force_operand, expand_expr_divmod): Likewise.
22190 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
22191 * target.def (can_special_div_by_const): Remove.
22192 * target.h: Remove tree-core.h include
22193 * targhooks.cc (default_can_special_div_by_const): Remove.
22194 * targhooks.h (default_can_special_div_by_const): Remove.
22195 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
22196 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
22197 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
22198
22199 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
22200
22201 * doc/install.texi2html: Fix issue number typo in comment.
22202
22203 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
22204
22205 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
22206 bool.
22207
22208 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
22209
22210 * doc/invoke.texi (Optimize Options): Add markup to
22211 description of asan-kernel-mem-intrinsic-prefix, and clarify
22212 wording slightly.
22213
22214 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
22215
22216 * doc/extend.texi (Named Address Spaces): Drop a redundant link
22217 to AVR-LibC.
22218
22219 2023-03-11 Jeff Law <jlaw@ventanamicro>
22220
22221 PR web/88860
22222 * doc/extend.texi: Clarify Attribute Syntax a bit.
22223
22224 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
22225
22226 * doc/install.texi (Prerequisites): Suggest using newer versions
22227 of Texinfo.
22228 (Final install): Clean up and modernize discussion of how to
22229 build or obtain the GCC manuals.
22230 * doc/install.texi2html: Update comment to point to the PR instead
22231 of "makeinfo 4.7 brokenness" (it's not specific to that version).
22232
22233 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22234
22235 PR target/107703
22236 * optabs.cc (expand_fix): For conversions from BFmode to integral,
22237 use shifts to convert it to SFmode first and then convert SFmode
22238 to integral.
22239
22240 2023-03-10 Andrew Pinski <apinski@marvell.com>
22241
22242 * config/aarch64/aarch64.md: Add a new define_split
22243 to help combine.
22244
22245 2023-03-10 Richard Biener <rguenther@suse.de>
22246
22247 * tree-ssa-structalias.cc (solve_graph): Immediately
22248 iterate self-cycles.
22249
22250 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22251
22252 PR tree-optimization/109008
22253 * range-op-float.cc (float_widen_lhs_range): If not
22254 -frounding-math and not IBM double double format, extend lhs
22255 range just by 0.5ulp rather than 1ulp in each direction.
22256
22257 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22258
22259 PR target/107998
22260 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
22261 $tmake_file.
22262 * config/i386/t-cygwin-w64: Remove.
22263
22264 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22265
22266 PR plugins/108634
22267 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
22268 C++14, don't declare as extern const arrays.
22269 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
22270 static constexpr member arrays for C++11 or C++14.
22271 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
22272 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
22273 (TREE_CODE_LENGTH): For C++11 or C++14 use
22274 tree_code_length_tmpl <0>::tree_code_length instead of
22275 tree_code_length.
22276 * tree.cc (tree_code_type, tree_code_length): Remove.
22277
22278 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22279
22280 PR other/108464
22281 * common.opt (fcanon-prefix-map): New option.
22282 * opts.cc: Include file-prefix-map.h.
22283 (flag_canon_prefix_map): New variable.
22284 (common_handle_option): Handle OPT_fcanon_prefix_map.
22285 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
22286 * file-prefix-map.h (flag_canon_prefix_map): Declare.
22287 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
22288 member.
22289 (add_prefix_map): Initialize canonicalize member from
22290 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
22291 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
22292 use lrealpath result only for map->canonicalize map entries.
22293 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
22294 * opts-global.cc (handle_common_deferred_options): Clear
22295 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
22296 * doc/invoke.texi (-fcanon-prefix-map): Document.
22297 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
22298 see also for -fcanon-prefix-map.
22299 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
22300
22301 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22302
22303 PR c/108079
22304 * cgraphunit.cc (check_global_declaration): Don't warn for unused
22305 variables which have OPT_Wunused_variable warning suppressed.
22306
22307 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22308
22309 PR tree-optimization/109008
22310 * range-op-float.cc (float_widen_lhs_range): If lb is
22311 minimum representable finite number or ub is maximum
22312 representable finite number, instead of widening it to
22313 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
22314 Temporarily clear flag_finite_math_only when canonicalizing
22315 the widened range.
22316
22317 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22318
22319 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
22320 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
22321 (gimple_fold_builtin): Ditto.
22322 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
22323 (class vleff): Ditto.
22324 (BASE): Ditto.
22325 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22326 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
22327 (vleff): Ditto.
22328 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
22329 (struct fault_load_def): Ditto.
22330 (SHAPE): Ditto.
22331 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22332 * config/riscv/riscv-vector-builtins.cc
22333 (rvv_arg_type_info::get_tree_type): Add size_ptr.
22334 (gimple_folder::gimple_folder): New class.
22335 (gimple_folder::fold): Ditto.
22336 (gimple_fold_builtin): New function.
22337 (get_read_vl_instance): Ditto.
22338 (get_read_vl_decl): Ditto.
22339 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
22340 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
22341 (get_read_vl_instance): New function.
22342 (get_read_vl_decl): Ditto.
22343 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
22344 (read_vl_insn_p): Ditto.
22345 (available_occurrence_p): Ditto.
22346 (backward_propagate_worthwhile_p): Ditto.
22347 (gen_vsetvl_pat): Adapt for vleff support.
22348 (get_forward_read_vl_insn): New function.
22349 (get_backward_fault_first_load_insn): Ditto.
22350 (source_equal_p): Adapt for vleff support.
22351 (first_ratio_invalid_for_second_sew_p): Remove.
22352 (first_ratio_invalid_for_second_lmul_p): Ditto.
22353 (first_lmul_less_than_second_lmul_p): Ditto.
22354 (first_ratio_less_than_second_ratio_p): Ditto.
22355 (support_relaxed_compatible_p): New function.
22356 (vector_insn_info::operator>): Remove.
22357 (vector_insn_info::operator>=): Refine.
22358 (vector_insn_info::parse_insn): Adapt for vleff support.
22359 (vector_insn_info::compatible_p): Ditto.
22360 (vector_insn_info::update_fault_first_load_avl): New function.
22361 (pass_vsetvl::transfer_after): Adapt for vleff support.
22362 (pass_vsetvl::demand_fusion): Ditto.
22363 (pass_vsetvl::cleanup_insns): Ditto.
22364 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
22365 redundant condtions.
22366 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
22367 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
22368 * config/riscv/riscv.md: Adapt for vleff support.
22369 * config/riscv/t-riscv: Ditto.
22370 * config/riscv/vector-iterators.md: New iterator.
22371 * config/riscv/vector.md (read_vlsi): New pattern.
22372 (read_vldi_zero_extend): Ditto.
22373 (@pred_fault_load<mode>): Ditto.
22374
22375 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22376
22377 * config/riscv/riscv-vector-builtins.cc
22378 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
22379 (function_expander::use_widen_ternop_insn): Ditto.
22380 * optabs.cc (maybe_gen_insn): Extend nops handling.
22381
22382 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22383
22384 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
22385 patterns according to RVV ISA.
22386 * config/riscv/vector-iterators.md: New iterators.
22387 * config/riscv/vector.md
22388 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
22389 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
22390 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
22391 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
22392 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
22393 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
22394 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
22395 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
22396 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
22397 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
22398 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
22399 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
22400 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
22401 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
22402
22403 2023-03-10 Michael Collison <collison@rivosinc.com>
22404
22405 * tree-vect-loop-manip.cc (vect_do_peeling): Use
22406 result of constant_lower_bound instead of vf for the lower
22407 bound of the epilog loop trip count.
22408
22409 2023-03-09 Tamar Christina <tamar.christina@arm.com>
22410
22411 * passes.cc (emergency_dump_function): Finish graph generation.
22412
22413 2023-03-09 Tamar Christina <tamar.christina@arm.com>
22414
22415 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
22416 and bottom bit only.
22417
22418 2023-03-09 Andrew Pinski <apinski@marvell.com>
22419
22420 PR tree-optimization/108980
22421 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
22422 Reorgnize the call to warning for not strict flexible arrays
22423 to be before the check of warned.
22424
22425 2023-03-09 Jason Merrill <jason@redhat.com>
22426
22427 * doc/extend.texi: Comment out __is_deducible docs.
22428
22429 2023-03-09 Jason Merrill <jason@redhat.com>
22430
22431 PR c++/105841
22432 * doc/extend.texi (Type Traits):: Document __is_deducible.
22433
22434 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
22435
22436 PR driver/108865
22437 * config.host: add object for x86_64-*-mingw*.
22438 * config/i386/sym-mingw32.cc: dummy file to attach
22439 symbol.
22440 * config/i386/utf8-mingw32.rc: windres resource file.
22441 * config/i386/winnt-utf8.manifest: XML manifest to
22442 enable UTF-8.
22443 * config/i386/x-mingw32: reference to x-mingw32-utf8.
22444 * config/i386/x-mingw32-utf8: Makefile fragment to
22445 embed UTF-8 manifest.
22446
22447 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
22448
22449 * lra-constraints.cc (process_alt_operands): Use operand modes for
22450 clobbered regs instead of the biggest access mode.
22451
22452 2023-03-09 Richard Biener <rguenther@suse.de>
22453
22454 PR middle-end/108995
22455 * fold-const.cc (extract_muldiv_1): Avoid folding
22456 (CST * b) / CST2 when sanitizing overflow and we rely on
22457 overflow being undefined.
22458
22459 2023-03-09 Jakub Jelinek <jakub@redhat.com>
22460 Richard Biener <rguenther@suse.de>
22461
22462 PR tree-optimization/109008
22463 * range-op-float.cc (float_widen_lhs_range): New function.
22464 (foperator_plus::op1_range, foperator_minus::op1_range,
22465 foperator_minus::op2_range, foperator_mult::op1_range,
22466 foperator_div::op1_range, foperator_div::op2_range): Use it.
22467
22468 2023-03-07 Jonathan Grant <jg@jguk.org>
22469
22470 PR sanitizer/81649
22471 * doc/invoke.texi (Instrumentation Options): Clarify
22472 LeakSanitizer behavior.
22473
22474 2023-03-07 Benson Muite <benson_muite@emailplus.org>
22475
22476 * doc/install.texi (Prerequisites): Add link to gmplib.org.
22477
22478 2023-03-07 Pan Li <pan2.li@intel.com>
22479 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22480
22481 PR target/108185
22482 PR target/108654
22483 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
22484 modes.
22485 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
22486 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
22487 * genmodes.cc (adj_precision): New.
22488 (ADJUST_PRECISION): New.
22489 (emit_mode_adjustments): Handle ADJUST_PRECISION.
22490
22491 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
22492
22493 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
22494
22495 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
22496
22497 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
22498 {s|u}{max|min} in QI, HI and DI modes.
22499 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
22500 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
22501 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
22502 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
22503 saved in SGPRs.
22504
22505 2023-03-06 Richard Biener <rguenther@suse.de>
22506
22507 PR tree-optimization/109025
22508 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
22509 the inner LC PHI use is the inner loop PHI latch definition
22510 before classifying an outer PHI as double reduction.
22511
22512 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
22513
22514 PR target/108429
22515 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
22516 generic.
22517 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
22518 (X86_TUNE_USE_SCATTER): Likewise.
22519
22520 2023-03-06 Xi Ruoyao <xry111@xry111.site>
22521
22522 PR target/109000
22523 * config/loongarch/loongarch.h (FP_RETURN): Use
22524 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
22525 (UNITS_PER_FP_ARG): Likewise.
22526
22527 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22528
22529 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
22530 (pass_vsetvl::backward_demand_fusion): Ditto.
22531
22532 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22533 SiYu Wu <siyu@isrc.iscas.ac.cn>
22534
22535 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
22536 instructions.
22537 (riscv_sm3p1_<mode>): New.
22538 (riscv_sm4ed_<mode>): New.
22539 (riscv_sm4ks_<mode>): New.
22540 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
22541 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
22542 ZKSH's built-in functions.
22543
22544 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22545 SiYu Wu <siyu@isrc.iscas.ac.cn>
22546
22547 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
22548 (riscv_sha256sig1_<mode>): New.
22549 (riscv_sha256sum0_<mode>): New.
22550 (riscv_sha256sum1_<mode>): New.
22551 (riscv_sha512sig0h): New.
22552 (riscv_sha512sig0l): New.
22553 (riscv_sha512sig1h): New.
22554 (riscv_sha512sig1l): New.
22555 (riscv_sha512sum0r): New.
22556 (riscv_sha512sum1r): New.
22557 (riscv_sha512sig0): New.
22558 (riscv_sha512sig1): New.
22559 (riscv_sha512sum0): New.
22560 (riscv_sha512sum1): New.
22561 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
22562 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
22563 built-in functions.
22564 (DIRECT_BUILTIN): Add new.
22565
22566 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22567 SiYu Wu <siyu@isrc.iscas.ac.cn>
22568
22569 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
22570 (DsA): New.
22571 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
22572 (riscv_aes32dsmi): New.
22573 (riscv_aes64ds): New.
22574 (riscv_aes64dsm): New.
22575 (riscv_aes64im): New.
22576 (riscv_aes64ks1i): New.
22577 (riscv_aes64ks2): New.
22578 (riscv_aes32esi): New.
22579 (riscv_aes32esmi): New.
22580 (riscv_aes64es): New.
22581 (riscv_aes64esm): New.
22582 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
22583 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
22584 ZKNE's built-in functions.
22585
22586 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22587 SiYu Wu <siyu@isrc.iscas.ac.cn>
22588
22589 * config/riscv/bitmanip.md: Add ZBKB's instructions.
22590 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
22591 * config/riscv/riscv.md: Add new type for crypto instructions.
22592 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
22593 description file.
22594 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
22595 extension's built-in function file.
22596
22597 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22598 SiYu Wu <siyu@isrc.iscas.ac.cn>
22599
22600 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
22601 (RISCV_FTYPE_NAME3): New.
22602 (RISCV_ATYPE_QI): New.
22603 (RISCV_ATYPE_HI): New.
22604 (RISCV_FTYPE_ATYPES2): New.
22605 (RISCV_FTYPE_ATYPES3): New.
22606 * config/riscv/riscv-ftypes.def (2): New.
22607 (3): New.
22608
22609 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
22610
22611 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
22612 use exact_log2().
22613
22614 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22615 kito-cheng <kito.cheng@sifive.com>
22616
22617 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
22618 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
22619 (riscv_register_pragmas): Add builtin function check call.
22620 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
22621 (check_builtin_call): New function.
22622 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
22623 (class vreinterpret): Ditto.
22624 (class vlmul_ext): Ditto.
22625 (class vlmul_trunc): Ditto.
22626 (class vset): Ditto.
22627 (class vget): Ditto.
22628 (BASE): Ditto.
22629 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22630 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
22631 (vluxei16): Ditto.
22632 (vluxei32): Ditto.
22633 (vluxei64): Ditto.
22634 (vloxei8): Ditto.
22635 (vloxei16): Ditto.
22636 (vloxei32): Ditto.
22637 (vloxei64): Ditto.
22638 (vsuxei8): Ditto.
22639 (vsuxei16): Ditto.
22640 (vsuxei32): Ditto.
22641 (vsuxei64): Ditto.
22642 (vsoxei8): Ditto.
22643 (vsoxei16): Ditto.
22644 (vsoxei32): Ditto.
22645 (vsoxei64): Ditto.
22646 (vundefined): Add new intrinsic.
22647 (vreinterpret): Ditto.
22648 (vlmul_ext): Ditto.
22649 (vlmul_trunc): Ditto.
22650 (vset): Ditto.
22651 (vget): Ditto.
22652 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
22653 (struct narrow_alu_def): Ditto.
22654 (struct reduc_alu_def): Ditto.
22655 (struct vundefined_def): Ditto.
22656 (struct misc_def): Ditto.
22657 (struct vset_def): Ditto.
22658 (struct vget_def): Ditto.
22659 (SHAPE): Ditto.
22660 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22661 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
22662 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22663 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22664 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22665 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22666 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22667 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22668 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22669 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22670 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22671 (DEF_RVV_LMUL1_OPS): Ditto.
22672 (DEF_RVV_LMUL2_OPS): Ditto.
22673 (DEF_RVV_LMUL4_OPS): Ditto.
22674 (vint16mf4_t): Ditto.
22675 (vint16mf2_t): Ditto.
22676 (vint16m1_t): Ditto.
22677 (vint16m2_t): Ditto.
22678 (vint16m4_t): Ditto.
22679 (vint16m8_t): Ditto.
22680 (vint32mf2_t): Ditto.
22681 (vint32m1_t): Ditto.
22682 (vint32m2_t): Ditto.
22683 (vint32m4_t): Ditto.
22684 (vint32m8_t): Ditto.
22685 (vint64m1_t): Ditto.
22686 (vint64m2_t): Ditto.
22687 (vint64m4_t): Ditto.
22688 (vint64m8_t): Ditto.
22689 (vuint16mf4_t): Ditto.
22690 (vuint16mf2_t): Ditto.
22691 (vuint16m1_t): Ditto.
22692 (vuint16m2_t): Ditto.
22693 (vuint16m4_t): Ditto.
22694 (vuint16m8_t): Ditto.
22695 (vuint32mf2_t): Ditto.
22696 (vuint32m1_t): Ditto.
22697 (vuint32m2_t): Ditto.
22698 (vuint32m4_t): Ditto.
22699 (vuint32m8_t): Ditto.
22700 (vuint64m1_t): Ditto.
22701 (vuint64m2_t): Ditto.
22702 (vuint64m4_t): Ditto.
22703 (vuint64m8_t): Ditto.
22704 (vint8mf4_t): Ditto.
22705 (vint8mf2_t): Ditto.
22706 (vint8m1_t): Ditto.
22707 (vint8m2_t): Ditto.
22708 (vint8m4_t): Ditto.
22709 (vint8m8_t): Ditto.
22710 (vuint8mf4_t): Ditto.
22711 (vuint8mf2_t): Ditto.
22712 (vuint8m1_t): Ditto.
22713 (vuint8m2_t): Ditto.
22714 (vuint8m4_t): Ditto.
22715 (vuint8m8_t): Ditto.
22716 (vint8mf8_t): Ditto.
22717 (vuint8mf8_t): Ditto.
22718 (vfloat32mf2_t): Ditto.
22719 (vfloat32m1_t): Ditto.
22720 (vfloat32m2_t): Ditto.
22721 (vfloat32m4_t): Ditto.
22722 (vfloat64m1_t): Ditto.
22723 (vfloat64m2_t): Ditto.
22724 (vfloat64m4_t): Ditto.
22725 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
22726 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
22727 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22728 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22729 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22730 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22731 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22732 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22733 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22734 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22735 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22736 (DEF_RVV_LMUL1_OPS): Ditto.
22737 (DEF_RVV_LMUL2_OPS): Ditto.
22738 (DEF_RVV_LMUL4_OPS): Ditto.
22739 (DEF_RVV_TYPE_INDEX): Ditto.
22740 (required_extensions_p): Adapt for new intrinsic support/
22741 (get_required_extensions): New function.
22742 (check_required_extensions): Ditto.
22743 (unsigned_base_type_p): Remove.
22744 (rvv_arg_type_info::get_scalar_ptr_type): New function.
22745 (get_mode_for_bitsize): Remove.
22746 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
22747 (rvv_arg_type_info::get_base_vector_type): Ditto.
22748 (rvv_arg_type_info::get_function_type_index): Ditto.
22749 (DEF_RVV_BASE_TYPE): New def.
22750 (function_builder::apply_predication): New class.
22751 (function_expander::mask_mode): Ditto.
22752 (function_checker::function_checker): Ditto.
22753 (function_checker::report_non_ice): Ditto.
22754 (function_checker::report_out_of_range): Ditto.
22755 (function_checker::require_immediate): Ditto.
22756 (function_checker::require_immediate_range): Ditto.
22757 (function_checker::check): Ditto.
22758 (check_builtin_call): Ditto.
22759 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
22760 (DEF_RVV_BASE_TYPE): Ditto.
22761 (DEF_RVV_TYPE_INDEX): Ditto.
22762 (vbool64_t): Ditto.
22763 (vbool32_t): Ditto.
22764 (vbool16_t): Ditto.
22765 (vbool8_t): Ditto.
22766 (vbool4_t): Ditto.
22767 (vbool2_t): Ditto.
22768 (vbool1_t): Ditto.
22769 (vuint8mf8_t): Ditto.
22770 (vuint8mf4_t): Ditto.
22771 (vuint8mf2_t): Ditto.
22772 (vuint8m1_t): Ditto.
22773 (vuint8m2_t): Ditto.
22774 (vint8m4_t): Ditto.
22775 (vuint8m4_t): Ditto.
22776 (vint8m8_t): Ditto.
22777 (vuint8m8_t): Ditto.
22778 (vint16mf4_t): Ditto.
22779 (vuint16mf2_t): Ditto.
22780 (vuint16m1_t): Ditto.
22781 (vuint16m2_t): Ditto.
22782 (vuint16m4_t): Ditto.
22783 (vuint16m8_t): Ditto.
22784 (vint32mf2_t): Ditto.
22785 (vuint32m1_t): Ditto.
22786 (vuint32m2_t): Ditto.
22787 (vuint32m4_t): Ditto.
22788 (vuint32m8_t): Ditto.
22789 (vuint64m1_t): Ditto.
22790 (vuint64m2_t): Ditto.
22791 (vuint64m4_t): Ditto.
22792 (vuint64m8_t): Ditto.
22793 (vfloat32mf2_t): Ditto.
22794 (vfloat32m1_t): Ditto.
22795 (vfloat32m2_t): Ditto.
22796 (vfloat32m4_t): Ditto.
22797 (vfloat32m8_t): Ditto.
22798 (vfloat64m1_t): Ditto.
22799 (vfloat64m4_t): Ditto.
22800 (vector): Move it def.
22801 (scalar): Ditto.
22802 (mask): Ditto.
22803 (signed_vector): Ditto.
22804 (unsigned_vector): Ditto.
22805 (unsigned_scalar): Ditto.
22806 (vector_ptr): Ditto.
22807 (scalar_ptr): Ditto.
22808 (scalar_const_ptr): Ditto.
22809 (void): Ditto.
22810 (size): Ditto.
22811 (ptrdiff): Ditto.
22812 (unsigned_long): Ditto.
22813 (long): Ditto.
22814 (eew8_index): Ditto.
22815 (eew16_index): Ditto.
22816 (eew32_index): Ditto.
22817 (eew64_index): Ditto.
22818 (shift_vector): Ditto.
22819 (double_trunc_vector): Ditto.
22820 (quad_trunc_vector): Ditto.
22821 (oct_trunc_vector): Ditto.
22822 (double_trunc_scalar): Ditto.
22823 (double_trunc_signed_vector): Ditto.
22824 (double_trunc_unsigned_vector): Ditto.
22825 (double_trunc_unsigned_scalar): Ditto.
22826 (double_trunc_float_vector): Ditto.
22827 (float_vector): Ditto.
22828 (lmul1_vector): Ditto.
22829 (widen_lmul1_vector): Ditto.
22830 (eew8_interpret): Ditto.
22831 (eew16_interpret): Ditto.
22832 (eew32_interpret): Ditto.
22833 (eew64_interpret): Ditto.
22834 (vlmul_ext_x2): Ditto.
22835 (vlmul_ext_x4): Ditto.
22836 (vlmul_ext_x8): Ditto.
22837 (vlmul_ext_x16): Ditto.
22838 (vlmul_ext_x32): Ditto.
22839 (vlmul_ext_x64): Ditto.
22840 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
22841 (struct function_type_info): New function.
22842 (struct rvv_arg_type_info): Ditto.
22843 (class function_checker): New class.
22844 (rvv_arg_type_info::get_scalar_type): New function.
22845 (rvv_arg_type_info::get_vector_type): Ditto.
22846 (function_expander::ret_mode): New function.
22847 (function_checker::arg_mode): Ditto.
22848 (function_checker::ret_mode): Ditto.
22849 * config/riscv/t-riscv: Add generator.
22850 * config/riscv/vector-iterators.md: New iterators.
22851 * config/riscv/vector.md (vundefined<mode>): New pattern.
22852 (@vundefined<mode>): Ditto.
22853 (@vreinterpret<mode>): Ditto.
22854 (@vlmul_extx2<mode>): Ditto.
22855 (@vlmul_extx4<mode>): Ditto.
22856 (@vlmul_extx8<mode>): Ditto.
22857 (@vlmul_extx16<mode>): Ditto.
22858 (@vlmul_extx32<mode>): Ditto.
22859 (@vlmul_extx64<mode>): Ditto.
22860 (*vlmul_extx2<mode>): Ditto.
22861 (*vlmul_extx4<mode>): Ditto.
22862 (*vlmul_extx8<mode>): Ditto.
22863 (*vlmul_extx16<mode>): Ditto.
22864 (*vlmul_extx32<mode>): Ditto.
22865 (*vlmul_extx64<mode>): Ditto.
22866 * config/riscv/genrvv-type-indexer.cc: New file.
22867
22868 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22869
22870 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
22871 (slide1_sew64_helper): New function.
22872 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
22873 (get_unknown_min_value): Ditto.
22874 (force_vector_length_operand): Ditto.
22875 (gen_no_side_effects_vsetvl_rtx): Ditto.
22876 (get_vl_x2_rtx): Ditto.
22877 (slide1_sew64_helper): Ditto.
22878 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
22879 (class vrgather): Ditto.
22880 (class vrgatherei16): Ditto.
22881 (class vcompress): Ditto.
22882 (BASE): Ditto.
22883 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22884 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
22885 (vslidedown): Ditto.
22886 (vslide1up): Ditto.
22887 (vslide1down): Ditto.
22888 (vfslide1up): Ditto.
22889 (vfslide1down): Ditto.
22890 (vrgather): Ditto.
22891 (vrgatherei16): Ditto.
22892 (vcompress): Ditto.
22893 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
22894 (vint8mf8_t): Ditto.
22895 (vint8mf4_t): Ditto.
22896 (vint8mf2_t): Ditto.
22897 (vint8m1_t): Ditto.
22898 (vint8m2_t): Ditto.
22899 (vint8m4_t): Ditto.
22900 (vint16mf4_t): Ditto.
22901 (vint16mf2_t): Ditto.
22902 (vint16m1_t): Ditto.
22903 (vint16m2_t): Ditto.
22904 (vint16m4_t): Ditto.
22905 (vint16m8_t): Ditto.
22906 (vint32mf2_t): Ditto.
22907 (vint32m1_t): Ditto.
22908 (vint32m2_t): Ditto.
22909 (vint32m4_t): Ditto.
22910 (vint32m8_t): Ditto.
22911 (vint64m1_t): Ditto.
22912 (vint64m2_t): Ditto.
22913 (vint64m4_t): Ditto.
22914 (vint64m8_t): Ditto.
22915 (vuint8mf8_t): Ditto.
22916 (vuint8mf4_t): Ditto.
22917 (vuint8mf2_t): Ditto.
22918 (vuint8m1_t): Ditto.
22919 (vuint8m2_t): Ditto.
22920 (vuint8m4_t): Ditto.
22921 (vuint16mf4_t): Ditto.
22922 (vuint16mf2_t): Ditto.
22923 (vuint16m1_t): Ditto.
22924 (vuint16m2_t): Ditto.
22925 (vuint16m4_t): Ditto.
22926 (vuint16m8_t): Ditto.
22927 (vuint32mf2_t): Ditto.
22928 (vuint32m1_t): Ditto.
22929 (vuint32m2_t): Ditto.
22930 (vuint32m4_t): Ditto.
22931 (vuint32m8_t): Ditto.
22932 (vuint64m1_t): Ditto.
22933 (vuint64m2_t): Ditto.
22934 (vuint64m4_t): Ditto.
22935 (vuint64m8_t): Ditto.
22936 (vfloat32mf2_t): Ditto.
22937 (vfloat32m1_t): Ditto.
22938 (vfloat32m2_t): Ditto.
22939 (vfloat32m4_t): Ditto.
22940 (vfloat32m8_t): Ditto.
22941 (vfloat64m1_t): Ditto.
22942 (vfloat64m2_t): Ditto.
22943 (vfloat64m4_t): Ditto.
22944 (vfloat64m8_t): Ditto.
22945 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
22946 * config/riscv/riscv.md: Adjust RVV instruction types.
22947 * config/riscv/vector-iterators.md (down): New iterator.
22948 (=vd,vr): New attribute.
22949 (UNSPEC_VSLIDE1UP): New unspec.
22950 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
22951 (*pred_slide<ud><mode>): Ditto.
22952 (*pred_slide<ud><mode>_extended): Ditto.
22953 (@pred_gather<mode>): Ditto.
22954 (@pred_gather<mode>_scalar): Ditto.
22955 (@pred_gatherei16<mode>): Ditto.
22956 (@pred_compress<mode>): Ditto.
22957
22958 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22959
22960 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
22961
22962 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22963
22964 * config/riscv/constraints.md (Wb1): New constraint.
22965 * config/riscv/predicates.md
22966 (vector_least_significant_set_mask_operand): New predicate.
22967 (vector_broadcast_mask_operand): Ditto.
22968 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
22969 (gen_scalar_move_mask): New function.
22970 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
22971 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
22972 (class vmv_s): Ditto.
22973 (BASE): Ditto.
22974 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22975 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
22976 (vmv_s): Ditto.
22977 (vfmv_f): Ditto.
22978 (vfmv_s): Ditto.
22979 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
22980 (SHAPE): Ditto.
22981 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22982 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
22983 (function_expander::use_exact_insn): New function.
22984 (function_expander::use_contiguous_load_insn): New function.
22985 (function_expander::use_contiguous_store_insn): New function.
22986 (function_expander::use_ternop_insn): New function.
22987 (function_expander::use_widen_ternop_insn): New function.
22988 (function_expander::use_scalar_move_insn): New function.
22989 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
22990 * config/riscv/riscv-vector-builtins.h
22991 (function_expander::add_scalar_move_mask_operand): New class.
22992 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
22993 (scalar_move_insn_p): Ditto.
22994 (has_vsetvl_killed_avl_p): Ditto.
22995 (anticipatable_occurrence_p): Ditto.
22996 (insert_vsetvl): Ditto.
22997 (get_vl_vtype_info): Ditto.
22998 (calculate_sew): Ditto.
22999 (calculate_vlmul): Ditto.
23000 (incompatible_avl_p): Ditto.
23001 (different_sew_p): Ditto.
23002 (different_lmul_p): Ditto.
23003 (different_ratio_p): Ditto.
23004 (different_tail_policy_p): Ditto.
23005 (different_mask_policy_p): Ditto.
23006 (possible_zero_avl_p): Ditto.
23007 (first_ratio_invalid_for_second_sew_p): Ditto.
23008 (first_ratio_invalid_for_second_lmul_p): Ditto.
23009 (second_ratio_invalid_for_first_sew_p): Ditto.
23010 (second_ratio_invalid_for_first_lmul_p): Ditto.
23011 (second_sew_less_than_first_sew_p): Ditto.
23012 (first_sew_less_than_second_sew_p): Ditto.
23013 (compare_lmul): Ditto.
23014 (second_lmul_less_than_first_lmul_p): Ditto.
23015 (first_lmul_less_than_second_lmul_p): Ditto.
23016 (first_ratio_less_than_second_ratio_p): Ditto.
23017 (second_ratio_less_than_first_ratio_p): Ditto.
23018 (DEF_INCOMPATIBLE_COND): Ditto.
23019 (greatest_sew): Ditto.
23020 (first_sew): Ditto.
23021 (second_sew): Ditto.
23022 (first_vlmul): Ditto.
23023 (second_vlmul): Ditto.
23024 (first_ratio): Ditto.
23025 (second_ratio): Ditto.
23026 (vlmul_for_first_sew_second_ratio): Ditto.
23027 (ratio_for_second_sew_first_vlmul): Ditto.
23028 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
23029 (always_unavailable): Ditto.
23030 (avl_unavailable_p): Ditto.
23031 (sew_unavailable_p): Ditto.
23032 (lmul_unavailable_p): Ditto.
23033 (ge_sew_unavailable_p): Ditto.
23034 (ge_sew_lmul_unavailable_p): Ditto.
23035 (ge_sew_ratio_unavailable_p): Ditto.
23036 (DEF_UNAVAILABLE_COND): Ditto.
23037 (same_sew_lmul_demand_p): Ditto.
23038 (propagate_avl_across_demands_p): Ditto.
23039 (reg_available_p): Ditto.
23040 (avl_info::has_non_zero_avl): Ditto.
23041 (vl_vtype_info::has_non_zero_avl): Ditto.
23042 (vector_insn_info::operator>=): Refactor.
23043 (vector_insn_info::parse_insn): Adjust for scalar move.
23044 (vector_insn_info::demand_vl_vtype): Remove.
23045 (vector_insn_info::compatible_p): New function.
23046 (vector_insn_info::compatible_avl_p): Ditto.
23047 (vector_insn_info::compatible_vtype_p): Ditto.
23048 (vector_insn_info::available_p): Ditto.
23049 (vector_insn_info::merge): Ditto.
23050 (vector_insn_info::fuse_avl): Ditto.
23051 (vector_insn_info::fuse_sew_lmul): Ditto.
23052 (vector_insn_info::fuse_tail_policy): Ditto.
23053 (vector_insn_info::fuse_mask_policy): Ditto.
23054 (vector_insn_info::dump): Ditto.
23055 (vector_infos_manager::release): Ditto.
23056 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
23057 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
23058 (pass_vsetvl::hard_empty_block_p): Ditto.
23059 (pass_vsetvl::backward_demand_fusion): Ditto.
23060 (pass_vsetvl::forward_demand_fusion): Ditto.
23061 (pass_vsetvl::refine_vsetvls): Ditto.
23062 (pass_vsetvl::cleanup_vsetvls): Ditto.
23063 (pass_vsetvl::commit_vsetvls): Ditto.
23064 (pass_vsetvl::propagate_avl): Ditto.
23065 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
23066 (struct demands_pair): Ditto.
23067 (struct demands_cond): Ditto.
23068 (struct demands_fuse_rule): Ditto.
23069 * config/riscv/vector-iterators.md: New iterator.
23070 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
23071 (*pred_broadcast<mode>): Ditto.
23072 (*pred_broadcast<mode>_extended_scalar): Ditto.
23073 (@pred_extract_first<mode>): Ditto.
23074 (*pred_extract_first<mode>): Ditto.
23075 (@pred_extract_first_trunc<mode>): Ditto.
23076 * config/riscv/riscv-vsetvl.def: New file.
23077
23078 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
23079
23080 * config/riscv/bitmanip.md: allow 0 constant in max/min
23081 pattern.
23082
23083 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
23084
23085 * config/riscv/bitmanip.md: Fix wrong index in the check.
23086
23087 2023-03-04 Jakub Jelinek <jakub@redhat.com>
23088
23089 PR middle-end/109006
23090 * vec.cc (test_auto_alias): Adjust comment for removal of
23091 m_vecdata.
23092 * read-rtl-function.cc (function_reader::parse_block): Likewise.
23093 * gdbhooks.py: Likewise.
23094
23095 2023-03-04 Jakub Jelinek <jakub@redhat.com>
23096
23097 PR testsuite/108973
23098 * selftest-diagnostic.cc
23099 (test_diagnostic_context::test_diagnostic_context): Set
23100 caret_max_width to 80.
23101
23102 2023-03-03 Alexandre Oliva <oliva@adacore.com>
23103
23104 * gimple-ssa-warn-access.cc
23105 (pass_waccess::check_dangling_stores): Skip non-stores.
23106
23107 2023-03-03 Alexandre Oliva <oliva@adacore.com>
23108
23109 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
23110 after vmsr and vmrs, and lower the case of P0.
23111
23112 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
23113
23114 PR middle-end/109006
23115 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
23116
23117 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
23118
23119 PR middle-end/109006
23120 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
23121
23122 2023-03-03 Jakub Jelinek <jakub@redhat.com>
23123
23124 PR c/108986
23125 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
23126 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
23127 suppressed on stmt. For [static %E] warning, print access_nelts
23128 rather than access_size. Fix up comment wording.
23129
23130 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
23131
23132 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
23133 arch14 instead of z16.
23134
23135 2023-03-03 Anthony Green <green@moxielogic.com>
23136
23137 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
23138
23139 2023-03-03 Anthony Green <green@moxielogic.com>
23140
23141 * config/moxie/constraints.md (A, B, W): Change
23142 define_constraint to define_memory_constraint.
23143
23144 2023-03-03 Xi Ruoyao <xry111@xry111.site>
23145
23146 * toplev.cc (process_options): Fix the spelling of
23147 "-fstack-clash-protection".
23148
23149 2023-03-03 Richard Biener <rguenther@suse.de>
23150
23151 PR tree-optimization/109002
23152 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
23153 PHI-translate ANTIC_IN.
23154
23155 2023-03-03 Jakub Jelinek <jakub@redhat.com>
23156
23157 PR tree-optimization/108988
23158 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
23159 size_type_node before passing it as argument to fwrite. Formatting
23160 fixes.
23161
23162 2023-03-03 Richard Biener <rguenther@suse.de>
23163
23164 PR target/108738
23165 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
23166 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
23167 * config/i386/i386-features.h (scalar_chain::max_visits): New.
23168 (scalar_chain::build): Add bitmap parameter, return boolean.
23169 (scalar_chain::add_insn): Likewise.
23170 (scalar_chain::analyze_register_chain): Likewise.
23171 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
23172 Initialize max_visits.
23173 (scalar_chain::analyze_register_chain): When we exhaust
23174 max_visits, abort. Also abort when running into any
23175 disallowed insn.
23176 (scalar_chain::add_insn): Propagate abort.
23177 (scalar_chain::build): Likewise. When aborting amend
23178 the set of disallowed insn with the insns set.
23179 (convert_scalars_to_vector): Adjust. Do not convert aborted
23180 chains.
23181
23182 2023-03-03 Richard Biener <rguenther@suse.de>
23183
23184 PR debug/108772
23185 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
23186 generate a DIE for a function scope static.
23187
23188 2023-03-03 Alexandre Oliva <oliva@adacore.com>
23189
23190 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
23191
23192 2023-03-02 Jakub Jelinek <jakub@redhat.com>
23193
23194 PR target/108883
23195 * target.h (emit_support_tinfos_callback): New typedef.
23196 * targhooks.h (default_emit_support_tinfos): Declare.
23197 * targhooks.cc (default_emit_support_tinfos): New function.
23198 * target.def (emit_support_tinfos): New target hook.
23199 * doc/tm.texi.in (emit_support_tinfos): Document it.
23200 * doc/tm.texi: Regenerated.
23201 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
23202 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
23203
23204 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
23205
23206 * ira-costs.cc: Include print-rtl.h.
23207 (record_reg_classes, scan_one_insn): Add code to print debug info.
23208 (record_operand_costs): Find and use smaller cost for hard reg
23209 move.
23210
23211 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
23212 Paul-Antoine Arras <pa@codesourcery.com>
23213
23214 * builtins.cc (mathfn_built_in_explicit): New.
23215 * config/gcn/gcn.cc: Include case-cfn-macros.h.
23216 (mathfn_built_in_explicit): Add prototype.
23217 (gcn_vectorize_builtin_vectorized_function): New.
23218 (gcn_libc_has_function): New.
23219 (TARGET_LIBC_HAS_FUNCTION): Define.
23220 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
23221
23222 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
23223
23224 PR tree-optimization/108979
23225 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
23226 operations on invariants.
23227
23228 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
23229
23230 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
23231 * config/s390/s390.cc (s390_option_override_internal): Make
23232 partial vector usage the default from z13 on.
23233 * config/s390/vector.md (len_load_v16qi): Add.
23234 (len_store_v16qi): Add.
23235
23236 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
23237
23238 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
23239 of constant 0 offset.
23240
23241 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
23242
23243 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
23244 instead of long.
23245 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
23246
23247 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
23248
23249 * config.gcc: add -with-{no-}msa build option.
23250 * config/mips/mips.h: Likewise.
23251 * doc/install.texi: Likewise.
23252
23253 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
23254
23255 PR tree-optimization/108603
23256 * explow.cc (convert_memory_address_addr_space_1): Only wrap
23257 the result of a recursive call in a CONST if no instructions
23258 were emitted.
23259
23260 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
23261
23262 PR tree-optimization/108430
23263 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
23264 of inverted condition.
23265
23266 2023-03-02 Jakub Jelinek <jakub@redhat.com>
23267
23268 PR c++/108934
23269 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
23270 comparison copy the bytes from ptr to a temporary buffer and clearing
23271 padding bits in there.
23272
23273 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
23274
23275 PR middle-end/108545
23276 * gimplify.cc (struct tree_operand_hash_no_se): New.
23277 (omp_index_mapping_groups_1, omp_index_mapping_groups,
23278 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
23279 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
23280 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
23281 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
23282 of tree_operand_hash.
23283
23284 2023-03-01 LIU Hao <lh_mouse@126.com>
23285
23286 PR pch/14940
23287 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
23288 Remove the size limit `pch_VA_max_size`
23289
23290 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
23291
23292 PR middle-end/108546
23293 * omp-low.cc (lower_omp_target): Remove optional handling
23294 on the receiver side, i.e. inside target (data), for
23295 use_device_ptr.
23296
23297 2023-03-01 Jakub Jelinek <jakub@redhat.com>
23298
23299 PR debug/108967
23300 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
23301 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
23302
23303 2023-03-01 Richard Biener <rguenther@suse.de>
23304
23305 PR tree-optimization/108970
23306 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
23307 Check we can copy the BBs.
23308 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
23309 check.
23310 (vect_do_peeling): Streamline error handling.
23311
23312 2023-03-01 Richard Biener <rguenther@suse.de>
23313
23314 PR tree-optimization/108950
23315 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
23316 Check oprnd0 is defined in the loop.
23317 * tree-vect-loop.cc (vectorizable_reduction): Record all
23318 operands vector types, compute that of invariants and
23319 properly update their SLP nodes.
23320
23321 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
23322
23323 PR target/108240
23324 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
23325 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
23326
23327 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
23328
23329 PR middle-end/107411
23330 PR middle-end/107411
23331 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
23332 xasprintf.
23333 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
23334 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
23335
23336 2023-02-28 Jakub Jelinek <jakub@redhat.com>
23337
23338 PR sanitizer/108894
23339 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
23340 comparison rather than index > bound.
23341 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
23342 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
23343 * doc/invoke.texi (-fsanitize=bounds): Document that whether
23344 flexible array member-like arrays are instrumented or not depends
23345 on -fstrict-flex-arrays* options of strict_flex_array attributes.
23346 (-fsanitize=bounds-strict): Document that flexible array members
23347 are not instrumented.
23348
23349 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
23350
23351 PR target/108922
23352 Revert:
23353 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
23354 (fmod<mode>3): Ditto.
23355 (fpremxf4_i387): Ditto.
23356 (reminderxf3): Ditto.
23357 (reminder<mode>3): Ditto.
23358 (fprem1xf4_i387): Ditto.
23359
23360 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
23361
23362 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
23363 generating FFS with mismatched operand and result modes, by using
23364 an explicit SIGN_EXTEND/ZERO_EXTEND.
23365 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
23366 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
23367
23368 2023-02-27 Patrick Palka <ppalka@redhat.com>
23369
23370 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
23371 * lra-int.h (lra_change_class): Likewise.
23372 * recog.h (which_op_alt): Likewise.
23373 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
23374 instead of static.
23375
23376 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23377
23378 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
23379 New prototype.
23380 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
23381 New function.
23382 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
23383 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
23384
23385 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
23386
23387 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
23388 (xtensa_get_config_v3): New functions.
23389
23390 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23391
23392 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
23393
23394 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
23395
23396 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
23397 the macro to 0x1000000000.
23398
23399 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
23400
23401 PR modula2/108261
23402 * doc/gm2.texi (-fm2-pathname): New option documented.
23403 (-fm2-pathnameI): New option documented.
23404 (-fm2-prefix=): New option documented.
23405 (-fruntime-modules=): Update default module list.
23406
23407 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
23408
23409 PR target/108919
23410 * config/xtensa/xtensa-protos.h
23411 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
23412 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
23413 to xtensa_expand_call.
23414 (xtensa_expand_call): Emit the call and add a clobber expression
23415 for the static chain to it in case of windowed ABI.
23416 * config/xtensa/xtensa.md (call, call_value, sibcall)
23417 (sibcall_value): Call xtensa_expand_call and complete expansion
23418 right after that call.
23419
23420 2023-02-24 Richard Biener <rguenther@suse.de>
23421
23422 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
23423 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
23424 changing alignment of vec<T, A, vl_embed> and simplifying
23425 address.
23426 (vec<T, A, vl_embed>::address): Compute as this + 1.
23427 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
23428 vector instead of the offset of the m_vecdata member.
23429 (auto_vec<T, N>::m_data): Turn storage into
23430 uninitialized unsigned char.
23431 (auto_vec<T, N>::auto_vec): Allow allocation of one
23432 stack member. Initialize m_vec in a special way to
23433 avoid later stringop overflow diagnostics.
23434 * vec.cc (test_auto_alias): New.
23435 (vec_cc_tests): Call it.
23436
23437 2023-02-24 Richard Biener <rguenther@suse.de>
23438
23439 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
23440 take a const reference to the object, use address to
23441 access data.
23442 (vec<T, A, vl_embed>::contains): Use address to access data.
23443 (vec<T, A, vl_embed>::operator[]): Use address instead of
23444 m_vecdata to access data.
23445 (vec<T, A, vl_embed>::iterate): Likewise.
23446 (vec<T, A, vl_embed>::copy): Likewise.
23447 (vec<T, A, vl_embed>::quick_push): Likewise.
23448 (vec<T, A, vl_embed>::pop): Likewise.
23449 (vec<T, A, vl_embed>::quick_insert): Likewise.
23450 (vec<T, A, vl_embed>::ordered_remove): Likewise.
23451 (vec<T, A, vl_embed>::unordered_remove): Likewise.
23452 (vec<T, A, vl_embed>::block_remove): Likewise.
23453 (vec<T, A, vl_heap>::address): Likewise.
23454
23455 2023-02-24 Martin Liska <mliska@suse.cz>
23456
23457 PR sanitizer/108834
23458 * asan.cc (asan_add_global): Use proper TU name for normal
23459 global variables (and aux_base_name for the artificial one).
23460
23461 2023-02-24 Jakub Jelinek <jakub@redhat.com>
23462
23463 * config/i386/i386-builtin.def: Update description of BDESC
23464 and BDESC_FIRST in file comment to include mask2.
23465
23466 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23467
23468 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
23469
23470 2023-02-24 Jakub Jelinek <jakub@redhat.com>
23471
23472 PR middle-end/108854
23473 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
23474 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
23475 nodes and adjust their DECL_CONTEXT.
23476
23477 2023-02-24 Jakub Jelinek <jakub@redhat.com>
23478
23479 PR target/108881
23480 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
23481 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
23482 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
23483 __builtin_ia32_cvtne2ps2bf16_v8bf,
23484 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
23485 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
23486 __builtin_ia32_cvtneps2bf16_v8sf_mask,
23487 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
23488 __builtin_ia32_cvtneps2bf16_v4sf_mask,
23489 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
23490 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
23491 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
23492 __builtin_ia32_dpbf16ps_v4sf_mask,
23493 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
23494 OPTION_MASK_ISA_AVX512VL.
23495
23496 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
23497
23498 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
23499 Add non-compact 32-bit multilibs.
23500
23501 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
23502
23503 * config/mips/mips.md (*clo<mode>2): New pattern.
23504
23505 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
23506
23507 * config/mips/mips.h (machine_function): New variable
23508 use_hazard_barrier_return_p.
23509 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
23510 (mips_hb_return_internal): New insn pattern.
23511 * config/mips/mips.cc (mips_attribute_table): Add attribute
23512 use_hazard_barrier_return.
23513 (mips_use_hazard_barrier_return_p): New static function.
23514 (mips_function_attr_inlinable_p): Likewise.
23515 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
23516 Emit error for unsupported architecture choice.
23517 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
23518 Return false for use_hazard_barrier_return.
23519 (mips_expand_epilogue): Emit hazard barrier return.
23520 * doc/extend.texi: Document use_hazard_barrier_return.
23521
23522 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23523
23524 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
23525 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
23526 for the gcc-internal headers.
23527
23528 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23529
23530 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
23531 and $(POSTCOMPILE) instead of manual dependency listing.
23532 * config/xtensa/xtensa-dynconfig.c: Rename to ...
23533 * config/xtensa/xtensa-dynconfig.cc: ... this.
23534
23535 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
23536
23537 * doc/cfg.texi: Reorder index entries around @items.
23538 * doc/cpp.texi: Ditto.
23539 * doc/cppenv.texi: Ditto.
23540 * doc/cppopts.texi: Ditto.
23541 * doc/generic.texi: Ditto.
23542 * doc/install.texi: Ditto.
23543 * doc/extend.texi: Ditto.
23544 * doc/invoke.texi: Ditto.
23545 * doc/md.texi: Ditto.
23546 * doc/rtl.texi: Ditto.
23547 * doc/tm.texi.in: Ditto.
23548 * doc/trouble.texi: Ditto.
23549 * doc/tm.texi: Regenerate.
23550
23551 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23552
23553 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
23554 the occurrence of general-purpose register used only once and for
23555 transferring intermediate value.
23556
23557 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23558
23559 * config/xtensa/xtensa.cc (machine_function): Add new member
23560 'eliminated_callee_saved_bmp'.
23561 (xtensa_can_eliminate_callee_saved_reg_p): New function to
23562 determine whether the register can be eliminated or not.
23563 (xtensa_expand_prologue): Add invoking the above function and
23564 elimination the use of callee-saved register by using its stack
23565 slot through the stack pointer (or the frame pointer if needed)
23566 directly.
23567 (xtensa_expand_prologue): Modify to not emit register restoration
23568 insn from its stack slot if the register is already eliminated.
23569
23570 2023-02-23 Jakub Jelinek <jakub@redhat.com>
23571
23572 PR translation/108890
23573 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
23574 around fatal_error format strings.
23575
23576 2023-02-23 Richard Biener <rguenther@suse.de>
23577
23578 * tree-ssa-structalias.cc (handle_lhs_call): Do not
23579 re-create rhsc, only truncate it.
23580
23581 2023-02-23 Jakub Jelinek <jakub@redhat.com>
23582
23583 PR middle-end/106258
23584 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
23585 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
23586
23587 2023-02-23 Richard Biener <rguenther@suse.de>
23588
23589 * tree-if-conv.cc (tree_if_conversion): Properly manage
23590 memory of refs and the contained data references.
23591
23592 2023-02-23 Richard Biener <rguenther@suse.de>
23593
23594 PR tree-optimization/108888
23595 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
23596 calls to predicate.
23597 (predicate_statements): Only predicate calls with PLF_2.
23598
23599 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23600
23601 * config/xtensa/xtensa.md
23602 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
23603 Add missing "SI:" to PLUS RTXes.
23604
23605 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23606
23607 PR target/108876
23608 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
23609 Emit (use (reg:SI A0_REG)) at the end in the sibling call
23610 (i.e. the same place as (return) in the normal call).
23611
23612 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23613
23614 Revert:
23615 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23616
23617 PR target/108876
23618 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23619 for A0_REG.
23620 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23621 (sibcall_value, sibcall_value_internal): Add 'use' expression
23622 for A0_REG.
23623
23624 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
23625
23626 * doc/cppdiropts.texi: Reorder @opindex commands to precede
23627 @items they relate to.
23628 * doc/cppopts.texi: Ditto.
23629 * doc/cppwarnopts.texi: Ditto.
23630 * doc/invoke.texi: Ditto.
23631 * doc/lto.texi: Ditto.
23632
23633 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
23634
23635 * internal-fn.cc (expand_MASK_CALL): New.
23636 * internal-fn.def (MASK_CALL): New.
23637 * internal-fn.h (expand_MASK_CALL): New prototype.
23638 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
23639 for mask arguments also.
23640 * tree-if-conv.cc: Include cgraph.h.
23641 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
23642 (predicate_statements): Convert functions to IFN_MASK_CALL.
23643 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
23644 IFN_MASK_CALL as a SIMD function call.
23645 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
23646 IFN_MASK_CALL as an inbranch SIMD function call.
23647 Generate the mask vector arguments.
23648
23649 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23650
23651 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
23652 (class widen_reducop): Ditto.
23653 (class freducop): Ditto.
23654 (class widen_freducop): Ditto.
23655 (BASE): Ditto.
23656 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23657 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
23658 (vredmaxu): Ditto.
23659 (vredmax): Ditto.
23660 (vredminu): Ditto.
23661 (vredmin): Ditto.
23662 (vredand): Ditto.
23663 (vredor): Ditto.
23664 (vredxor): Ditto.
23665 (vwredsum): Ditto.
23666 (vwredsumu): Ditto.
23667 (vfredusum): Ditto.
23668 (vfredosum): Ditto.
23669 (vfredmax): Ditto.
23670 (vfredmin): Ditto.
23671 (vfwredosum): Ditto.
23672 (vfwredusum): Ditto.
23673 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
23674 (SHAPE): Ditto.
23675 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23676 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
23677 (DEF_RVV_WU_OPS): Ditto.
23678 (DEF_RVV_WF_OPS): Ditto.
23679 (vint8mf8_t): Ditto.
23680 (vint8mf4_t): Ditto.
23681 (vint8mf2_t): Ditto.
23682 (vint8m1_t): Ditto.
23683 (vint8m2_t): Ditto.
23684 (vint8m4_t): Ditto.
23685 (vint8m8_t): Ditto.
23686 (vint16mf4_t): Ditto.
23687 (vint16mf2_t): Ditto.
23688 (vint16m1_t): Ditto.
23689 (vint16m2_t): Ditto.
23690 (vint16m4_t): Ditto.
23691 (vint16m8_t): Ditto.
23692 (vint32mf2_t): Ditto.
23693 (vint32m1_t): Ditto.
23694 (vint32m2_t): Ditto.
23695 (vint32m4_t): Ditto.
23696 (vint32m8_t): Ditto.
23697 (vuint8mf8_t): Ditto.
23698 (vuint8mf4_t): Ditto.
23699 (vuint8mf2_t): Ditto.
23700 (vuint8m1_t): Ditto.
23701 (vuint8m2_t): Ditto.
23702 (vuint8m4_t): Ditto.
23703 (vuint8m8_t): Ditto.
23704 (vuint16mf4_t): Ditto.
23705 (vuint16mf2_t): Ditto.
23706 (vuint16m1_t): Ditto.
23707 (vuint16m2_t): Ditto.
23708 (vuint16m4_t): Ditto.
23709 (vuint16m8_t): Ditto.
23710 (vuint32mf2_t): Ditto.
23711 (vuint32m1_t): Ditto.
23712 (vuint32m2_t): Ditto.
23713 (vuint32m4_t): Ditto.
23714 (vuint32m8_t): Ditto.
23715 (vfloat32mf2_t): Ditto.
23716 (vfloat32m1_t): Ditto.
23717 (vfloat32m2_t): Ditto.
23718 (vfloat32m4_t): Ditto.
23719 (vfloat32m8_t): Ditto.
23720 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
23721 (DEF_RVV_WU_OPS): Ditto.
23722 (DEF_RVV_WF_OPS): Ditto.
23723 (required_extensions_p): Add reduction support.
23724 (rvv_arg_type_info::get_base_vector_type): Ditto.
23725 (rvv_arg_type_info::get_tree_type): Ditto.
23726 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23727 * config/riscv/riscv.md: Ditto.
23728 * config/riscv/vector-iterators.md (minu): Ditto.
23729 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
23730 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
23731 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
23732 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
23733 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
23734 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
23735 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
23736
23737 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23738
23739 * config/riscv/iterators.md: New iterator.
23740 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
23741 (enum ternop_type): New enum.
23742 (class vmacc): New class.
23743 (class imac): Ditto.
23744 (class vnmsac): Ditto.
23745 (enum widen_ternop_type): New enum.
23746 (class vmadd): Ditto.
23747 (class vnmsub): Ditto.
23748 (class iwmac): Ditto.
23749 (class vwmacc): Ditto.
23750 (class vwmaccu): Ditto.
23751 (class vwmaccsu): Ditto.
23752 (class vwmaccus): Ditto.
23753 (class reverse_binop): Ditto.
23754 (class vfmacc): Ditto.
23755 (class vfnmsac): Ditto.
23756 (class vfmadd): Ditto.
23757 (class vfnmsub): Ditto.
23758 (class vfnmacc): Ditto.
23759 (class vfmsac): Ditto.
23760 (class vfnmadd): Ditto.
23761 (class vfmsub): Ditto.
23762 (class vfwmacc): Ditto.
23763 (class vfwnmacc): Ditto.
23764 (class vfwmsac): Ditto.
23765 (class vfwnmsac): Ditto.
23766 (class float_misc): Ditto.
23767 (class fcmp): Ditto.
23768 (class vfclass): Ditto.
23769 (class vfcvt_x): Ditto.
23770 (class vfcvt_rtz_x): Ditto.
23771 (class vfcvt_f): Ditto.
23772 (class vfwcvt_x): Ditto.
23773 (class vfwcvt_rtz_x): Ditto.
23774 (class vfwcvt_f): Ditto.
23775 (class vfncvt_x): Ditto.
23776 (class vfncvt_rtz_x): Ditto.
23777 (class vfncvt_f): Ditto.
23778 (class vfncvt_rod_f): Ditto.
23779 (BASE): Ditto.
23780 * config/riscv/riscv-vector-builtins-bases.h:
23781 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
23782 (vsext): Ditto.
23783 (vfadd): Ditto.
23784 (vfsub): Ditto.
23785 (vfrsub): Ditto.
23786 (vfwadd): Ditto.
23787 (vfwsub): Ditto.
23788 (vfmul): Ditto.
23789 (vfdiv): Ditto.
23790 (vfrdiv): Ditto.
23791 (vfwmul): Ditto.
23792 (vfmacc): Ditto.
23793 (vfnmsac): Ditto.
23794 (vfmadd): Ditto.
23795 (vfnmsub): Ditto.
23796 (vfnmacc): Ditto.
23797 (vfmsac): Ditto.
23798 (vfnmadd): Ditto.
23799 (vfmsub): Ditto.
23800 (vfwmacc): Ditto.
23801 (vfwnmacc): Ditto.
23802 (vfwmsac): Ditto.
23803 (vfwnmsac): Ditto.
23804 (vfsqrt): Ditto.
23805 (vfrsqrt7): Ditto.
23806 (vfrec7): Ditto.
23807 (vfmin): Ditto.
23808 (vfmax): Ditto.
23809 (vfsgnj): Ditto.
23810 (vfsgnjn): Ditto.
23811 (vfsgnjx): Ditto.
23812 (vfneg): Ditto.
23813 (vfabs): Ditto.
23814 (vmfeq): Ditto.
23815 (vmfne): Ditto.
23816 (vmflt): Ditto.
23817 (vmfle): Ditto.
23818 (vmfgt): Ditto.
23819 (vmfge): Ditto.
23820 (vfclass): Ditto.
23821 (vfmerge): Ditto.
23822 (vfmv_v): Ditto.
23823 (vfcvt_x): Ditto.
23824 (vfcvt_xu): Ditto.
23825 (vfcvt_rtz_x): Ditto.
23826 (vfcvt_rtz_xu): Ditto.
23827 (vfcvt_f): Ditto.
23828 (vfwcvt_x): Ditto.
23829 (vfwcvt_xu): Ditto.
23830 (vfwcvt_rtz_x): Ditto.
23831 (vfwcvt_rtz_xu): Ditto.
23832 (vfwcvt_f): Ditto.
23833 (vfncvt_x): Ditto.
23834 (vfncvt_xu): Ditto.
23835 (vfncvt_rtz_x): Ditto.
23836 (vfncvt_rtz_xu): Ditto.
23837 (vfncvt_f): Ditto.
23838 (vfncvt_rod_f): Ditto.
23839 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
23840 (struct move_def): Ditto.
23841 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
23842 (DEF_RVV_CONVERT_I_OPS): Ditto.
23843 (DEF_RVV_CONVERT_U_OPS): Ditto.
23844 (DEF_RVV_WCONVERT_I_OPS): Ditto.
23845 (DEF_RVV_WCONVERT_U_OPS): Ditto.
23846 (DEF_RVV_WCONVERT_F_OPS): Ditto.
23847 (vfloat64m1_t): Ditto.
23848 (vfloat64m2_t): Ditto.
23849 (vfloat64m4_t): Ditto.
23850 (vfloat64m8_t): Ditto.
23851 (vint32mf2_t): Ditto.
23852 (vint32m1_t): Ditto.
23853 (vint32m2_t): Ditto.
23854 (vint32m4_t): Ditto.
23855 (vint32m8_t): Ditto.
23856 (vint64m1_t): Ditto.
23857 (vint64m2_t): Ditto.
23858 (vint64m4_t): Ditto.
23859 (vint64m8_t): Ditto.
23860 (vuint32mf2_t): Ditto.
23861 (vuint32m1_t): Ditto.
23862 (vuint32m2_t): Ditto.
23863 (vuint32m4_t): Ditto.
23864 (vuint32m8_t): Ditto.
23865 (vuint64m1_t): Ditto.
23866 (vuint64m2_t): Ditto.
23867 (vuint64m4_t): Ditto.
23868 (vuint64m8_t): Ditto.
23869 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
23870 (DEF_RVV_CONVERT_U_OPS): Ditto.
23871 (DEF_RVV_WCONVERT_I_OPS): Ditto.
23872 (DEF_RVV_WCONVERT_U_OPS): Ditto.
23873 (DEF_RVV_WCONVERT_F_OPS): Ditto.
23874 (DEF_RVV_F_OPS): Ditto.
23875 (DEF_RVV_WEXTF_OPS): Ditto.
23876 (required_extensions_p): Adjust for floating-point support.
23877 (check_required_extensions): Ditto.
23878 (unsigned_base_type_p): Ditto.
23879 (get_mode_for_bitsize): Ditto.
23880 (rvv_arg_type_info::get_base_vector_type): Ditto.
23881 (rvv_arg_type_info::get_tree_type): Ditto.
23882 * config/riscv/riscv-vector-builtins.def (v_f): New define.
23883 (f): New define.
23884 (f_v): New define.
23885 (xu_v): New define.
23886 (f_w): New define.
23887 (xu_w): New define.
23888 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
23889 (function_expander::arg_mode): New function.
23890 * config/riscv/vector-iterators.md (sof): New iterator.
23891 (vfrecp): Ditto.
23892 (copysign): Ditto.
23893 (n): Ditto.
23894 (msac): Ditto.
23895 (msub): Ditto.
23896 (fixuns_trunc): Ditto.
23897 (floatuns): Ditto.
23898 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
23899 (@pred_<optab><mode>): Ditto.
23900 (@pred_<optab><mode>_scalar): Ditto.
23901 (@pred_<optab><mode>_reverse_scalar): Ditto.
23902 (@pred_<copysign><mode>): Ditto.
23903 (@pred_<copysign><mode>_scalar): Ditto.
23904 (@pred_mul_<optab><mode>): Ditto.
23905 (pred_mul_<optab><mode>_undef_merge): Ditto.
23906 (*pred_<madd_nmsub><mode>): Ditto.
23907 (*pred_<macc_nmsac><mode>): Ditto.
23908 (*pred_mul_<optab><mode>): Ditto.
23909 (@pred_mul_<optab><mode>_scalar): Ditto.
23910 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
23911 (*pred_<madd_nmsub><mode>_scalar): Ditto.
23912 (*pred_<macc_nmsac><mode>_scalar): Ditto.
23913 (*pred_mul_<optab><mode>_scalar): Ditto.
23914 (@pred_neg_mul_<optab><mode>): Ditto.
23915 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
23916 (*pred_<nmadd_msub><mode>): Ditto.
23917 (*pred_<nmacc_msac><mode>): Ditto.
23918 (*pred_neg_mul_<optab><mode>): Ditto.
23919 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
23920 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
23921 (*pred_<nmadd_msub><mode>_scalar): Ditto.
23922 (*pred_<nmacc_msac><mode>_scalar): Ditto.
23923 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
23924 (@pred_<misc_op><mode>): Ditto.
23925 (@pred_class<mode>): Ditto.
23926 (@pred_dual_widen_<optab><mode>): Ditto.
23927 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
23928 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
23929 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
23930 (@pred_widen_mul_<optab><mode>): Ditto.
23931 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
23932 (@pred_widen_neg_mul_<optab><mode>): Ditto.
23933 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
23934 (@pred_cmp<mode>): Ditto.
23935 (*pred_cmp<mode>): Ditto.
23936 (*pred_cmp<mode>_narrow): Ditto.
23937 (@pred_cmp<mode>_scalar): Ditto.
23938 (*pred_cmp<mode>_scalar): Ditto.
23939 (*pred_cmp<mode>_scalar_narrow): Ditto.
23940 (@pred_eqne<mode>_scalar): Ditto.
23941 (*pred_eqne<mode>_scalar): Ditto.
23942 (*pred_eqne<mode>_scalar_narrow): Ditto.
23943 (@pred_merge<mode>_scalar): Ditto.
23944 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
23945 (@pred_<fix_cvt><mode>): Ditto.
23946 (@pred_<float_cvt><mode>): Ditto.
23947 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
23948 (@pred_widen_<fix_cvt><mode>): Ditto.
23949 (@pred_widen_<float_cvt><mode>): Ditto.
23950 (@pred_extend<mode>): Ditto.
23951 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
23952 (@pred_narrow_<fix_cvt><mode>): Ditto.
23953 (@pred_narrow_<float_cvt><mode>): Ditto.
23954 (@pred_trunc<mode>): Ditto.
23955 (@pred_rod_trunc<mode>): Ditto.
23956
23957 2023-02-22 Jakub Jelinek <jakub@redhat.com>
23958
23959 PR middle-end/106258
23960 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
23961 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
23962 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
23963 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
23964
23965 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
23966
23967 * common.opt (-Wcomplain-wrong-lang): New.
23968 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
23969 * opts-common.cc (prune_options): Handle it.
23970 * opts-global.cc (complain_wrong_lang): Use it.
23971
23972 2023-02-21 David Malcolm <dmalcolm@redhat.com>
23973
23974 PR analyzer/108830
23975 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
23976
23977 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23978
23979 PR target/108876
23980 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23981 for A0_REG.
23982 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23983 (sibcall_value, sibcall_value_internal): Add 'use' expression
23984 for A0_REG.
23985
23986 2023-02-21 Richard Biener <rguenther@suse.de>
23987
23988 PR tree-optimization/108691
23989 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
23990 assert about calls_setjmp not becoming true when it was false.
23991
23992 2023-02-21 Richard Biener <rguenther@suse.de>
23993
23994 PR tree-optimization/108793
23995 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
23996 Use convert operands to niter_type when computing num.
23997
23998 2023-02-21 Richard Biener <rguenther@suse.de>
23999
24000 Revert:
24001 2023-02-13 Richard Biener <rguenther@suse.de>
24002
24003 PR tree-optimization/108691
24004 * tree-cfg.cc (notice_special_calls): When the CFG is built
24005 honor gimple_call_ctrl_altering_p.
24006 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
24007 temporarily if the call is not control-altering.
24008 * calls.cc (emit_call_1): Do not add REG_SETJMP if
24009 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
24010
24011 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24012
24013 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
24014 true if register A0 (return address register) when -Og is specified.
24015
24016 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
24017
24018 * config/i386/predicates.md
24019 (general_x64constmem_operand): New predicate.
24020 * config/i386/i386.md (*cmpqi_ext<mode>_1):
24021 Use nonimm_x64constmem_operand.
24022 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
24023 (*addqi_ext<mode>_1): Ditto.
24024 (*testqi_ext<mode>_1): Ditto.
24025 (*andqi_ext<mode>_1): Ditto.
24026 (*andqi_ext<mode>_1_cc): Ditto.
24027 (*<any_or:code>qi_ext<mode>_1): Ditto.
24028 (*xorqi_ext<mode>_1_cc): Ditto.
24029
24030 2023-02-20 Jakub Jelinek <jakub2redhat.com>
24031
24032 PR target/108862
24033 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
24034 gen_umadddi4_highpart{,_le}.
24035
24036 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
24037
24038 * config/riscv/riscv.md (prefetch): Use r instead of p for the
24039 address operand.
24040 (riscv_prefetchi_<mode>): Ditto.
24041
24042 2023-02-20 Richard Biener <rguenther@suse.de>
24043
24044 PR tree-optimization/108816
24045 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
24046 versioning condition split prerequesite, assert required
24047 invariant.
24048
24049 2023-02-20 Richard Biener <rguenther@suse.de>
24050
24051 PR tree-optimization/108825
24052 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
24053 loop-local verfication only verify there's no pending SSA
24054 update.
24055
24056 2023-02-20 Richard Biener <rguenther@suse.de>
24057
24058 PR tree-optimization/108819
24059 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
24060 we have an SSA name as iv_2 as expected.
24061
24062 2023-02-18 Jakub Jelinek <jakub@redhat.com>
24063
24064 PR tree-optimization/108819
24065 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
24066
24067 2023-02-18 Jakub Jelinek <jakub@redhat.com>
24068
24069 PR target/108832
24070 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
24071 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
24072 function.
24073 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
24074 with ix86_replace_reg_with_reg.
24075
24076 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
24077
24078 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
24079
24080 2023-02-18 Xi Ruoyao <xry111@xry111.site>
24081
24082 * config.gcc (triplet_abi): Set its value based on $with_abi,
24083 instead of $target.
24084 (la_canonical_triplet): Set it after $triplet_abi is set
24085 correctly.
24086 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
24087 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
24088 "f64" suffix).
24089
24090 2023-02-18 Andrew Pinski <apinski@marvell.com>
24091
24092 * match.pd: Remove #if GIMPLE around the
24093 "1 - a" pattern
24094
24095 2023-02-18 Andrew Pinski <apinski@marvell.com>
24096
24097 * value-query.h (get_range_query): Return the global ranges
24098 for a nullptr func.
24099
24100 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
24101
24102 * doc/invoke.texi (@item -Wall): Fix typo in
24103 -Wuse-after-free.
24104
24105 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
24106
24107 PR target/108831
24108 * config/i386/predicates.md
24109 (nonimm_x64constmem_operand): New predicate.
24110 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
24111 (*subqi_ext<mode>_0): Ditto.
24112 (*andqi_ext<mode>_0): Ditto.
24113 (*<any_or:code>qi_ext<mode>_0): Ditto.
24114
24115 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
24116
24117 PR target/108805
24118 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
24119 int_outermode instead of GET_MODE (tem) to prevent
24120 VOIDmode from entering simplify_gen_subreg.
24121
24122 2023-02-17 Richard Biener <rguenther@suse.de>
24123
24124 PR tree-optimization/108821
24125 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
24126 move volatile accesses.
24127
24128 2023-02-17 Richard Biener <rguenther@suse.de>
24129
24130 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
24131 called on virtual operands.
24132 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
24133 ssa_undefined_value_p calls.
24134 (vn_phi_insert): Likewise.
24135 (set_ssa_val_to): Likewise.
24136 (visit_phi): Avoid extra work with equivalences for
24137 virtual operand PHIs.
24138
24139 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24140
24141 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
24142 class.
24143 (class mask_nlogic): Ditto.
24144 (class mask_notlogic): Ditto.
24145 (class vmmv): Ditto.
24146 (class vmclr): Ditto.
24147 (class vmset): Ditto.
24148 (class vmnot): Ditto.
24149 (class vcpop): Ditto.
24150 (class vfirst): Ditto.
24151 (class mask_misc): Ditto.
24152 (class viota): Ditto.
24153 (class vid): Ditto.
24154 (BASE): Ditto.
24155 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24156 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
24157 (vmnand): Ditto.
24158 (vmandn): Ditto.
24159 (vmxor): Ditto.
24160 (vmor): Ditto.
24161 (vmnor): Ditto.
24162 (vmorn): Ditto.
24163 (vmxnor): Ditto.
24164 (vmmv): Ditto.
24165 (vmclr): Ditto.
24166 (vmset): Ditto.
24167 (vmnot): Ditto.
24168 (vcpop): Ditto.
24169 (vfirst): Ditto.
24170 (vmsbf): Ditto.
24171 (vmsif): Ditto.
24172 (vmsof): Ditto.
24173 (viota): Ditto.
24174 (vid): Ditto.
24175 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
24176 (struct mask_alu_def): Ditto.
24177 (SHAPE): Ditto.
24178 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24179 * config/riscv/riscv-vector-builtins.cc: Ditto.
24180 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
24181 for dest it scalar RVV intrinsics.
24182 * config/riscv/vector-iterators.md (sof): New iterator.
24183 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
24184 (@pred_<optab>not<mode>): New pattern.
24185 (@pred_popcount<VB:mode><P:mode>): New pattern.
24186 (@pred_ffs<VB:mode><P:mode>): New pattern.
24187 (@pred_<misc_op><mode>): New pattern.
24188 (@pred_iota<mode>): New pattern.
24189 (@pred_series<mode>): New pattern.
24190
24191 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24192
24193 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
24194 (vsbc): Ditto.
24195 (vmerge): Ditto.
24196 (vmv_v): Ditto.
24197 * config/riscv/riscv-vector-builtins.cc: Ditto.
24198
24199 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24200 kito-cheng <kito.cheng@sifive.com>
24201
24202 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
24203 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
24204 (sew64_scalar_helper): New function.
24205 * config/riscv/vector.md: Normalization.
24206
24207 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24208
24209 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
24210 (vsm): Ditto.
24211 (vsse): Ditto.
24212 (vsoxei64): Ditto.
24213 (vsub): Ditto.
24214 (vand): Ditto.
24215 (vor): Ditto.
24216 (vxor): Ditto.
24217 (vsll): Ditto.
24218 (vsra): Ditto.
24219 (vsrl): Ditto.
24220 (vmin): Ditto.
24221 (vmax): Ditto.
24222 (vminu): Ditto.
24223 (vmaxu): Ditto.
24224 (vmul): Ditto.
24225 (vmulh): Ditto.
24226 (vmulhu): Ditto.
24227 (vmulhsu): Ditto.
24228 (vdiv): Ditto.
24229 (vrem): Ditto.
24230 (vdivu): Ditto.
24231 (vremu): Ditto.
24232 (vnot): Ditto.
24233 (vsext): Ditto.
24234 (vzext): Ditto.
24235 (vwadd): Ditto.
24236 (vwsub): Ditto.
24237 (vwmul): Ditto.
24238 (vwmulu): Ditto.
24239 (vwmulsu): Ditto.
24240 (vwaddu): Ditto.
24241 (vwsubu): Ditto.
24242 (vsbc): Ditto.
24243 (vmsbc): Ditto.
24244 (vnsra): Ditto.
24245 (vmerge): Ditto.
24246 (vmv_v): Ditto.
24247 (vmsne): Ditto.
24248 (vmslt): Ditto.
24249 (vmsgt): Ditto.
24250 (vmsle): Ditto.
24251 (vmsge): Ditto.
24252 (vmsltu): Ditto.
24253 (vmsgtu): Ditto.
24254 (vmsleu): Ditto.
24255 (vmsgeu): Ditto.
24256 (vnmsac): Ditto.
24257 (vmadd): Ditto.
24258 (vnmsub): Ditto.
24259 (vwmacc): Ditto.
24260 (vsadd): Ditto.
24261 (vssub): Ditto.
24262 (vssubu): Ditto.
24263 (vaadd): Ditto.
24264 (vasub): Ditto.
24265 (vasubu): Ditto.
24266 (vsmul): Ditto.
24267 (vssra): Ditto.
24268 (vssrl): Ditto.
24269 (vnclip): Ditto.
24270
24271 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24272
24273 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
24274 (@pred_<optab><mode>_scalar): Ditto.
24275 (*pred_<optab><mode>_scalar): Ditto.
24276 (*pred_<optab><mode>_extended_scalar): Ditto.
24277
24278 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24279
24280 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
24281 (init_builtins): Ditto.
24282 (mangle_builtin_type): Ditto.
24283 (verify_type_context): Ditto.
24284 (handle_pragma_vector): Ditto.
24285 (builtin_decl): Ditto.
24286 (expand_builtin): Ditto.
24287 (const_vec_all_same_in_range_p): Ditto.
24288 (legitimize_move): Ditto.
24289 (emit_vlmax_op): Ditto.
24290 (emit_nonvlmax_op): Ditto.
24291 (get_vlmul): Ditto.
24292 (get_ratio): Ditto.
24293 (get_ta): Ditto.
24294 (get_ma): Ditto.
24295 (get_avl_type): Ditto.
24296 (calculate_ratio): Ditto.
24297 (enum vlmul_type): Ditto.
24298 (simm5_p): Ditto.
24299 (neg_simm5_p): Ditto.
24300 (has_vi_variant_p): Ditto.
24301
24302 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24303
24304 * config/riscv/riscv-protos.h (simm32_p): Remove.
24305 * config/riscv/riscv-v.cc (simm32_p): Ditto.
24306 * config/riscv/vector.md: Use immediate_operand
24307 instead of riscv_vector::simm32_p.
24308
24309 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
24310
24311 * doc/invoke.texi (Optimize Options): Reword the explanation
24312 getting minimal, maximal and default values of a parameter.
24313
24314 2023-02-16 Patrick Palka <ppalka@redhat.com>
24315
24316 * addresses.h: Mechanically drop 'static' from 'static inline'
24317 functions via s/^static inline/inline/g.
24318 * asan.h: Likewise.
24319 * attribs.h: Likewise.
24320 * basic-block.h: Likewise.
24321 * bitmap.h: Likewise.
24322 * cfghooks.h: Likewise.
24323 * cfgloop.h: Likewise.
24324 * cgraph.h: Likewise.
24325 * cselib.h: Likewise.
24326 * data-streamer.h: Likewise.
24327 * debug.h: Likewise.
24328 * df.h: Likewise.
24329 * diagnostic.h: Likewise.
24330 * dominance.h: Likewise.
24331 * dumpfile.h: Likewise.
24332 * emit-rtl.h: Likewise.
24333 * except.h: Likewise.
24334 * expmed.h: Likewise.
24335 * expr.h: Likewise.
24336 * fixed-value.h: Likewise.
24337 * gengtype.h: Likewise.
24338 * gimple-expr.h: Likewise.
24339 * gimple-iterator.h: Likewise.
24340 * gimple-predict.h: Likewise.
24341 * gimple-range-fold.h: Likewise.
24342 * gimple-ssa.h: Likewise.
24343 * gimple.h: Likewise.
24344 * graphite.h: Likewise.
24345 * hard-reg-set.h: Likewise.
24346 * hash-map.h: Likewise.
24347 * hash-set.h: Likewise.
24348 * hash-table.h: Likewise.
24349 * hwint.h: Likewise.
24350 * input.h: Likewise.
24351 * insn-addr.h: Likewise.
24352 * internal-fn.h: Likewise.
24353 * ipa-fnsummary.h: Likewise.
24354 * ipa-icf-gimple.h: Likewise.
24355 * ipa-inline.h: Likewise.
24356 * ipa-modref.h: Likewise.
24357 * ipa-prop.h: Likewise.
24358 * ira-int.h: Likewise.
24359 * ira.h: Likewise.
24360 * lra-int.h: Likewise.
24361 * lra.h: Likewise.
24362 * lto-streamer.h: Likewise.
24363 * memmodel.h: Likewise.
24364 * omp-general.h: Likewise.
24365 * optabs-query.h: Likewise.
24366 * optabs.h: Likewise.
24367 * plugin.h: Likewise.
24368 * pretty-print.h: Likewise.
24369 * range.h: Likewise.
24370 * read-md.h: Likewise.
24371 * recog.h: Likewise.
24372 * regs.h: Likewise.
24373 * rtl-iter.h: Likewise.
24374 * rtl.h: Likewise.
24375 * sbitmap.h: Likewise.
24376 * sched-int.h: Likewise.
24377 * sel-sched-ir.h: Likewise.
24378 * sese.h: Likewise.
24379 * sparseset.h: Likewise.
24380 * ssa-iterators.h: Likewise.
24381 * system.h: Likewise.
24382 * target-globals.h: Likewise.
24383 * target.h: Likewise.
24384 * timevar.h: Likewise.
24385 * tree-chrec.h: Likewise.
24386 * tree-data-ref.h: Likewise.
24387 * tree-iterator.h: Likewise.
24388 * tree-outof-ssa.h: Likewise.
24389 * tree-phinodes.h: Likewise.
24390 * tree-scalar-evolution.h: Likewise.
24391 * tree-sra.h: Likewise.
24392 * tree-ssa-alias.h: Likewise.
24393 * tree-ssa-live.h: Likewise.
24394 * tree-ssa-loop-manip.h: Likewise.
24395 * tree-ssa-loop.h: Likewise.
24396 * tree-ssa-operands.h: Likewise.
24397 * tree-ssa-propagate.h: Likewise.
24398 * tree-ssa-sccvn.h: Likewise.
24399 * tree-ssa.h: Likewise.
24400 * tree-ssanames.h: Likewise.
24401 * tree-streamer.h: Likewise.
24402 * tree-switch-conversion.h: Likewise.
24403 * tree-vectorizer.h: Likewise.
24404 * tree.h: Likewise.
24405 * wide-int.h: Likewise.
24406
24407 2023-02-16 Jakub Jelinek <jakub@redhat.com>
24408
24409 PR tree-optimization/108657
24410 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
24411 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
24412 is a call to internal or builtin function.
24413
24414 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
24415
24416 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
24417 using-declaration to unhide functions.
24418
24419 2023-02-16 Jakub Jelinek <jakub@redhat.com>
24420
24421 PR tree-optimization/108783
24422 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
24423 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
24424 t to curr->op. Otherwise, punt if either newop1 or newop2 are
24425 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
24426
24427 2023-02-16 Richard Biener <rguenther@suse.de>
24428
24429 PR tree-optimization/108791
24430 * tree-ssa-forwprop.cc (optimize_vector_load): Build
24431 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
24432 type.
24433
24434 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
24435
24436 PR target/90458
24437 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
24438 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
24439 (ix86_expand_prologue): Likewise.
24440
24441 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
24442
24443 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
24444
24445 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
24446
24447 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
24448 int248_register_operand predicate in zero_extract sub-RTX.
24449 (*cmpqi_ext<mode>_2): Ditto.
24450 (*cmpqi_ext<mode>_3): Ditto.
24451 (*cmpqi_ext<mode>_4): Ditto.
24452 (*extzvqi_mem_rex64): Ditto.
24453 (*extzvqi): Ditto.
24454 (*insvqi_1_mem_rex64): Ditto.
24455 (@insv<mode>_1): Ditto.
24456 (*insvqi_1): Ditto.
24457 (*insvqi_2): Ditto.
24458 (*insvqi_3): Ditto.
24459 (*extendqi<SWI24:mode>_ext_1): Ditto.
24460 (*addqi_ext<mode>_1): Ditto.
24461 (*addqi_ext<mode>_2): Ditto.
24462 (*subqi_ext<mode>_2): Ditto.
24463 (*testqi_ext<mode>_1): Ditto.
24464 (*testqi_ext<mode>_2): Ditto.
24465 (*andqi_ext<mode>_1): Ditto.
24466 (*andqi_ext<mode>_1_cc): Ditto.
24467 (*andqi_ext<mode>_2): Ditto.
24468 (*<any_or:code>qi_ext<mode>_1): Ditto.
24469 (*<any_or:code>qi_ext<mode>_2): Ditto.
24470 (*xorqi_ext<mode>_1_cc): Ditto.
24471 (*negqi_ext<mode>_2): Ditto.
24472 (*ashlqi_ext<mode>_2): Ditto.
24473 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
24474
24475 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
24476
24477 * config/i386/predicates.md (int248_register_operand):
24478 Rename from extr_register_operand.
24479 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
24480 (*extzx<mode>): Ditto.
24481 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
24482 (*ashl<mode>3_mask): Ditto.
24483 (*<any_shiftrt:insn><mode>3_mask): Ditto.
24484 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
24485 (*<any_rotate:insn><mode>3_mask): Ditto.
24486 (*<btsc><mode>_mask): Ditto.
24487 (*btr<mode>_mask): Ditto.
24488 (*jcc_bt<mode>_mask_1): Ditto.
24489
24490 2023-02-15 Richard Biener <rguenther@suse.de>
24491
24492 PR middle-end/26854
24493 * df-core.cc (df_worklist_propagate_forward): Put later
24494 blocks on worklist and only earlier blocks on pending.
24495 (df_worklist_propagate_backward): Likewise.
24496 (df_worklist_dataflow_doublequeue): Change the iteration
24497 to process new blocks in the same iteration if that
24498 maintains the iteration order.
24499
24500 2023-02-15 Marek Polacek <polacek@redhat.com>
24501
24502 PR middle-end/106080
24503 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
24504 instead.
24505
24506 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24507
24508 * config/riscv/predicates.md: Refine codes.
24509 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
24510 * config/riscv/riscv-v.cc: Refine codes.
24511 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
24512 enum.
24513 (class imac): New class.
24514 (enum widen_ternop_type): New enum.
24515 (class iwmac): New class.
24516 (BASE): New class.
24517 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24518 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
24519 (vnmsac): Ditto.
24520 (vmadd): Ditto.
24521 (vnmsub): Ditto.
24522 (vwmacc): Ditto.
24523 (vwmaccu): Ditto.
24524 (vwmaccsu): Ditto.
24525 (vwmaccus): Ditto.
24526 * config/riscv/riscv-vector-builtins.cc
24527 (function_builder::apply_predication): Adjust for multiply-add support.
24528 (function_expander::add_vundef_operand): Refine codes.
24529 (function_expander::use_ternop_insn): New function.
24530 (function_expander::use_widen_ternop_insn): Ditto.
24531 * config/riscv/riscv-vector-builtins.h: New function.
24532 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
24533 (pred_mul_<optab><mode>_undef_merge): Ditto.
24534 (*pred_<madd_nmsub><mode>): Ditto.
24535 (*pred_<macc_nmsac><mode>): Ditto.
24536 (*pred_mul_<optab><mode>): Ditto.
24537 (@pred_mul_<optab><mode>_scalar): Ditto.
24538 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
24539 (*pred_<madd_nmsub><mode>_scalar): Ditto.
24540 (*pred_<macc_nmsac><mode>_scalar): Ditto.
24541 (*pred_mul_<optab><mode>_scalar): Ditto.
24542 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
24543 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
24544 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
24545 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
24546 (@pred_widen_mul_plus<su><mode>): Ditto.
24547 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
24548 (@pred_widen_mul_plussu<mode>): Ditto.
24549 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
24550 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
24551
24552 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24553
24554 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
24555 (vector_all_trues_mask_operand): New predicate.
24556 (vector_undef_operand): New predicate.
24557 (ltge_operator): New predicate.
24558 (comparison_except_ltge_operator): New predicate.
24559 (comparison_except_eqge_operator): New predicate.
24560 (ge_operator): New predicate.
24561 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
24562 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
24563 (BASE): Ditto.
24564 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24565 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
24566 (vmsne): Ditto.
24567 (vmslt): Ditto.
24568 (vmsgt): Ditto.
24569 (vmsle): Ditto.
24570 (vmsge): Ditto.
24571 (vmsltu): Ditto.
24572 (vmsgtu): Ditto.
24573 (vmsleu): Ditto.
24574 (vmsgeu): Ditto.
24575 * config/riscv/riscv-vector-builtins-shapes.cc
24576 (struct return_mask_def): Adjust for compare support.
24577 * config/riscv/riscv-vector-builtins.cc
24578 (function_expander::use_compare_insn): New function.
24579 * config/riscv/riscv-vector-builtins.h
24580 (function_expander::add_integer_operand): Ditto.
24581 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
24582 * config/riscv/riscv.md: Add vector min/max attributes.
24583 * config/riscv/vector-iterators.md (xnor): New iterator.
24584 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
24585 (*pred_cmp<mode>): Ditto.
24586 (*pred_cmp<mode>_narrow): Ditto.
24587 (@pred_ltge<mode>): Ditto.
24588 (*pred_ltge<mode>): Ditto.
24589 (*pred_ltge<mode>_narrow): Ditto.
24590 (@pred_cmp<mode>_scalar): Ditto.
24591 (*pred_cmp<mode>_scalar): Ditto.
24592 (*pred_cmp<mode>_scalar_narrow): Ditto.
24593 (@pred_eqne<mode>_scalar): Ditto.
24594 (*pred_eqne<mode>_scalar): Ditto.
24595 (*pred_eqne<mode>_scalar_narrow): Ditto.
24596 (*pred_cmp<mode>_extended_scalar): Ditto.
24597 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
24598 (*pred_eqne<mode>_extended_scalar): Ditto.
24599 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
24600 (@pred_ge<mode>_scalar): Ditto.
24601 (@pred_<optab><mode>): Ditto.
24602 (@pred_n<optab><mode>): Ditto.
24603 (@pred_<optab>n<mode>): Ditto.
24604 (@pred_not<mode>): Ditto.
24605
24606 2023-02-15 Martin Jambor <mjambor@suse.cz>
24607
24608 PR ipa/108679
24609 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
24610 creation of non-scalar replacements even if IPA-CP knows their
24611 contents.
24612
24613 2023-02-15 Jakub Jelinek <jakub@redhat.com>
24614
24615 PR target/108787
24616 PR target/103109
24617 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
24618 expander, change operand 3 to be TImode, emit maddlddi4 and
24619 umadddi4_highpart{,_le} with its low half and finally add the high
24620 half to the result.
24621
24622 2023-02-15 Martin Liska <mliska@suse.cz>
24623
24624 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
24625
24626 2023-02-15 Richard Biener <rguenther@suse.de>
24627
24628 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
24629 for with_poison and alias worklist to it.
24630 (sanitize_asan_mark_poison): Likewise.
24631
24632 2023-02-15 Richard Biener <rguenther@suse.de>
24633
24634 PR target/108738
24635 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
24636 Combine bitmap test and set.
24637 (scalar_chain::add_insn): Likewise.
24638 (scalar_chain::analyze_register_chain): Remove redundant
24639 attempt to add to queue and instead strengthen assert.
24640 Sink common attempts to mark the def dual-mode.
24641 (scalar_chain::add_to_queue): Remove redundant insn bitmap
24642 check.
24643
24644 2023-02-15 Richard Biener <rguenther@suse.de>
24645
24646 PR target/108738
24647 * config/i386/i386-features.cc (convert_scalars_to_vector):
24648 Switch candidates bitmaps to tree view before building the chains.
24649
24650 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
24651
24652 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
24653 "failure trying to reload" call.
24654
24655 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
24656
24657 * gdbinit.in (phrs): New command.
24658 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
24659 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
24660
24661 2023-02-14 David Faust <david.faust@oracle.com>
24662
24663 PR target/108790
24664 * config/bpf/constraints.md (q): New memory constraint.
24665 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
24666 (zero_extendqidi2): Likewise.
24667 (zero_extendsidi2): Likewise.
24668 (*mov<MM:mode>): Likewise.
24669
24670 2023-02-14 Andrew Pinski <apinski@marvell.com>
24671
24672 PR tree-optimization/108355
24673 PR tree-optimization/96921
24674 * match.pd: Add pattern for "1 - bool_val".
24675
24676 2023-02-14 Richard Biener <rguenther@suse.de>
24677
24678 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
24679 basic block index hashing on the availability of ->cclhs.
24680 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
24681 rely on ->cclhs availability.
24682 (vn_phi_lookup): Set ->cclhs only when we are eventually
24683 going to CSE the PHI.
24684 (vn_phi_insert): Likewise.
24685
24686 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
24687
24688 * gimplify.cc (gimplify_save_expr): Add missing guard.
24689
24690 2023-02-14 Richard Biener <rguenther@suse.de>
24691
24692 PR tree-optimization/108782
24693 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
24694 Make sure we're not vectorizing an inner loop.
24695
24696 2023-02-14 Jakub Jelinek <jakub@redhat.com>
24697
24698 PR sanitizer/108777
24699 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
24700 * asan.h (asan_memfn_rtl): Declare.
24701 * asan.cc (asan_memfn_rtls): New variable.
24702 (asan_memfn_rtl): New function.
24703 * builtins.cc (expand_builtin): If
24704 param_asan_kernel_mem_intrinsic_prefix and function is
24705 kernel-{,hw}address sanitized, emit calls to
24706 __{,hw}asan_{memcpy,memmove,memset} rather than
24707 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
24708 instead of flag_sanitize & SANITIZE_ADDRESS to check if
24709 asan_intercepted_p functions shouldn't be expanded inline.
24710
24711 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
24712
24713 PR tree-optimization/96373
24714 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
24715 operations on the loop mask. Reject partial vectors if this isn't
24716 possible.
24717
24718 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
24719
24720 PR rtl-optimization/108681
24721 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
24722 code to handle bare uses and clobbers.
24723
24724 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
24725
24726 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
24727 caller_save_p flag when clearing defined_p flag.
24728 (setup_reg_equiv): Ditto.
24729 * lra-constraints.cc (lra_constraints): Ditto.
24730
24731 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
24732
24733 PR target/108516
24734 * config/i386/predicates.md (extr_register_operand):
24735 New special predicate.
24736 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
24737 as operand 1 predicate.
24738 (*exzv<mode>): Ditto.
24739 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
24740
24741 2023-02-13 Richard Biener <rguenther@suse.de>
24742
24743 PR tree-optimization/28614
24744 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
24745 walking all edges in most cases.
24746 (vn_nary_op_insert_pieces_predicated): Avoid repeated
24747 calls to can_track_predicate_on_edge unless checking is
24748 enabled.
24749 (process_bb): Instead call it once here for each edge
24750 we register possibly multiple predicates on.
24751
24752 2023-02-13 Richard Biener <rguenther@suse.de>
24753
24754 PR tree-optimization/108691
24755 * tree-cfg.cc (notice_special_calls): When the CFG is built
24756 honor gimple_call_ctrl_altering_p.
24757 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
24758 temporarily if the call is not control-altering.
24759 * calls.cc (emit_call_1): Do not add REG_SETJMP if
24760 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
24761
24762 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
24763
24764 PR target/108102
24765 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
24766 (struct s390_sched_state): Initialise to zero.
24767 (s390_sched_variable_issue): For better debuggability also emit
24768 the current side.
24769 (s390_sched_init): Unconditionally reset scheduler state.
24770
24771 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
24772
24773 * ifcvt.h (noce_if_info::cond_inverted): New field.
24774 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
24775 values when cond_inverted is true.
24776 (noce_find_if_block): Allow the condition to be inverted when
24777 handling conditional moves.
24778
24779 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
24780
24781 * config/s390/predicates.md (execute_operation): Use
24782 constrain_operands instead of extract_constrain_insn in order to
24783 determine wheter there exists a valid alternative.
24784
24785 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
24786
24787 * common/config/arc/arc-common.cc (arc_option_optimization_table):
24788 Remove millicode from list.
24789
24790 2023-02-13 Martin Liska <mliska@suse.cz>
24791
24792 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
24793
24794 2023-02-13 Richard Biener <rguenther@suse.de>
24795
24796 PR tree-optimization/106722
24797 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
24798 whether we marked a stmt.
24799 (mark_control_dependent_edges_necessary): When
24800 mark_last_stmt_necessary didn't mark any stmt make sure
24801 to mark its control dependent edges.
24802 (propagate_necessity): Likewise.
24803
24804 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
24805
24806 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
24807 (DWARF_FRAME_REGISTERS): New.
24808 (DWARF_REG_TO_UNWIND_COLUMN): New.
24809
24810 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
24811
24812 * doc/sourcebuild.texi: Remove (broken) direct reference to
24813 "The GNU configure and build system".
24814
24815 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
24816
24817 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
24818 gen_add3_insn to gen_rtx_SET.
24819 (riscv_adjust_libcall_cfi_epilogue): Likewise.
24820
24821 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24822
24823 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
24824 (class vnclip): Ditto.
24825 (BASE): Ditto.
24826 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24827 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
24828 (vasub): Ditto.
24829 (vaaddu): Ditto.
24830 (vasubu): Ditto.
24831 (vsmul): Ditto.
24832 (vssra): Ditto.
24833 (vssrl): Ditto.
24834 (vnclipu): Ditto.
24835 (vnclip): Ditto.
24836 * config/riscv/vector-iterators.md (su): Add instruction.
24837 (aadd): Ditto.
24838 (vaalu): Ditto.
24839 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
24840 (@pred_<sat_op><mode>_scalar): Ditto.
24841 (*pred_<sat_op><mode>_scalar): Ditto.
24842 (*pred_<sat_op><mode>_extended_scalar): Ditto.
24843 (@pred_narrow_clip<v_su><mode>): Ditto.
24844 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
24845
24846 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24847
24848 * config/riscv/constraints.md (Wbr): Remove unused constraint.
24849 * config/riscv/predicates.md: Fix move operand predicate.
24850 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
24851 (class vncvt_x): Ditto.
24852 (class vmerge): Ditto.
24853 (class vmv_v): Ditto.
24854 (BASE): Ditto.
24855 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24856 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
24857 (vsrl): Ditto.
24858 (vnsrl): Ditto.
24859 (vnsra): Ditto.
24860 (vncvt_x): Ditto.
24861 (vmerge): Ditto.
24862 (vmv_v): Ditto.
24863 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
24864 (struct move_def): Ditto.
24865 (SHAPE): Ditto.
24866 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24867 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
24868 (DEF_RVV_WEXTU_OPS): Ditto
24869 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
24870 (v_v): Ditto.
24871 (v_x): Ditto.
24872 (x_w): Ditto.
24873 (x): Ditto.
24874 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
24875 * config/riscv/vector-iterators.md (nmsac):New iterator.
24876 (nmsub): New iterator.
24877 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
24878 (@pred_merge<mode>_scalar): New pattern.
24879 (*pred_merge<mode>_scalar): New pattern.
24880 (*pred_merge<mode>_extended_scalar): New pattern.
24881 (@pred_narrow_<optab><mode>): New pattern.
24882 (@pred_narrow_<optab><mode>_scalar): New pattern.
24883 (@pred_trunc<mode>): New pattern.
24884
24885 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24886
24887 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
24888 (class vmsbc): Ditto.
24889 (BASE): Define new class.
24890 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24891 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
24892 (vmsbc): Ditto.
24893 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
24894 New class.
24895 (SHAPE): Ditto.
24896 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24897 * config/riscv/riscv-vector-builtins.cc
24898 (function_expander::use_exact_insn): Adjust for new support
24899 * config/riscv/riscv-vector-builtins.h
24900 (function_base::has_merge_operand_p): New function.
24901 * config/riscv/vector-iterators.md: New iterator.
24902 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
24903 (@pred_msbc<mode>): Ditto.
24904 (@pred_madc<mode>_scalar): Ditto.
24905 (@pred_msbc<mode>_scalar): Ditto.
24906 (*pred_madc<mode>_scalar): Ditto.
24907 (*pred_madc<mode>_extended_scalar): Ditto.
24908 (*pred_msbc<mode>_scalar): Ditto.
24909 (*pred_msbc<mode>_extended_scalar): Ditto.
24910 (@pred_madc<mode>_overflow): Ditto.
24911 (@pred_msbc<mode>_overflow): Ditto.
24912 (@pred_madc<mode>_overflow_scalar): Ditto.
24913 (@pred_msbc<mode>_overflow_scalar): Ditto.
24914 (*pred_madc<mode>_overflow_scalar): Ditto.
24915 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
24916 (*pred_msbc<mode>_overflow_scalar): Ditto.
24917 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
24918
24919 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24920
24921 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
24922 * config/riscv/riscv-v.cc (simm32_p): Ditto.
24923 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
24924 (class vsbc): Ditto.
24925 (BASE): Ditto.
24926 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24927 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
24928 (vsbc): Ditto.
24929 * config/riscv/riscv-vector-builtins-shapes.cc
24930 (struct no_mask_policy_def): Ditto.
24931 (SHAPE): Ditto.
24932 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24933 * config/riscv/riscv-vector-builtins.cc
24934 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
24935 (rvv_arg_type_info::get_tree_type): Ditto.
24936 (function_expander::use_exact_insn): Ditto.
24937 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
24938 (function_base::use_mask_predication_p): New function.
24939 * config/riscv/vector-iterators.md: New iterator.
24940 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
24941 (@pred_sbc<mode>): Ditto.
24942 (@pred_adc<mode>_scalar): Ditto.
24943 (@pred_sbc<mode>_scalar): Ditto.
24944 (*pred_adc<mode>_scalar): Ditto.
24945 (*pred_adc<mode>_extended_scalar): Ditto.
24946 (*pred_sbc<mode>_scalar): Ditto.
24947 (*pred_sbc<mode>_extended_scalar): Ditto.
24948
24949 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24950
24951 * config/riscv/vector.md: use "zero" reg.
24952
24953 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24954
24955 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
24956 class.
24957 (class vwmulsu): Ditto.
24958 (class vwcvt): Ditto.
24959 (BASE): Add integer widening support.
24960 * config/riscv/riscv-vector-builtins-bases.h: Ditto
24961 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
24962 (vwsub): New class.
24963 (vwmul): New class.
24964 (vwmulu): New class.
24965 (vwmulsu): New class.
24966 (vwaddu): New class.
24967 (vwsubu): New class.
24968 (vwcvt_x): New class.
24969 (vwcvtu_x): New class.
24970 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
24971 class.
24972 (struct widen_alu_def): New class.
24973 (SHAPE): New class.
24974 * config/riscv/riscv-vector-builtins-shapes.h: New class.
24975 * config/riscv/riscv-vector-builtins.cc
24976 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
24977 (rvv_arg_type_info::get_tree_type): Ditto.
24978 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
24979 (x_v): Ditto.
24980 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
24981 widening support.
24982 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
24983 * config/riscv/riscv.h (X0_REGNUM): New constant.
24984 * config/riscv/vector-iterators.md: New iterators.
24985 * config/riscv/vector.md
24986 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
24987 pattern.
24988 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
24989 Ditto.
24990 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
24991 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
24992 Ditto.
24993 (@pred_widen_mulsu<mode>): Ditto.
24994 (@pred_widen_mulsu<mode>_scalar): Ditto.
24995 (@pred_<optab><mode>): Ditto.
24996
24997 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24998 kito-cheng <kito.cheng@sifive.com>
24999
25000 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
25001 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
25002 (BASE): Ditto.
25003 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25004 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
25005 API support.
25006 (vmulhu): Ditto.
25007 (vmulhsu): Ditto.
25008 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
25009 New macro.
25010 (DEF_RVV_FULL_V_U_OPS): Ditto.
25011 (vint8mf8_t): Ditto.
25012 (vint8mf4_t): Ditto.
25013 (vint8mf2_t): Ditto.
25014 (vint8m1_t): Ditto.
25015 (vint8m2_t): Ditto.
25016 (vint8m4_t): Ditto.
25017 (vint8m8_t): Ditto.
25018 (vint16mf4_t): Ditto.
25019 (vint16mf2_t): Ditto.
25020 (vint16m1_t): Ditto.
25021 (vint16m2_t): Ditto.
25022 (vint16m4_t): Ditto.
25023 (vint16m8_t): Ditto.
25024 (vint32mf2_t): Ditto.
25025 (vint32m1_t): Ditto.
25026 (vint32m2_t): Ditto.
25027 (vint32m4_t): Ditto.
25028 (vint32m8_t): Ditto.
25029 (vint64m1_t): Ditto.
25030 (vint64m2_t): Ditto.
25031 (vint64m4_t): Ditto.
25032 (vint64m8_t): Ditto.
25033 (vuint8mf8_t): Ditto.
25034 (vuint8mf4_t): Ditto.
25035 (vuint8mf2_t): Ditto.
25036 (vuint8m1_t): Ditto.
25037 (vuint8m2_t): Ditto.
25038 (vuint8m4_t): Ditto.
25039 (vuint8m8_t): Ditto.
25040 (vuint16mf4_t): Ditto.
25041 (vuint16mf2_t): Ditto.
25042 (vuint16m1_t): Ditto.
25043 (vuint16m2_t): Ditto.
25044 (vuint16m4_t): Ditto.
25045 (vuint16m8_t): Ditto.
25046 (vuint32mf2_t): Ditto.
25047 (vuint32m1_t): Ditto.
25048 (vuint32m2_t): Ditto.
25049 (vuint32m4_t): Ditto.
25050 (vuint32m8_t): Ditto.
25051 (vuint64m1_t): Ditto.
25052 (vuint64m2_t): Ditto.
25053 (vuint64m4_t): Ditto.
25054 (vuint64m8_t): Ditto.
25055 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
25056 (DEF_RVV_FULL_V_U_OPS): Ditto.
25057 (check_required_extensions): Add vmulh support.
25058 (rvv_arg_type_info::get_tree_type): Ditto.
25059 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
25060 (enum rvv_base_type): Ditto.
25061 * config/riscv/riscv.opt: Add 'V' extension flag.
25062 * config/riscv/vector-iterators.md (su): New iterator.
25063 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
25064 (@pred_mulh<v_su><mode>_scalar): Ditto.
25065 (*pred_mulh<v_su><mode>_scalar): Ditto.
25066 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
25067
25068 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25069
25070 * config/riscv/iterators.md: Add sign_extend/zero_extend.
25071 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
25072 (BASE): Ditto.
25073 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
25074 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
25075 define.
25076 (vzext): Ditto.
25077 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
25078 for vsext/vzext support.
25079 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
25080 macro define.
25081 (DEF_RVV_QEXTI_OPS): Ditto.
25082 (DEF_RVV_OEXTI_OPS): Ditto.
25083 (DEF_RVV_WEXTU_OPS): Ditto.
25084 (DEF_RVV_QEXTU_OPS): Ditto.
25085 (DEF_RVV_OEXTU_OPS): Ditto.
25086 (vint16mf4_t): Ditto.
25087 (vint16mf2_t): Ditto.
25088 (vint16m1_t): Ditto.
25089 (vint16m2_t): Ditto.
25090 (vint16m4_t): Ditto.
25091 (vint16m8_t): Ditto.
25092 (vint32mf2_t): Ditto.
25093 (vint32m1_t): Ditto.
25094 (vint32m2_t): Ditto.
25095 (vint32m4_t): Ditto.
25096 (vint32m8_t): Ditto.
25097 (vint64m1_t): Ditto.
25098 (vint64m2_t): Ditto.
25099 (vint64m4_t): Ditto.
25100 (vint64m8_t): Ditto.
25101 (vuint16mf4_t): Ditto.
25102 (vuint16mf2_t): Ditto.
25103 (vuint16m1_t): Ditto.
25104 (vuint16m2_t): Ditto.
25105 (vuint16m4_t): Ditto.
25106 (vuint16m8_t): Ditto.
25107 (vuint32mf2_t): Ditto.
25108 (vuint32m1_t): Ditto.
25109 (vuint32m2_t): Ditto.
25110 (vuint32m4_t): Ditto.
25111 (vuint32m8_t): Ditto.
25112 (vuint64m1_t): Ditto.
25113 (vuint64m2_t): Ditto.
25114 (vuint64m4_t): Ditto.
25115 (vuint64m8_t): Ditto.
25116 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
25117 (DEF_RVV_QEXTI_OPS): Ditto.
25118 (DEF_RVV_OEXTI_OPS): Ditto.
25119 (DEF_RVV_WEXTU_OPS): Ditto.
25120 (DEF_RVV_QEXTU_OPS): Ditto.
25121 (DEF_RVV_OEXTU_OPS): Ditto.
25122 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
25123 support.
25124 (rvv_arg_type_info::get_tree_type): Ditto.
25125 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
25126 * config/riscv/vector-iterators.md (z): New attribute.
25127 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
25128 (@pred_<optab><mode>_vf4): Ditto.
25129 (@pred_<optab><mode>_vf8): Ditto.
25130
25131 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25132
25133 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
25134 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
25135 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
25136 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25137 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
25138 (vssub): Ditto.
25139 (vsaddu): Ditto.
25140 (vssubu): Ditto.
25141 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
25142 support.
25143 (sll.vv): Ditto.
25144 (%3,%v4): Ditto.
25145 (%3,%4): Ditto.
25146 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
25147 (@pred_<optab><mode>_scalar): New pattern.
25148 (*pred_<optab><mode>_scalar): New pattern.
25149 (*pred_<optab><mode>_extended_scalar): New pattern.
25150
25151 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25152
25153 * config/riscv/iterators.md: Add neg and not.
25154 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
25155 (BASE): Ditto.
25156 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25157 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
25158 into alu.
25159 (vsub): Ditto.
25160 (vand): Ditto.
25161 (vor): Ditto.
25162 (vxor): Ditto.
25163 (vsll): Ditto.
25164 (vsra): Ditto.
25165 (vsrl): Ditto.
25166 (vmin): Ditto.
25167 (vmax): Ditto.
25168 (vminu): Ditto.
25169 (vmaxu): Ditto.
25170 (vmul): Ditto.
25171 (vdiv): Ditto.
25172 (vrem): Ditto.
25173 (vdivu): Ditto.
25174 (vremu): Ditto.
25175 (vrsub): Ditto.
25176 (vneg): Ditto.
25177 (vnot): Ditto.
25178 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
25179 (struct alu_def): Ditto.
25180 (SHAPE): Ditto.
25181 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25182 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
25183 * config/riscv/vector-iterators.md: New iterator.
25184 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
25185
25186 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25187
25188 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
25189
25190 2023-02-11 Jakub Jelinek <jakub@redhat.com>
25191
25192 PR ipa/108605
25193 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
25194 item->offset bit position is too large to be representable as
25195 unsigned int byte position.
25196
25197 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
25198
25199 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
25200
25201 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
25202
25203 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
25204 valid_combine only when ira_use_lra_p is true.
25205
25206 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
25207
25208 * params.opt (ira-simple-lra-insn-threshold): Add new param.
25209 * ira.cc (ira): Use the param to switch on simple LRA.
25210
25211 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
25212
25213 PR tree-optimization/108687
25214 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
25215 back to RFD_NONE mode for calculations.
25216 (ranger_cache::propagate_cache): Call the internal edge range API
25217 with RFD_READ_ONLY instead of changing the external routine.
25218
25219 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
25220
25221 PR tree-optimization/108520
25222 * gimple-range-infer.cc (check_assume_func): Invoke
25223 gimple_range_global directly instead using global_range_query.
25224 * value-query.cc (get_range_global): Add function context and
25225 avoid calling nonnull_arg_p if not cfun.
25226 (gimple_range_global): Add function context pointer.
25227 * value-query.h (imple_range_global): Add function context.
25228
25229 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25230
25231 * config/riscv/constraints.md (Wdm): Adjust constraint.
25232 (Wbr): New constraint.
25233 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
25234 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
25235 (emit_vlmax_op): New function.
25236 (emit_nonvlmax_op): Ditto.
25237 (simm32_p): Ditto.
25238 (neg_simm5_p): Ditto.
25239 (has_vi_variant_p): Ditto.
25240 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
25241 (emit_vlmax_op): New function.
25242 (emit_nonvlmax_op): Ditto.
25243 (expand_const_vector): Adjust function.
25244 (legitimize_move): Ditto.
25245 (simm32_p): New function.
25246 (simm5_p): Ditto.
25247 (neg_simm5_p): Ditto.
25248 (has_vi_variant_p): Ditto.
25249 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
25250 (BASE): Ditto.
25251 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25252 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
25253 unsigned cases.
25254 (vmax): Ditto.
25255 (vminu): Remove signed cases.
25256 (vmaxu): Ditto.
25257 (vdiv): Remove unsigned cases.
25258 (vrem): Ditto.
25259 (vdivu): Remove signed cases.
25260 (vremu): Ditto.
25261 (vadd): Adjust.
25262 (vsub): Ditto.
25263 (vrsub): New class.
25264 (vand): Adjust.
25265 (vor): Ditto.
25266 (vxor): Ditto.
25267 (vmul): Ditto.
25268 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
25269 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
25270 * config/riscv/vector-iterators.md: New iterators.
25271 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
25272 support.
25273 (@pred_<optab><mode>_scalar): New pattern.
25274 (@pred_sub<mode>_reverse_scalar): Ditto.
25275 (*pred_<optab><mode>_scalar): Ditto.
25276 (*pred_<optab><mode>_extended_scalar): Ditto.
25277 (*pred_sub<mode>_reverse_scalar): Ditto.
25278 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
25279
25280 2023-02-10 Richard Biener <rguenther@suse.de>
25281
25282 PR tree-optimization/108724
25283 * tree-vect-stmts.cc (vectorizable_operation): Avoid
25284 using word_mode vectors when vector lowering will
25285 decompose them to elementwise operations.
25286
25287 2023-02-10 Jakub Jelinek <jakub@redhat.com>
25288
25289 Revert:
25290 2023-02-09 Martin Liska <mliska@suse.cz>
25291
25292 PR target/100758
25293 * doc/extend.texi: Document that the function
25294 does not work correctly for old VIA processors.
25295
25296 2023-02-10 Andrew Pinski <apinski@marvell.com>
25297 Andrew Macleod <amacleod@redhat.com>
25298
25299 PR tree-optimization/108684
25300 * tree-ssa-dce.cc (simple_dce_from_worklist):
25301 Check all ssa names and not just non-vdef ones
25302 before accepting the inline-asm.
25303 Call unlink_stmt_vdef on the statement before
25304 removing it.
25305
25306 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
25307
25308 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25309 * ira.cc (validate_equiv_mem): Check memref address variance.
25310 (no_equiv): Clear caller_save_p flag.
25311 (update_equiv_regs): Define caller save equivalence for
25312 valid_combine.
25313 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25314 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25315 call_save_p. Use caller save equivalence depending on the arg.
25316 (split_reg): Adjust the call.
25317
25318 2023-02-09 Jakub Jelinek <jakub@redhat.com>
25319
25320 PR target/100758
25321 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
25322 (cpu_indicator_init): Call get_available_features for all CPUs with
25323 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
25324 fixes.
25325
25326 2023-02-09 Jakub Jelinek <jakub@redhat.com>
25327
25328 PR tree-optimization/108688
25329 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
25330 of BIT_INSERT_EXPR extracting exactly all inserted bits even
25331 when without mode precision. Formatting fixes.
25332
25333 2023-02-09 Andrew Pinski <apinski@marvell.com>
25334
25335 PR tree-optimization/108688
25336 * match.pd (bit_field_ref [bit_insert]): Avoid generating
25337 BIT_FIELD_REFs of non-mode-precision integral operands.
25338
25339 2023-02-09 Martin Liska <mliska@suse.cz>
25340
25341 PR target/100758
25342 * doc/extend.texi: Document that the function
25343 does not work correctly for old VIA processors.
25344
25345 2023-02-09 Andreas Schwab <schwab@suse.de>
25346
25347 * lto-wrapper.cc (merge_and_complain): Handle
25348 -funwind-tables and -fasynchronous-unwind-tables.
25349 (append_compiler_options): Likewise.
25350
25351 2023-02-09 Richard Biener <rguenther@suse.de>
25352
25353 PR tree-optimization/26854
25354 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
25355 view around insert_updated_phi_nodes_for.
25356 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
25357 in tree view.
25358 (walk_aliased_vdefs_1): Likewise.
25359
25360 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
25361
25362 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
25363
25364 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25365
25366 PR target/108505
25367 * config.gcc (tm_mlib_file): Define new variable.
25368
25369 2023-02-08 Jakub Jelinek <jakub@redhat.com>
25370
25371 PR tree-optimization/108692
25372 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
25373 widened_code which is different from code, don't call
25374 vect_look_through_possible_promotion but instead just check op is
25375 SSA_NAME with integral type for which vect_is_simple_use is true
25376 and call set_op on this_unprom.
25377
25378 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
25379
25380 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
25381 declaration.
25382 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
25383 definition.
25384 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
25385 to 'aarch_ra_sign_key'.
25386 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
25387 declaration.
25388 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
25389 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
25390 * config/arm/arm.opt: Define.
25391
25392 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
25393
25394 PR tree-optimization/108316
25395 * tree-vect-stmts.cc (get_load_store_type): When using
25396 internal functions for gather/scatter, make sure that the type
25397 of the offset argument is consistent with the offset vector type.
25398
25399 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
25400
25401 Revert:
25402 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
25403
25404 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25405 * ira.cc (validate_equiv_mem): Check memref address variance.
25406 (update_equiv_regs): Define caller save equivalence for
25407 valid_combine.
25408 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25409 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25410 call_save_p. Use caller save equivalence depending on the arg.
25411 (split_reg): Adjust the call.
25412
25413 2023-02-08 Jakub Jelinek <jakub@redhat.com>
25414
25415 * tree.def (SAD_EXPR): Remove outdated comment about missing
25416 WIDEN_MINUS_EXPR.
25417
25418 2023-02-07 Marek Polacek <polacek@redhat.com>
25419
25420 * doc/invoke.texi: Update -fchar8_t documentation.
25421
25422 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
25423
25424 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25425 * ira.cc (validate_equiv_mem): Check memref address variance.
25426 (update_equiv_regs): Define caller save equivalence for
25427 valid_combine.
25428 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25429 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25430 call_save_p. Use caller save equivalence depending on the arg.
25431 (split_reg): Adjust the call.
25432
25433 2023-02-07 Richard Biener <rguenther@suse.de>
25434
25435 PR tree-optimization/26854
25436 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
25437 instead of immediate uses.
25438
25439 2023-02-07 Jakub Jelinek <jakub@redhat.com>
25440
25441 PR tree-optimization/106923
25442 * ipa-split.cc (execute_split_functions): Don't split returns_twice
25443 functions.
25444
25445 2023-02-07 Jakub Jelinek <jakub@redhat.com>
25446
25447 PR tree-optimization/106433
25448 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
25449 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
25450
25451 2023-02-07 Jan Hubicka <jh@suse.cz>
25452
25453 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
25454 for znver4.
25455
25456 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
25457
25458 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
25459 (process_asm): Create a constructor for GCN_STACK_SIZE.
25460 (main): Parse the -mstack-size option.
25461
25462 2023-02-06 Alex Coplan <alex.coplan@arm.com>
25463
25464 PR target/104921
25465 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
25466 Use correct constraint for operand 3.
25467
25468 2023-02-06 Martin Jambor <mjambor@suse.cz>
25469
25470 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
25471
25472 2023-02-06 Xi Ruoyao <xry111@xry111.site>
25473
25474 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
25475 New define_int_iterator.
25476 (bytepick_d_ashift_amount): Likewise.
25477 (bytepick_imm): New define_int_attr.
25478 (bytepick_w_lshiftrt_amount): Likewise.
25479 (bytepick_d_lshiftrt_amount): Likewise.
25480 (bytepick_w_<bytepick_imm>): New define_insn template.
25481 (bytepick_w_<bytepick_imm>_extend): Likewise.
25482 (bytepick_d_<bytepick_imm>): Likewise.
25483 (bytepick_w): Remove unused define_insn.
25484 (bytepick_d): Likewise.
25485 (UNSPEC_BYTEPICK_W): Remove unused unspec.
25486 (UNSPEC_BYTEPICK_D): Likewise.
25487 * config/loongarch/predicates.md (const_0_to_3_operand):
25488 Remove unused define_predicate.
25489 (const_0_to_7_operand): Likewise.
25490
25491 2023-02-06 Jakub Jelinek <jakub@redhat.com>
25492
25493 PR tree-optimization/108655
25494 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
25495 or -fsanitize=unreachable -fsanitize-trap=unreachable return
25496 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
25497
25498 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
25499
25500 * doc/install.texi (Specific): Remove PW32.
25501
25502 2023-02-03 Jakub Jelinek <jakub@redhat.com>
25503
25504 PR tree-optimization/108647
25505 * range-op.cc (operator_equal::op1_range,
25506 operator_not_equal::op1_range): Don't test op2 bound
25507 equality if op2.undefined_p (), instead set_varying.
25508 (operator_lt::op1_range, operator_le::op1_range,
25509 operator_gt::op1_range, operator_ge::op1_range): Return false if
25510 op2.undefined_p ().
25511 (operator_lt::op2_range, operator_le::op2_range,
25512 operator_gt::op2_range, operator_ge::op2_range): Return false if
25513 op1.undefined_p ().
25514
25515 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
25516
25517 PR tree-optimization/108639
25518 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
25519 widest_int.
25520 (irange::operator==): Same.
25521
25522 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
25523
25524 PR tree-optimization/108647
25525 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
25526 (foperator_lt::op2_range): Same.
25527 (foperator_le::op1_range): Same.
25528 (foperator_le::op2_range): Same.
25529 (foperator_gt::op1_range): Same.
25530 (foperator_gt::op2_range): Same.
25531 (foperator_ge::op1_range): Same.
25532 (foperator_ge::op2_range): Same.
25533 (foperator_unordered_lt::op1_range): Same.
25534 (foperator_unordered_lt::op2_range): Same.
25535 (foperator_unordered_le::op1_range): Same.
25536 (foperator_unordered_le::op2_range): Same.
25537 (foperator_unordered_gt::op1_range): Same.
25538 (foperator_unordered_gt::op2_range): Same.
25539 (foperator_unordered_ge::op1_range): Same.
25540 (foperator_unordered_ge::op2_range): Same.
25541
25542 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
25543
25544 PR tree-optimization/107570
25545 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
25546
25547 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
25548
25549 * doc/gm2.texi (Internals): Remove from menu.
25550 (Using): Comment out ifnohtml conditional.
25551 (Documentation): Use gcc url.
25552 (License): Node simplified.
25553 (Copying): New node. Include gpl_v3_without_node.
25554 (Contributing): Node simplified.
25555 (Internals): Commented out.
25556 (Libraries): Node simplified.
25557 (Indices): Ditto.
25558 (Contents): Ditto.
25559 (Functions): Ditto.
25560
25561 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
25562
25563 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
25564 attribute.
25565 (mve_vqshluq_m_n_s<mode>): Likewise.
25566 (mve_vshlq_m_<supf><mode>): Likewise.
25567 (mve_vsriq_m_n_<supf><mode>): Likewise.
25568 (mve_vsubq_m_<supf><mode>): Likewise.
25569
25570 2023-02-03 Martin Jambor <mjambor@suse.cz>
25571
25572 PR ipa/108384
25573 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
25574 when comparing to an IPA-CP value.
25575 (dump_list_of_param_indices): New function.
25576 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
25577 Dump removed candidates using dump_list_of_param_indices.
25578 * ipa-param-manipulation.cc
25579 (ipa_param_body_adjustments::modify_expression): Add assert checking
25580 sizes of a VIEW_CONVERT_EXPR will match.
25581 (ipa_param_body_adjustments::modify_assignment): Likewise.
25582
25583 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
25584
25585 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
25586 * config/riscv/riscv.cc: Ditto.
25587
25588 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25589
25590 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
25591 (sll.vv): Ditto.
25592 (%3,%4): Ditto.
25593 (%3,%v4): Ditto.
25594 * config/riscv/vector.md: Ditto.
25595
25596 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25597
25598 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
25599 * config/riscv/riscv-vector-builtins-bases.cc: New class.
25600 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
25601 (vsra): Ditto.
25602 (vsrl): Ditto.
25603 * config/riscv/riscv-vector-builtins.cc: Ditto.
25604 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
25605
25606 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
25607
25608 * toplev.cc (toplev::main): Only print the version information header
25609 from toplevel main().
25610
25611 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
25612
25613 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
25614 cond_{ashl|ashr|lshr}
25615
25616 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
25617
25618 PR rtl-optimization/108086
25619 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
25620 Adjust size-related commentary accordingly.
25621
25622 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
25623
25624 PR rtl-optimization/108508
25625 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
25626 the splay tree search gives the first clobber in the second group,
25627 make sure that the root of the first clobber group is updated
25628 correctly. Enter the new clobber group into the definition splay
25629 tree.
25630
25631 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
25632
25633 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
25634 Fix finding best match score.
25635
25636 2023-02-02 Jakub Jelinek <jakub@redhat.com>
25637
25638 PR debug/106746
25639 PR rtl-optimization/108463
25640 PR target/108484
25641 * cselib.cc (cselib_current_insn): Move declaration earlier.
25642 (cselib_hasher::equal): For debug only locs, temporarily override
25643 cselib_current_insn to their l->setting_insn for the
25644 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
25645 promote some debug locs.
25646 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
25647 when using cselib call cselib_lookup_from_insn on the address but
25648 don't substitute it.
25649
25650 2023-02-02 Richard Biener <rguenther@suse.de>
25651
25652 PR middle-end/108625
25653 * genmatch.cc (expr::gen_transform): Also disallow resimplification
25654 from pushing to lseq with force_leaf.
25655 (dt_simplify::gen_1): Likewise.
25656
25657 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
25658
25659 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
25660 (struct kernargs): Replace the common content with kernargs_abi.
25661 (struct heap): Delete.
25662 (main): Read GCN_STACK_SIZE envvar.
25663 Allocate space for the device stacks.
25664 Write the new kernargs fields.
25665 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
25666 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
25667 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
25668 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
25669 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
25670 Set up the stacks from the values in the kernargs, not private.
25671 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
25672 (gcn_hsa_declare_function_name): Turn off the private segment.
25673 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
25674 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
25675 * config/gcn/gcn.opt (mstack-size): Change the description.
25676
25677 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25678
25679 PR target/108443
25680 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
25681 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
25682 addressing MVE predicate modes.
25683 (mve_bool_vec_to_const): Change to represent correct MVE predicate
25684 format.
25685 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
25686 modes.
25687 (arm_vector_mode_supported_p): Likewise.
25688 (arm_mode_to_pred_mode): Add V2QI.
25689 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
25690 qualifier.
25691 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
25692 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
25693 (v2qi_UP): New macro.
25694 (v4bi_UP): New macro.
25695 (v8bi_UP): New macro.
25696 (v16bi_UP): New macro.
25697 (arm_expand_builtin_args): Make it able to expand the new predicate
25698 modes.
25699 * config/arm/arm-modes.def (V2QI): New mode.
25700 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
25701 Pred4x4_t): Remove unused predicate builtin types.
25702 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
25703 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
25704 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
25705 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
25706 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
25707 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
25708 of MODE_VECTOR_BOOL.
25709 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
25710 (MVE_VPRED): Likewise.
25711 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
25712 (MVE_vctp): New mode attribute.
25713 (mode1): Remove.
25714 (VCTPQ): Remove.
25715 (VCTPQ_M): Remove.
25716 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
25717 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
25718 attributes.
25719 (mve_vpnothi): Rename this...
25720 (mve_vpnotv16bi): ... to this.
25721 (mve_vctp<mode1>q_mhi): Rename this...
25722 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
25723 (mve_vldrdq_gather_base_z_<supf>v2di,
25724 mve_vldrdq_gather_offset_z_<supf>v2di,
25725 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
25726 mve_vstrdq_scatter_base_p_<supf>v2di,
25727 mve_vstrdq_scatter_offset_p_<supf>v2di,
25728 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
25729 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
25730 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
25731 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
25732 mve_vldrdq_gather_base_wb_z_<supf>v2di,
25733 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
25734 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
25735 predicates.
25736 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
25737 these...
25738 (VCTP): ... with this.
25739 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
25740 (VCTP_M): ... with this.
25741 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
25742 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
25743
25744 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25745
25746 PR target/107674
25747 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
25748 (arm_modes_tieable_p): Make MVE predicate modes tieable.
25749 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
25750 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
25751 simplify_subreg to simplify subregs where the outermode is not scalar.
25752
25753 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25754
25755 PR target/107674
25756 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
25757 new qualifiers parameter and use unsigned short type for MVE predicate.
25758 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
25759 parameter.
25760 (arm_init_crypto_builtins): Likewise.
25761
25762 2023-02-02 Jakub Jelinek <jakub@redhat.com>
25763
25764 PR ipa/107300
25765 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
25766 * internal-fn.def (TRAP): Remove.
25767 * internal-fn.cc (expand_TRAP): Remove.
25768 * tree.cc (build_common_builtin_nodes): Define
25769 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
25770 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
25771 instead of BUILT_IN_TRAP.
25772 * gimple.cc (gimple_build_builtin_unreachable): Remove
25773 emitting internal function for BUILT_IN_TRAP.
25774 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
25775 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
25776 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
25777 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
25778 BUILT_IN_UNREACHABLE_TRAP.
25779 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
25780 * tree-cfg.cc (verify_gimple_call,
25781 pass_warn_function_return::execute): Likewise.
25782 * attribs.cc (decl_attributes): Don't report exclusions on
25783 BUILT_IN_UNREACHABLE_TRAP either.
25784
25785 2023-02-02 liuhongt <hongtao.liu@intel.com>
25786
25787 PR tree-optimization/108601
25788 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
25789 * tree-vect-loop.cc
25790 (vectorizable_nonlinear_induction): Remove
25791 vect_can_peel_nonlinear_iv_p.
25792 (vect_can_peel_nonlinear_iv_p): Don't peel
25793 nonlinear iv(mult or shift) for epilog when vf is not
25794 constant and moved the defination to ..
25795 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
25796 .. Here.
25797
25798 2023-02-02 Jakub Jelinek <jakub@redhat.com>
25799
25800 PR middle-end/108435
25801 * tree-nested.cc (convert_nonlocal_omp_clauses)
25802 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
25803 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
25804 before calling declare_vars.
25805 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
25806 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
25807 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
25808 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
25809
25810 2023-02-01 Tamar Christina <tamar.christina@arm.com>
25811
25812 * common/config/aarch64/aarch64-common.cc
25813 (struct aarch64_option_extension): Add native_detect and document struct
25814 a bit more.
25815 (all_extensions): Set new field native_detect.
25816 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
25817 unused struct.
25818
25819 2023-02-01 Martin Liska <mliska@suse.cz>
25820
25821 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
25822 value if set.
25823
25824 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
25825
25826 PR tree-optimization/108356
25827 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
25828 do a search of the DOM tree for a range.
25829
25830 2023-02-01 Martin Liska <mliska@suse.cz>
25831
25832 PR ipa/108509
25833 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
25834 ony non-null values.
25835 * ipa.cc (walk_polymorphic_call_targets): Likewise.
25836
25837 2023-02-01 Martin Liska <mliska@suse.cz>
25838
25839 PR driver/108572
25840 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
25841 -gz=zstd.
25842
25843 2023-02-01 Jakub Jelinek <jakub@redhat.com>
25844
25845 PR debug/108573
25846 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
25847 subregs in DEBUG_INSNs.
25848
25849 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
25850
25851 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
25852
25853 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
25854
25855 * config/s390/s390.cc (s390_restore_gpr_p): New function.
25856 (s390_preserve_gpr_arg_in_range_p): New function.
25857 (s390_preserve_gpr_arg_p): New function.
25858 (s390_preserve_fpr_arg_p): New function.
25859 (s390_register_info_stdarg_fpr): Rename to ...
25860 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
25861 (s390_register_info_stdarg_gpr): Rename to ...
25862 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
25863 (s390_register_info): Use the renamed functions above.
25864 (s390_optimize_register_info): Likewise.
25865 (save_fpr): Generate CFI for -mpreserve-args.
25866 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
25867 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
25868 (s390_optimize_prologue): Likewise.
25869 * config/s390/s390.opt: New option -mpreserve-args
25870
25871 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
25872
25873 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
25874 (restore_gprs): Likewise.
25875 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
25876 frame pointer if a frame-pointer is used.
25877 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
25878 * config/s390/s390.md (stack_tie): Add a register operand and
25879 rename to ...
25880 (@stack_tie<mode>): ... this.
25881
25882 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
25883
25884 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
25885 EMIT_CFI parameter.
25886 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
25887 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
25888
25889 2023-02-01 Richard Biener <rguenther@suse.de>
25890
25891 PR middle-end/108500
25892 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
25893 with tree traversal algorithm.
25894
25895 2023-02-01 Jason Merrill <jason@redhat.com>
25896
25897 * doc/invoke.texi: Document -Wno-changes-meaning.
25898
25899 2023-02-01 David Malcolm <dmalcolm@redhat.com>
25900
25901 * doc/invoke.texi (Static Analyzer Options): Add notes about
25902 limitations of -fanalyzer.
25903
25904 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25905
25906 * config/riscv/constraints.md (vj): New.
25907 (vk): Ditto
25908 * config/riscv/iterators.md: Add more opcode.
25909 * config/riscv/predicates.md (vector_arith_operand): New.
25910 (vector_neg_arith_operand): New.
25911 (vector_shift_operand): New.
25912 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
25913 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
25914 (vsub): Ditto.
25915 (vand): Ditto.
25916 (vor): Ditto.
25917 (vxor): Ditto.
25918 (vsll): Ditto.
25919 (vsra): Ditto.
25920 (vsrl): Ditto.
25921 (vmin): Ditto.
25922 (vmax): Ditto.
25923 (vminu): Ditto.
25924 (vmaxu): Ditto.
25925 (vmul): Ditto.
25926 (vdiv): Ditto.
25927 (vrem): Ditto.
25928 (vdivu): Ditto.
25929 (vremu): Ditto.
25930 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
25931 (vsub): Ditto.
25932 (vand): Ditto.
25933 (vor): Ditto.
25934 (vxor): Ditto.
25935 (vsll): Ditto.
25936 (vsra): Ditto.
25937 (vsrl): Ditto.
25938 (vmin): Ditto.
25939 (vmax): Ditto.
25940 (vminu): Ditto.
25941 (vmaxu): Ditto.
25942 (vmul): Ditto.
25943 (vdiv): Ditto.
25944 (vrem): Ditto.
25945 (vdivu): Ditto.
25946 (vremu): Ditto.
25947 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
25948 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
25949 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
25950 (DEF_RVV_U_OPS): New.
25951 (rvv_arg_type_info::get_base_vector_type): Handle
25952 RVV_BASE_shift_vector.
25953 (rvv_arg_type_info::get_tree_type): Ditto.
25954 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
25955 RVV_BASE_shift_vector.
25956 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
25957 * config/riscv/vector-iterators.md: Handle more opcode.
25958 * config/riscv/vector.md (@pred_<optab><mode>): New.
25959
25960 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
25961
25962 PR target/108589
25963 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
25964 REG_P on SET_DEST.
25965
25966 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
25967
25968 PR tree-optimization/108608
25969 * tree-vect-loop.cc (vect_transform_reduction): Handle single
25970 def-use cycles that involve function calls rather than tree codes.
25971
25972 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
25973
25974 PR tree-optimization/108385
25975 * gimple-range-gori.cc (gori_compute::compute_operand_range):
25976 Allow VARYING computations to continue if there is a relation.
25977 * range-op.cc (pointer_plus_operator::op2_range): New.
25978
25979 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
25980
25981 PR tree-optimization/108359
25982 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
25983 (range_operator::fold_range): If op1 is equivalent to op2 then
25984 invoke new fold_in_parts_equiv to operate on sub-components.
25985 * range-op.h (wi_fold_in_parts_equiv): New prototype.
25986
25987 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
25988
25989 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
25990 not abort calculations if there is a valid relation available.
25991 (gori_compute::refine_using_relation): Pass correct relation trio.
25992 (gori_compute::compute_operand1_range): Create trio and use it.
25993 (gori_compute::compute_operand2_range): Ditto.
25994 * range-op.cc (operator_plus::op1_range): Use correct trio member.
25995 (operator_minus::op1_range): Use correct trio member.
25996 * value-relation.cc (value_relation::create_trio): New.
25997 * value-relation.h (value_relation::create_trio): New prototype.
25998
25999 2023-01-31 Jakub Jelinek <jakub@redhat.com>
26000
26001 PR target/108599
26002 * config/i386/i386-expand.cc
26003 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
26004 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
26005 equal to bitsize of mode.
26006
26007 2023-01-31 Jakub Jelinek <jakub@redhat.com>
26008
26009 PR rtl-optimization/108596
26010 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
26011 ends with asm goto and has a crossing fallthrough edge to the same bb
26012 that contains at least one of its labels by restoring EDGE_CROSSING
26013 flag even on possible edge from cur_bb to new_bb successor.
26014
26015 2023-01-31 Jakub Jelinek <jakub@redhat.com>
26016
26017 PR c++/105593
26018 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
26019 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
26020 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
26021 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
26022 uninitialized automatic variable __W.
26023
26024 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
26025
26026 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
26027
26028 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26029
26030 * config/riscv/riscv-protos.h (get_vector_mode): New function.
26031 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
26032 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
26033 (class loadstore): Adjust for indexed loads/stores support.
26034 (BASE): Ditto.
26035 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
26036 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
26037 (vluxei16): Ditto.
26038 (vluxei32): Ditto.
26039 (vluxei64): Ditto.
26040 (vloxei8): Ditto.
26041 (vloxei16): Ditto.
26042 (vloxei32): Ditto.
26043 (vloxei64): Ditto.
26044 (vsuxei8): Ditto.
26045 (vsuxei16): Ditto.
26046 (vsuxei32): Ditto.
26047 (vsuxei64): Ditto.
26048 (vsoxei8): Ditto.
26049 (vsoxei16): Ditto.
26050 (vsoxei32): Ditto.
26051 (vsoxei64): Ditto.
26052 * config/riscv/riscv-vector-builtins-shapes.cc
26053 (struct indexed_loadstore_def): New class.
26054 (SHAPE): Ditto.
26055 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26056 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
26057 for indexed loads/stores support.
26058 (check_required_extensions): Ditto.
26059 (rvv_arg_type_info::get_base_vector_type): New function.
26060 (rvv_arg_type_info::get_tree_type): Ditto.
26061 (function_builder::add_unique_function): Adjust for indexed loads/stores
26062 support.
26063 (function_expander::use_exact_insn): New function.
26064 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
26065 indexed loads/stores support.
26066 (struct rvv_arg_type_info): Ditto.
26067 (function_expander::index_mode): New function.
26068 (function_base::apply_tail_policy_p): Ditto.
26069 (function_base::apply_mask_policy_p): Ditto.
26070 * config/riscv/vector-iterators.md (unspec): New unspec.
26071 * config/riscv/vector.md (unspec): Ditto.
26072 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
26073 pattern.
26074 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
26075 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
26076 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
26077 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26078 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26079 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26080 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26081 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26082 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26083 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26084 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26085 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26086 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26087
26088 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
26089
26090 * config.gcc: Recognize x86_64-*-gnu* targets and include
26091 i386/gnu64.h.
26092 * config/i386/gnu64.h: Define configuration for new target
26093 including ld.so location.
26094
26095 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
26096
26097 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
26098 ampere1a to include SM4.
26099
26100 2023-01-30 Andrew Pinski <apinski@marvell.com>
26101
26102 PR tree-optimization/108582
26103 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
26104 for middlebb to have no phi nodes.
26105
26106 2023-01-30 Richard Biener <rguenther@suse.de>
26107
26108 PR tree-optimization/108574
26109 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
26110 sameval and def, ignore the equivalence if there's the
26111 danger of oscillating between two values.
26112
26113 2023-01-30 Andreas Schwab <schwab@suse.de>
26114
26115 * common/config/riscv/riscv-common.cc
26116 (riscv_option_optimization_table)
26117 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
26118 -fasynchronous-unwind-tables and -funwind-tables.
26119 * config.gcc (riscv*-*-linux*): Define
26120 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
26121
26122 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
26123
26124 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
26125 value of includedir.
26126
26127 2023-01-30 Richard Biener <rguenther@suse.de>
26128
26129 PR ipa/108511
26130 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
26131 assert.
26132
26133 2023-01-30 liuhongt <hongtao.liu@intel.com>
26134
26135 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
26136 * doc/invoke.texi: Ditto.
26137
26138 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
26139
26140 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
26141 (stmt_may_terminate_function_p): If assuming return or EH
26142 volatile asm is safe.
26143 (find_always_executed_bbs): Fix handling of terminating BBS and
26144 infinite loops; add debug output.
26145 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
26146
26147 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
26148
26149 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
26150 off-by-one in checking the permissible shift-amount.
26151
26152 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26153
26154 * doc/extend.texi (Named Address Spaces): Update link to the
26155 AVR-Libc manual.
26156
26157 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26158
26159 * doc/standards.texi (Standards): Fix markup.
26160
26161 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26162
26163 * doc/standards.texi (Standards): Update link to Objective-C book.
26164
26165 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26166
26167 * doc/invoke.texi (Instrumentation Options): Update reference to
26168 AddressSanitizer.
26169
26170 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26171
26172 * doc/standards.texi: Update Go1 link.
26173
26174 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26175
26176 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
26177 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
26178 Support vlse/vsse.
26179 (BASE): Ditto.
26180 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26181 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
26182 (vsse): New class.
26183 * config/riscv/riscv-vector-builtins.cc
26184 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
26185 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
26186 (@pred_strided_store<mode>): Ditto.
26187
26188 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26189
26190 * config/riscv/vector.md (tail_policy_op_idx): Remove.
26191 (mask_policy_op_idx): Remove.
26192 (avl_type_op_idx): Remove.
26193
26194 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
26195
26196 PR tree-optimization/96373
26197 * tree.h (sign_mask_for): Declare.
26198 * tree.cc (sign_mask_for): New function.
26199 (signed_or_unsigned_type_for): For vector types, try to use the
26200 related_int_vector_mode.
26201 * genmatch.cc (commutative_op): Handle conditional internal functions.
26202 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
26203
26204 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
26205
26206 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
26207 Use the likely minimum VF when bounding the denominators to
26208 the estimated number of iterations.
26209
26210 2023-01-27 Richard Biener <rguenther@suse.de>
26211
26212 PR target/55522
26213 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
26214 and -Ofast FP environment side-effects.
26215
26216 2023-01-27 Richard Biener <rguenther@suse.de>
26217
26218 PR target/55522
26219 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
26220 Don't add crtfastmath.o for -shared.
26221
26222 2023-01-27 Richard Biener <rguenther@suse.de>
26223
26224 PR target/55522
26225 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
26226 for -shared.
26227
26228 2023-01-27 Richard Biener <rguenther@suse.de>
26229
26230 PR target/55522
26231 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
26232 crtfastmath.o for -shared.
26233
26234 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
26235
26236 PR tree-optimization/108306
26237 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
26238 varying for shifts that are always out of void range.
26239 (operator_rshift::fold_range): Return [0, 0] not
26240 varying for shifts that are always out of void range.
26241
26242 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
26243
26244 PR tree-optimization/108447
26245 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
26246 Do not attempt to fold HONOR_NAN types.
26247
26248 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26249
26250 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
26251 Remove _m suffix for "vop_m" C++ overloaded API name.
26252
26253 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26254
26255 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
26256 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26257 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
26258 (vsm): Ditto.
26259 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
26260 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
26261 (vbool64_t): Ditto.
26262 (vbool32_t): Ditto.
26263 (vbool16_t): Ditto.
26264 (vbool8_t): Ditto.
26265 (vbool4_t): Ditto.
26266 (vbool2_t): Ditto.
26267 (vbool1_t): Ditto.
26268 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
26269 (rvv_arg_type_info::get_tree_type): Ditto.
26270 (function_expander::use_contiguous_load_insn): Ditto.
26271 * config/riscv/vector.md (@pred_store<mode>): Ditto.
26272
26273 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26274
26275 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
26276 (vsetvl_discard_result_insn_p): New function.
26277 (reg_killed_by_bb_p): rename to find_reg_killed_by.
26278 (find_reg_killed_by): New name.
26279 (get_vl): allow it to be called by more functions.
26280 (has_vsetvl_killed_avl_p): Add condition.
26281 (get_avl): allow it to be called by more functions.
26282 (insn_should_be_added_p): New function.
26283 (get_all_nonphi_defs): Refine function.
26284 (get_all_sets): Ditto.
26285 (get_same_bb_set): New function.
26286 (any_insn_in_bb_p): Ditto.
26287 (any_set_in_bb_p): Ditto.
26288 (get_vl_vtype_info): Add VLMAX forward optimization.
26289 (source_equal_p): Fix issues.
26290 (extract_single_source): Refine.
26291 (avl_info::multiple_source_equal_p): New function.
26292 (avl_info::operator==): Adjust for final version.
26293 (vl_vtype_info::operator==): Ditto.
26294 (vl_vtype_info::same_avl_p): Ditto.
26295 (vector_insn_info::parse_insn): Ditto.
26296 (vector_insn_info::available_p): New function.
26297 (vector_insn_info::merge): Adjust for final version.
26298 (vector_insn_info::dump): Add hard_empty.
26299 (pass_vsetvl::hard_empty_block_p): New function.
26300 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
26301 (pass_vsetvl::forward_demand_fusion): Ditto.
26302 (pass_vsetvl::demand_fusion): Ditto.
26303 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
26304 (pass_vsetvl::compute_local_properties): Adjust for final version.
26305 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
26306 (pass_vsetvl::refine_vsetvls): Ditto.
26307 (pass_vsetvl::commit_vsetvls): Ditto.
26308 (pass_vsetvl::propagate_avl): New function.
26309 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
26310 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
26311
26312 2023-01-27 Jakub Jelinek <jakub@redhat.com>
26313
26314 PR other/108560
26315 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
26316 from size_t to int.
26317
26318 2023-01-27 Jakub Jelinek <jakub@redhat.com>
26319
26320 PR ipa/106061
26321 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
26322 redirection of calls to __builtin_trap in addition to redirection
26323 to __builtin_unreachable.
26324
26325 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26326
26327 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
26328
26329 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26330
26331 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
26332 (emit_vsetvl_insn): Ditto.
26333
26334 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26335
26336 * config/riscv/vector.md: Fix constraints.
26337
26338 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26339
26340 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
26341
26342 2023-01-27 Patrick Palka <ppalka@redhat.com>
26343 Jakub Jelinek <jakub@redhat.com>
26344
26345 * tree-core.h (tree_code_type, tree_code_length): For
26346 C++17 and later, add inline keyword, otherwise don't define
26347 the arrays, but declare extern arrays.
26348 * tree.cc (tree_code_type, tree_code_length): Define these
26349 arrays for C++14 and older.
26350
26351 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26352
26353 * config/riscv/riscv-vsetvl.h: Change it into public.
26354
26355 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26356
26357 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
26358 pass.
26359
26360 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26361
26362 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
26363
26364 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26365
26366 * config/riscv/vector.md: Fix incorrect attributes.
26367
26368 2023-01-27 Richard Biener <rguenther@suse.de>
26369
26370 PR target/55522
26371 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
26372 Don't add crtfastmath.o for -shared.
26373
26374 2023-01-27 Alexandre Oliva <oliva@gnu.org>
26375
26376 * doc/options.texi (option, RejectNegative): Mention that
26377 -g-started options are also implicitly negatable.
26378
26379 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
26380
26381 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
26382 Use get_typenode_from_name to get fixed-width integer type
26383 nodes.
26384 * config/riscv/riscv-vector-builtins.def: Update define with
26385 fixed-width integer type nodes.
26386
26387 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26388
26389 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
26390 (real_insn_and_same_bb_p): New function.
26391 (same_bb_and_after_or_equal_p): Remove it.
26392 (before_p): New function.
26393 (reg_killed_by_bb_p): Ditto.
26394 (has_vsetvl_killed_avl_p): Ditto.
26395 (get_vl): Move location so that we can call it.
26396 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
26397 (available_occurrence_p): Ditto.
26398 (dominate_probability_p): Remove it.
26399 (can_backward_propagate_p): Remove it.
26400 (get_all_nonphi_defs): New function.
26401 (get_all_predecessors): Ditto.
26402 (any_insn_in_bb_p): Ditto.
26403 (insert_vsetvl): Adjust AVL REG.
26404 (source_equal_p): New function.
26405 (extract_single_source): Ditto.
26406 (avl_info::single_source_equal_p): Ditto.
26407 (avl_info::operator==): Adjust for AVL=REG.
26408 (vl_vtype_info::same_avl_p): Ditto.
26409 (vector_insn_info::set_demand_info): Remove it.
26410 (vector_insn_info::compatible_p): Adjust for AVL=REG.
26411 (vector_insn_info::compatible_avl_p): New function.
26412 (vector_insn_info::merge): Adjust AVL=REG.
26413 (vector_insn_info::dump): Ditto.
26414 (pass_vsetvl::merge_successors): Remove it.
26415 (enum fusion_type): New enum.
26416 (pass_vsetvl::get_backward_fusion_type): New function.
26417 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
26418 (pass_vsetvl::forward_demand_fusion): Ditto.
26419 (pass_vsetvl::demand_fusion): Ditto.
26420 (pass_vsetvl::prune_expressions): Ditto.
26421 (pass_vsetvl::compute_local_properties): Ditto.
26422 (pass_vsetvl::cleanup_vsetvls): Ditto.
26423 (pass_vsetvl::commit_vsetvls): Ditto.
26424 (pass_vsetvl::init): Ditto.
26425 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
26426 (enum merge_type): New enum.
26427
26428 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26429
26430 * config/riscv/riscv-vsetvl.cc
26431 (vector_infos_manager::vector_infos_manager): Add probability.
26432 (vector_infos_manager::dump): Ditto.
26433 (pass_vsetvl::compute_probabilities): Ditto.
26434 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
26435
26436 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26437
26438 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
26439 (vector_insn_info::merge): Ditto.
26440 (vector_insn_info::dump): Ditto.
26441 (pass_vsetvl::merge_successors): Ditto.
26442 (pass_vsetvl::backward_demand_fusion): Ditto.
26443 (pass_vsetvl::forward_demand_fusion): Ditto.
26444 (pass_vsetvl::commit_vsetvls): Ditto.
26445 * config/riscv/riscv-vsetvl.h: Ditto.
26446
26447 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26448
26449 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
26450 rinsn.
26451
26452 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26453
26454 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
26455
26456 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26457
26458 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
26459 Add pre-check for redundant flow.
26460
26461 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26462
26463 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
26464 (vector_infos_manager::free_bitmap_vectors): Ditto.
26465 (pass_vsetvl::pre_vsetvl): Adjust codes.
26466 * config/riscv/riscv-vsetvl.h: New function declaration.
26467
26468 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26469
26470 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
26471 (vector_insn_info::set_demand_info): New function.
26472 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
26473 (pass_vsetvl::merge_successors): Ditto.
26474 (pass_vsetvl::compute_global_backward_infos): Ditto.
26475 (pass_vsetvl::backward_demand_fusion): Ditto.
26476 (pass_vsetvl::forward_demand_fusion): Ditto.
26477 (pass_vsetvl::demand_fusion): New function.
26478 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
26479 * config/riscv/riscv-vsetvl.h: New function declaration.
26480
26481 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26482
26483 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
26484
26485 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26486
26487 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
26488 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
26489
26490 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26491
26492 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
26493 (backward_propagate_worthwhile_p): Fix non-worthwhile.
26494
26495 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26496
26497 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
26498
26499 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26500
26501 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
26502 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
26503 (pass_vsetvl::commit_vsetvls): Ditto.
26504 * config/riscv/riscv-vsetvl.h: New function declaration.
26505
26506 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26507
26508 * config/riscv/vector.md:
26509
26510 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26511
26512 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
26513 pred_store for vse.
26514 * config/riscv/riscv-vector-builtins.cc
26515 (function_expander::add_mem_operand): Refine function.
26516 (function_expander::use_contiguous_load_insn): Adjust new
26517 implementation.
26518 (function_expander::use_contiguous_store_insn): Ditto.
26519 * config/riscv/riscv-vector-builtins.h: Refine function.
26520 * config/riscv/vector.md (@pred_store<mode>): New pattern.
26521
26522 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26523
26524 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
26525
26526 2023-01-26 Marek Polacek <polacek@redhat.com>
26527
26528 PR middle-end/108543
26529 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
26530 if it was previously set.
26531
26532 2023-01-26 Jakub Jelinek <jakub@redhat.com>
26533
26534 PR tree-optimization/108540
26535 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
26536 are singletons, use range_true even if op1 != op2
26537 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
26538 even if intersection of the ranges is empty and one has
26539 zero low bound and another zero high bound, use range_true_and_false
26540 rather than range_false.
26541 (foperator_not_equal::fold_range): If both op1 and op2
26542 are singletons, use range_false even if op1 != op2
26543 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
26544 even if intersection of the ranges is empty and one has
26545 zero low bound and another zero high bound, use range_true_and_false
26546 rather than range_true.
26547
26548 2023-01-26 Jakub Jelinek <jakub@redhat.com>
26549
26550 * value-relation.cc (kind_string): Add const.
26551 (rr_negate_table, rr_swap_table, rr_intersect_table,
26552 rr_union_table, rr_transitive_table): Add static const, change
26553 element type from relation_kind to unsigned char.
26554 (relation_negate, relation_swap, relation_intersect, relation_union,
26555 relation_transitive): Cast rr_*_table element to relation_kind.
26556 (relation_to_code): Add static const.
26557 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
26558
26559 2023-01-26 Richard Biener <rguenther@suse.de>
26560
26561 PR tree-optimization/108547
26562 * gimple-predicate-analysis.cc (value_sat_pred_p):
26563 Use widest_int.
26564
26565 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
26566
26567 PR tree-optimization/108522
26568 * tree-object-size.cc (compute_object_offset): Make EXPR
26569 argument non-const. Call component_ref_field_offset.
26570
26571 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26572
26573 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
26574 FEATURE_STRING field.
26575
26576 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
26577
26578 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
26579
26580 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
26581
26582 PR modula2/102343
26583 PR modula2/108182
26584 * gcc.cc: Provide default specs for Modula-2 so that when the
26585 language is not built-in better diagnostics are emitted for
26586 attempts to use .mod or .m2i file extensions.
26587
26588 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26589
26590 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
26591
26592 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26593
26594 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
26595
26596 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26597
26598 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
26599 Fix spacing.
26600
26601 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26602
26603 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
26604
26605 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26606
26607 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
26608
26609 2023-01-25 Richard Biener <rguenther@suse.de>
26610
26611 PR tree-optimization/108523
26612 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
26613 backedge value for the result when using predication to
26614 prove equivalence.
26615
26616 2023-01-25 Richard Biener <rguenther@suse.de>
26617
26618 * doc/lto.texi (Command line options): Reword and update reference
26619 to removed lto_read_all_file_options.
26620
26621 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
26622
26623 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
26624 tests.
26625
26626 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
26627
26628 * doc/contrib.texi: Add Jose E. Marchesi.
26629
26630 2023-01-25 Jakub Jelinek <jakub@redhat.com>
26631
26632 PR tree-optimization/108498
26633 * gimple-ssa-store-merging.cc (class store_operand_info):
26634 End coment with full stop rather than comma.
26635 (split_group): Likewise.
26636 (merged_store_group::apply_stores): Clear string_concatenation if
26637 start or end aren't on a byte boundary.
26638
26639 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
26640 Jakub Jelinek <jakub@redhat.com>
26641
26642 PR tree-optimization/108522
26643 * tree-object-size.cc (compute_object_offset): Use
26644 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
26645
26646 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26647
26648 * config/xtensa/xtensa.md:
26649 Fix exit from loops detecting references before overwriting in the
26650 split pattern.
26651
26652 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
26653
26654 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
26655 do elimination but only for hard register.
26656 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
26657 calls of get_hard_regno.
26658
26659 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
26660
26661 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
26662 of CPU version.
26663
26664 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
26665
26666 PR target/108177
26667 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
26668 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
26669 as input operand.
26670
26671 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
26672
26673 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
26674 and only include 'csky/t-csky-linux' when enable multilib.
26675 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
26676 define it when disable multilib.
26677
26678 2023-01-24 Richard Biener <rguenther@suse.de>
26679
26680 PR tree-optimization/108500
26681 * dominance.h (calculate_dominance_info): Add parameter
26682 to indicate fast-query compute, defaulted to true.
26683 * dominance.cc (calculate_dominance_info): Honor
26684 fast-query compute parameter.
26685 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
26686 not compute the dominator fast-query DFS numbers.
26687
26688 2023-01-24 Eric Biggers <ebiggers@google.com>
26689
26690 PR bootstrap/90543
26691 * optc-save-gen.awk: Fix copy-and-paste error.
26692
26693 2023-01-24 Jakub Jelinek <jakub@redhat.com>
26694
26695 PR c++/108474
26696 * cgraphbuild.cc: Include gimplify.h.
26697 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
26698 their corresponding DECL_VALUE_EXPR expressions after unsharing.
26699
26700 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26701
26702 PR target/108505
26703 * config.gcc (tm_file): Move the variable out of loop.
26704
26705 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
26706 Yang Yujie <yangyujie@loongson.cn>
26707
26708 PR target/107731
26709 * config/loongarch/loongarch.cc (loongarch_classify_address):
26710 Add precessint for CONST_INT.
26711 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
26712 (loongarch_print_operand): Increase the processing of '%c'.
26713 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
26714 And port the public operand modifiers information to this document.
26715
26716 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26717
26718 * doc/invoke.texi (-mbranch-protection): Update documentation.
26719
26720 2023-01-23 Richard Biener <rguenther@suse.de>
26721
26722 PR target/55522
26723 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
26724 for -shared.
26725 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
26726 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
26727 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
26728 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
26729
26730 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26731
26732 * config/arm/aout.h (ra_auth_code): Add entry in enum.
26733 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
26734 to dwarf frame expression.
26735 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
26736 (arm_expand_prologue): Update frame related information and reg notes
26737 for pac/pacbit insn.
26738 (arm_regno_class): Check for pac pseudo reigster.
26739 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
26740 (arm_init_machine_status): Set pacspval_needed to zero.
26741 (arm_debugger_regno): Check for PAC register.
26742 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
26743 register.
26744 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
26745 (arm_unwind_emit): Update REG_CFA_REGISTER case._
26746 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
26747 (DWARF_PAC_REGNUM): Define.
26748 (IS_PAC_REGNUM): Likewise.
26749 (enum reg_class): Add PAC_REG entry.
26750 (machine_function): Add pacbti_needed state to structure.
26751 * config/arm/arm.md (RA_AUTH_CODE): Define.
26752
26753 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26754
26755 * config.gcc ($tm_file): Update variable.
26756 * config/arm/arm-mlib.h: Create new header file.
26757 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
26758 multilib arch directory.
26759 (MULTILIB_REUSE): Add multilib reuse rules.
26760 (MULTILIB_MATCHES): Add multilib match rules.
26761
26762 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26763
26764 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
26765 * config/arm/arm-tables.opt: Regenerate.
26766 * config/arm/arm-tune.md: Likewise.
26767 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
26768 * (-mfix-cmse-cve-2021-35465): Likewise.
26769
26770 2023-01-23 Richard Biener <rguenther@suse.de>
26771
26772 PR tree-optimization/108482
26773 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
26774 .LOOP_DIST_ALIAS calls.
26775
26776 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26777
26778 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
26779 * config/arm/arm-protos.h: Update.
26780 * config/arm/aarch-common-protos.h: Declare
26781 'aarch_bti_arch_check'.
26782 * config/arm/arm.cc (aarch_bti_enabled) Update.
26783 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
26784 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
26785 * config/arm/arm.md (bti_nop): New insn.
26786 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
26787 (aarch-bti-insert.o): New target.
26788 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
26789 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
26790 compatibility.
26791 (gate): Make use of 'aarch_bti_arch_check'.
26792 * config/arm/arm-passes.def: New file.
26793 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
26794
26795 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26796
26797 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
26798 'aarch-bti-insert.o'.
26799 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
26800 proto.
26801 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
26802 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
26803 (aarch64_output_mi_thunk)
26804 (aarch64_print_patchable_function_entry)
26805 (aarch64_file_end_indicate_exec_stack): Update renamed function
26806 calls to renamed functions.
26807 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
26808 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
26809 target.
26810 * config/aarch64/aarch64-bti-insert.cc: Delete.
26811 * config/arm/aarch-bti-insert.cc: New file including and
26812 generalizing code from aarch64-bti-insert.cc.
26813 * config/arm/aarch-common-protos.h: Update.
26814
26815 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26816
26817 * config/arm/arm.h (arm_arch8m_main): Declare it.
26818 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
26819 Declare it.
26820 * config/arm/arm.cc (arm_arch8m_main): Define it.
26821 (arm_option_reconfigure_globals): Set arm_arch8m_main.
26822 (arm_compute_frame_layout, arm_expand_prologue)
26823 (thumb2_expand_return, arm_expand_epilogue)
26824 (arm_conditional_register_usage): Update for pac codegen.
26825 (arm_current_function_pac_enabled_p): New function.
26826 (aarch_bti_enabled) New function.
26827 (use_return_insn): Return zero when pac is enabled.
26828 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
26829 Add new patterns.
26830 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
26831 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
26832
26833 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26834
26835 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
26836 mbranch-protection.
26837
26838 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26839 Tejas Belagod <tbelagod@arm.com>
26840
26841 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
26842 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
26843
26844 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26845 Tejas Belagod <tbelagod@arm.com>
26846 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26847
26848 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
26849 new pseudo register class _UVRSC_PAC.
26850
26851 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26852 Tejas Belagod <tbelagod@arm.com>
26853
26854 * config/arm/arm-c.cc (arm_cpu_builtins): Define
26855 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
26856 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
26857
26858 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26859 Tejas Belagod <tbelagod@arm.com>
26860
26861 * doc/sourcebuild.texi: Document arm_pacbti_hw.
26862
26863 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26864 Tejas Belagod <tbelagod@arm.com>
26865 Richard Earnshaw <Richard.Earnshaw@arm.com>
26866
26867 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
26868 -mbranch-protection option and initialize appropriate data structures.
26869 * config/arm/arm.opt (-mbranch-protection): New option.
26870 * doc/invoke.texi (Arm Options): Document it.
26871
26872 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26873 Tejas Belagod <tbelagod@arm.com>
26874
26875 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
26876 * config/arm/arm-cpus.in (pacbti): New feature.
26877 * doc/invoke.texi (Arm Options): Document it.
26878
26879 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26880 Tejas Belagod <tbelagod@arm.com>
26881
26882 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
26883 (all_architectures): Fix comment.
26884 (aarch64_parse_extension): Rename return type, enum value names.
26885 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
26886 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
26887 Also rename corresponding enum values.
26888 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
26889 out aarch64_function_type and move it to common code as
26890 aarch_function_type in aarch-common.h.
26891 * config/aarch64/aarch64-protos.h: Include common types header,
26892 move out types aarch64_parse_opt_result and aarch64_key_type to
26893 aarch-common.h
26894 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
26895 and functions out into aarch-common.h and aarch-common.cc. Fix up
26896 all the name changes resulting from the move.
26897 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
26898 and enum value.
26899 * config/aarch64/aarch64.opt: Include aarch-common.h to import
26900 type move. Fix up name changes from factoring out common code and
26901 data.
26902 * config/arm/aarch-common-protos.h: Export factored out routines to both
26903 backends.
26904 * config/arm/aarch-common.cc: Include newly factored out types.
26905 Move all mbranch-protection code and data structures from
26906 aarch64.cc.
26907 * config/arm/aarch-common.h: New header that declares types shared
26908 between aarch32 and aarch64 backends.
26909 * config/arm/arm-protos.h: Declare types and variables that are
26910 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
26911 aarch_ra_sign_scope and aarch_enable_bti.
26912 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
26913 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
26914 * config/arm/arm.cc: Add missing includes.
26915
26916 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
26917
26918 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
26919
26920 2023-01-23 Richard Biener <rguenther@suse.de>
26921
26922 PR tree-optimization/108449
26923 * cgraphunit.cc (check_global_declaration): Do not turn
26924 undefined statics into externs.
26925
26926 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
26927
26928 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
26929 and HI input modes.
26930 * config/pru/pru.md (clz): Fix generated code for QI and HI
26931 input modes.
26932
26933 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
26934
26935 * config/v850/v850.cc (v850_select_section): Put const volatile
26936 objects into read-only sections.
26937
26938 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
26939
26940 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
26941 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
26942 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
26943
26944 2023-01-20 Jakub Jelinek <jakub@redhat.com>
26945
26946 PR tree-optimization/108457
26947 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
26948 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
26949 argument instead of a temporary. Formatting fixes.
26950
26951 2023-01-19 Jakub Jelinek <jakub@redhat.com>
26952
26953 PR tree-optimization/108447
26954 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
26955 (relation_tests): Add self-tests for relation_{intersect,union}
26956 commutativity.
26957 * selftest.h (relation_tests): Declare.
26958 * function-tests.cc (test_ranges): Call it.
26959
26960 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
26961
26962 PR target/108436
26963 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
26964 invalid third argument to __builtin_ia32_prefetch.
26965
26966 2023-01-19 Jakub Jelinek <jakub@redhat.com>
26967
26968 PR middle-end/108459
26969 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
26970 than fold_unary for NEGATE_EXPR.
26971
26972 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
26973
26974 PR target/108411
26975 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
26976 comment. Move assert about alignment a bit later.
26977
26978 2023-01-19 Jakub Jelinek <jakub@redhat.com>
26979
26980 PR tree-optimization/108440
26981 * tree-ssa-forwprop.cc: Include gimple-range.h.
26982 (simplify_rotate): For the forms with T2 wider than T and shift counts of
26983 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
26984 to B. For the forms with T2 wider than T and shift counts of
26985 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
26986 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
26987 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
26988 pass specific ranger instead of get_global_range_query.
26989 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
26990 been created.
26991
26992 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
26993
26994 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
26995 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
26996 the pattern.
26997 (aarch64_simd_vec_copy_lane<mode>): Likewise.
26998 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
26999
27000 2023-01-19 Alexandre Oliva <oliva@adacore.com>
27001
27002 PR debug/106746
27003 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
27004 within debug insns.
27005
27006 2023-01-18 Martin Jambor <mjambor@suse.cz>
27007
27008 PR ipa/107944
27009 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
27010 lcone_of chain also do not need the body.
27011
27012 2023-01-18 Richard Biener <rguenther@suse.de>
27013
27014 Revert:
27015 2022-12-16 Richard Biener <rguenther@suse.de>
27016
27017 PR middle-end/108086
27018 * tree-inline.cc (remap_ssa_name): Do not unshare the
27019 result from the decl_map.
27020
27021 2023-01-18 Murray Steele <murray.steele@arm.com>
27022
27023 PR target/108442
27024 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
27025 function.
27026 (__arm_vst1q_p_s8): Likewise.
27027 (__arm_vld1q_z_u8): Likewise.
27028 (__arm_vld1q_z_s8): Likewise.
27029 (__arm_vst1q_p_u16): Likewise.
27030 (__arm_vst1q_p_s16): Likewise.
27031 (__arm_vld1q_z_u16): Likewise.
27032 (__arm_vld1q_z_s16): Likewise.
27033 (__arm_vst1q_p_u32): Likewise.
27034 (__arm_vst1q_p_s32): Likewise.
27035 (__arm_vld1q_z_u32): Likewise.
27036 (__arm_vld1q_z_s32): Likewise.
27037 (__arm_vld1q_z_f16): Likewise.
27038 (__arm_vst1q_p_f16): Likewise.
27039 (__arm_vld1q_z_f32): Likewise.
27040 (__arm_vst1q_p_f32): Likewise.
27041
27042 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27043
27044 * config/xtensa/xtensa.md (xorsi3_internal):
27045 Rename from the original of "xorsi3".
27046 (xorsi3): New expansion pattern that emits addition rather than
27047 bitwise-XOR when the second source is a constant of -2147483648
27048 if TARGET_DENSITY.
27049
27050 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
27051 Andrew Pinski <apinski@marvell.com>
27052
27053 PR target/108396
27054 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
27055 vec_vsubcuqP with vec_vsubcuq.
27056
27057 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
27058
27059 PR target/108348
27060 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
27061 support for invalid uses of MMA opaque type in function arguments.
27062
27063 2023-01-18 liuhongt <hongtao.liu@intel.com>
27064
27065 PR target/55522
27066 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
27067 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
27068 -share or -mno-daz-ftz is specified.
27069 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
27070 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
27071
27072 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
27073
27074 * config/bpf/bpf.cc (bpf_option_override): Disable
27075 -fstack-protector.
27076
27077 2023-01-17 Jakub Jelinek <jakub@redhat.com>
27078
27079 PR tree-optimization/106523
27080 * tree-ssa-forwprop.cc (simplify_rotate): For the
27081 patterns with (-Y) & (B - 1) in one operand's shift
27082 count and Y in another, if T2 has wider precision than T,
27083 punt if Y could have a value in [B, B2 - 1] range.
27084
27085 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
27086
27087 PR target/105980
27088 * config/i386/i386.cc (x86_output_mi_thunk): Disable
27089 -mforce-indirect-call for PIC in 32-bit mode.
27090
27091 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
27092
27093 PR ipa/106077
27094 * ipa-modref.cc (modref_access_analysis::analyze): Use
27095 find_always_executed_bbs.
27096 * ipa-sra.cc (process_scan_results): Likewise.
27097 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
27098 (find_always_executed_bbs): New function.
27099 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
27100 (find_always_executed_bbs): Declare.
27101
27102 2023-01-16 Jan Hubicka <jh@suse.cz>
27103
27104 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
27105 by TARGET_USE_SCATTER.
27106 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
27107 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
27108 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
27109 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
27110 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
27111 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
27112
27113 2023-01-16 Richard Biener <rguenther@suse.de>
27114
27115 PR target/55522
27116 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
27117
27118 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
27119
27120 PR target/96795
27121 PR target/107515
27122 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
27123 (__ARM_mve_coerce3): Likewise.
27124
27125 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27126
27127 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
27128
27129 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27130
27131 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
27132 (number_of_iterations_bitcount): Add call to the above.
27133 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
27134 c[lt]z idiom recognition.
27135
27136 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27137
27138 * doc/sourcebuild.texi: Add missing target attributes.
27139
27140 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27141
27142 PR tree-optimization/94793
27143 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
27144 for c[lt]z optabs.
27145 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
27146 (number_of_iterations_cltz_complement): New.
27147 (number_of_iterations_bitcount): Add call to the above.
27148
27149 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
27150
27151 * doc/extend.texi (Common Function Attributes): Fix grammar.
27152
27153 2023-01-16 Jakub Jelinek <jakub@redhat.com>
27154
27155 PR other/108413
27156 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
27157 * config/riscv/riscv-vsetvl.cc: Likewise.
27158
27159 2023-01-16 Jakub Jelinek <jakub@redhat.com>
27160
27161 PR c++/105593
27162 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
27163 disable -Winit-self using pragma GCC diagnostic ignored.
27164 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
27165 Likewise.
27166 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
27167 _mm256_undefined_si256): Likewise.
27168 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
27169 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
27170 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
27171 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
27172
27173 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
27174
27175 PR target/108272
27176 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
27177 support for invalid uses in inline asm, factor out the checking and
27178 erroring to lambda function check_and_error_invalid_use.
27179
27180 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
27181
27182 PR tree-optimization/107608
27183 * range-op-float.cc (range_operator_float::fold_range): Avoid
27184 folding into INF when flag_trapping_math.
27185 * value-range.h (frange::known_isinf): Return false for possible NANs.
27186
27187 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27188
27189 * config.gcc (csky-*-*): Support --with-float=softfp.
27190
27191 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27192
27193 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
27194 Rename to xtensa_adjust_reg_alloc_order.
27195 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
27196 Ditto. And also remove code to reorder register numbers for
27197 leaf functions, rename the tables, and adjust the allocation
27198 order for the call0 ABI to use register A0 more.
27199 (xtensa_leaf_regs): Remove.
27200 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
27201 (order_regs_for_local_alloc): Rename as the above.
27202 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
27203
27204 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
27205
27206 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
27207 Change to define_insn_and_split to fold ldr+dup to ld1rq.
27208 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
27209
27210 2023-01-14 Alexandre Oliva <oliva@adacore.com>
27211
27212 * hash-table.h (is_deleted): Precheck !is_empty.
27213 (mark_deleted): Postcheck !is_empty.
27214 (copy constructor): Test is_empty before is_deleted.
27215
27216 2023-01-14 Alexandre Oliva <oliva@adacore.com>
27217
27218 PR target/40457
27219 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
27220 moves.
27221
27222 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
27223
27224 PR rtl-optimization/108274
27225 * function.cc (thread_prologue_and_epilogue_insns): Also update the
27226 DF information for calls in a few more cases.
27227
27228 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
27229
27230 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
27231 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
27232 define.
27233 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
27234 (MAX_SYNC_LIBFUNC_SIZE): Define.
27235 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
27236 enabled.
27237 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
27238 libcall when sync libcalls are disabled.
27239 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
27240 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
27241 are disabled on 32-bit target.
27242 * config/pa/pa.opt (matomic-libcalls): New option.
27243 * doc/invoke.texi (HPPA Options): Update.
27244
27245 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
27246
27247 PR rtl-optimization/108117
27248 PR rtl-optimization/108132
27249 * sched-deps.cc (deps_analyze_insn): Do not schedule across
27250 calls before reload.
27251
27252 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
27253
27254 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
27255 options for -mlibarch.
27256 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
27257 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
27258
27259 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
27260
27261 * attribs.cc (strict_flex_array_level_of): Move this function to ...
27262 * attribs.h (strict_flex_array_level_of): Remove the declaration.
27263 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
27264 replace the referece to strict_flex_array_level_of with
27265 DECL_NOT_FLEXARRAY.
27266 * tree.cc (component_ref_size): Likewise.
27267
27268 2023-01-13 Richard Biener <rguenther@suse.de>
27269
27270 PR target/55522
27271 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
27272 crtfastmath.o for -shared.
27273 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
27274
27275 2023-01-13 Richard Biener <rguenther@suse.de>
27276
27277 PR target/55522
27278 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
27279 crtfastmath.o for -shared.
27280 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
27281 Likewise.
27282 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
27283 Likewise.
27284
27285 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
27286
27287 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
27288 function.
27289 (TARGET_DWARF_FRAME_REG_MODE): Define.
27290
27291 2023-01-13 Richard Biener <rguenther@suse.de>
27292
27293 PR target/107209
27294 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
27295 update EH info on the fly.
27296
27297 2023-01-13 Richard Biener <rguenther@suse.de>
27298
27299 PR tree-optimization/108387
27300 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
27301 value before inserting expression into the tables.
27302
27303 2023-01-12 Andrew Pinski <apinski@marvell.com>
27304 Roger Sayle <roger@nextmovesoftware.com>
27305
27306 PR tree-optimization/92342
27307 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
27308 Use tcc_comparison and :c for the multiply.
27309 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
27310
27311 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
27312 Richard Sandiford <richard.sandiford@arm.com>
27313
27314 PR target/105549
27315 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
27316 Check DECL_PACKED for bitfield.
27317 (aarch64_layout_arg): Warn when parameter passing ABI changes.
27318 (aarch64_function_arg_boundary): Do not warn here.
27319 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
27320 changes.
27321
27322 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
27323 Richard Sandiford <richard.sandiford@arm.com>
27324
27325 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
27326 comment.
27327 (aarch64_layout_arg): Factorize warning conditions.
27328 (aarch64_function_arg_boundary): Fix typo.
27329 * function.cc (currently_expanding_function_start): New variable.
27330 (expand_function_start): Handle
27331 currently_expanding_function_start.
27332 * function.h (currently_expanding_function_start): Declare.
27333
27334 2023-01-12 Richard Biener <rguenther@suse.de>
27335
27336 PR tree-optimization/99412
27337 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
27338 (swap_ops_for_binary_stmt): Remove reduction handling.
27339 (rewrite_expr_tree_parallel): Adjust.
27340 (reassociate_bb): Likewise.
27341 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
27342
27343 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27344
27345 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
27346 Rearrange the emitting codes.
27347
27348 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27349
27350 * config/xtensa/xtensa.md (*btrue):
27351 Correct value of the attribute "length" that depends on
27352 TARGET_DENSITY and operands, and add '?' character to the register
27353 constraint of the compared operand.
27354
27355 2023-01-12 Alexandre Oliva <oliva@adacore.com>
27356
27357 * hash-table.h (expand): Check elements and deleted counts.
27358 (verify): Likewise.
27359
27360 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
27361
27362 PR tree-optimization/71343
27363 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
27364 the value number of the expression X << C the same as the value
27365 number for the multiplication X * (1<<C).
27366
27367 2023-01-11 David Faust <david.faust@oracle.com>
27368
27369 PR target/108293
27370 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
27371 floating point modes.
27372
27373 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
27374
27375 PR tree-optimization/108199
27376 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
27377 for bit-field references.
27378
27379 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
27380
27381 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
27382 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
27383 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
27384 OPTION_MASK_P10_FUSION.
27385
27386 2023-01-11 Richard Biener <rguenther@suse.de>
27387
27388 PR tree-optimization/107767
27389 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
27390 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
27391 * tree-switch-conversion.cc (switch_conversion::collect):
27392 Count unique non-default targets accounting for later
27393 merging opportunities.
27394
27395 2023-01-11 Martin Liska <mliska@suse.cz>
27396
27397 PR middle-end/107976
27398 * params.opt: Limit JT params.
27399 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
27400
27401 2023-01-11 Richard Biener <rguenther@suse.de>
27402
27403 PR tree-optimization/108352
27404 * tree-ssa-threadbackward.cc
27405 (back_threader_profitability::profitable_path_p): Adjust
27406 heuristic that allows non-multi-way branch threads creating
27407 irreducible loops.
27408 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
27409 (--param fsm-scale-path-stmts): Adjust.
27410 * params.opt (--param=fsm-scale-path-blocks=): Remove.
27411 (-param=fsm-scale-path-stmts=): Adjust description.
27412
27413 2023-01-11 Richard Biener <rguenther@suse.de>
27414
27415 PR tree-optimization/108353
27416 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
27417 Remove.
27418 (add_ssa_edge): Simplify.
27419 (add_control_edge): Likewise.
27420 (ssa_prop_init): Likewise.
27421 (ssa_prop_fini): Likewise.
27422 (ssa_propagation_engine::ssa_propagate): Likewise.
27423
27424 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
27425
27426 * config/s390/s390.md (*not<mode>): New pattern.
27427
27428 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27429
27430 * config/xtensa/xtensa.cc (xtensa_insn_cost):
27431 Let insn cost for size be obtained by applying COSTS_N_INSNS()
27432 to instruction length and then dividing by 3.
27433
27434 2023-01-10 Richard Biener <rguenther@suse.de>
27435
27436 PR tree-optimization/106293
27437 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
27438 process degenerate PHI defs.
27439
27440 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
27441
27442 PR rtl-optimization/106421
27443 * cprop.cc (bypass_block): Check that DEST is local to this
27444 function (non-NULL) before calling find_edge.
27445
27446 2023-01-10 Martin Jambor <mjambor@suse.cz>
27447
27448 PR ipa/108110
27449 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
27450 sort_replacements, lookup_first_base_replacement and
27451 m_sorted_replacements_p.
27452 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
27453 (ipa_param_body_adjustments::register_replacement): Set
27454 m_sorted_replacements_p to false.
27455 (compare_param_body_replacement): New function.
27456 (ipa_param_body_adjustments::sort_replacements): Likewise.
27457 (ipa_param_body_adjustments::common_initialization): Call
27458 sort_replacements.
27459 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
27460 m_sorted_replacements_p.
27461 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
27462 std::lower_bound.
27463 (ipa_param_body_adjustments::lookup_first_base_replacement): New
27464 function.
27465 (ipa_param_body_adjustments::modify_call_stmt): Use
27466 lookup_first_base_replacement.
27467 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
27468 adjustments->sort_replacements.
27469
27470 2023-01-10 Richard Biener <rguenther@suse.de>
27471
27472 PR tree-optimization/108314
27473 * tree-vect-stmts.cc (vectorizable_condition): Do not
27474 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
27475
27476 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27477
27478 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
27479
27480 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27481
27482 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
27483
27484 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27485
27486 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
27487 defines for soft float abi.
27488
27489 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27490
27491 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
27492 (smart_bclri): Likewise.
27493 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
27494 (fast_bclri): Likewise.
27495 (fast_cmpnesi_i): Likewise.
27496 (*fast_cmpltsi_i): Likewise.
27497 (*fast_cmpgeusi_i): Likewise.
27498
27499 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27500
27501 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
27502 flag_fp_int_builtin_inexact || !flag_trapping_math.
27503 (<frm_pattern><mode>2): Likewise.
27504
27505 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
27506
27507 * config/s390/s390.cc (s390_register_info): Check call_used_regs
27508 instead of hard-coding the register numbers for call saved
27509 registers.
27510 (s390_optimize_register_info): Likewise.
27511
27512 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
27513
27514 * doc/gm2.texi (Overview): Fix @node markers.
27515 (Using): Likewise. Remove subsections that were moved to Overview
27516 from the menu and move others around.
27517
27518 2023-01-09 Richard Biener <rguenther@suse.de>
27519
27520 PR middle-end/108209
27521 * genmatch.cc (commutative_op): Fix return value for
27522 user-id with non-commutative first replacement.
27523
27524 2023-01-09 Jakub Jelinek <jakub@redhat.com>
27525
27526 PR target/107453
27527 * calls.cc (expand_call): For calls with
27528 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
27529 Formatting fix.
27530
27531 2023-01-09 Richard Biener <rguenther@suse.de>
27532
27533 PR middle-end/69482
27534 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
27535 qualified accesses also force objects to memory.
27536
27537 2023-01-09 Martin Liska <mliska@suse.cz>
27538
27539 PR lto/108330
27540 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
27541 NULL (deleleted value) to a hash_set.
27542
27543 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27544
27545 * config/xtensa/xtensa.md (*splice_bits):
27546 New insn_and_split pattern.
27547
27548 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27549
27550 * config/xtensa/xtensa.cc
27551 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
27552 New helper functions.
27553 (xtensa_set_return_address, xtensa_output_mi_thunk):
27554 Change to use the helper function.
27555 (xtensa_emit_adjust_stack_ptr): Ditto.
27556 And also change to try reusing the content of scratch register
27557 A9 if the register is not modified in the function body.
27558
27559 2023-01-07 LIU Hao <lh_mouse@126.com>
27560
27561 PR middle-end/108300
27562 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
27563 before <windows.h>.
27564 * diagnostic-color.cc: Likewise.
27565 * plugin.cc: Likewise.
27566 * prefix.cc: Likewise.
27567
27568 2023-01-06 Joseph Myers <joseph@codesourcery.com>
27569
27570 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
27571 for handling real integer types.
27572
27573 2023-01-06 Tamar Christina <tamar.christina@arm.com>
27574
27575 Revert:
27576 2022-12-12 Tamar Christina <tamar.christina@arm.com>
27577
27578 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
27579 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
27580 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
27581 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
27582 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
27583 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
27584 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
27585 (aarch64_simd_dupv2hf): New.
27586 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
27587 Add E_V2HFmode.
27588 * config/aarch64/iterators.md (VHSDF_P): New.
27589 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
27590 Vel, q, vp): Add V2HF.
27591 * config/arm/types.md (neon_fp_reduc_add_h): New.
27592
27593 2023-01-06 Martin Liska <mliska@suse.cz>
27594
27595 PR middle-end/107966
27596 * doc/options.texi: Fix Var documentation in internal manual.
27597
27598 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
27599
27600 Revert:
27601 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
27602
27603 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27604 RTL expansion to allow condition (mask) to be shared/reused,
27605 by avoiding overwriting pseudos and adding REG_EQUAL notes.
27606
27607 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
27608
27609 * common.opt: Add -static-libgm2.
27610 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
27611 * doc/gm2.texi: Document static-libgm2.
27612 * gcc.cc (driver_handle_option): Allow static-libgm2.
27613
27614 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
27615
27616 * common/config/i386/i386-common.cc (processor_alias_table):
27617 Use CPU_ZNVER4 for znver4.
27618 * config/i386/i386.md: Add znver4.md.
27619 * config/i386/znver4.md: New.
27620
27621 2023-01-04 Jakub Jelinek <jakub@redhat.com>
27622
27623 PR tree-optimization/108253
27624 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
27625 types.
27626
27627 2023-01-04 Jakub Jelinek <jakub@redhat.com>
27628
27629 PR middle-end/108237
27630 * generic-match-head.cc: Include tree-pass.h.
27631 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
27632 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
27633 resp. PROP_gimple_lvec property set.
27634
27635 2023-01-04 Jakub Jelinek <jakub@redhat.com>
27636
27637 PR sanitizer/108256
27638 * convert.cc (do_narrow): Punt for MULT_EXPR if original
27639 type doesn't wrap around and -fsanitize=signed-integer-overflow
27640 is on.
27641 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
27642
27643 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
27644
27645 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
27646 * common/config/i386/i386-common.cc: Add Emeraldrapids.
27647
27648 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
27649
27650 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
27651 for meteorlake.
27652
27653 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
27654
27655 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
27656 default constructor to initialize it.
27657 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
27658 for last and iterate to handle recursive calls. Delete leftover
27659 candidates at the end.
27660 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
27661 on local clones.
27662 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
27663 gc_candidate bit when a clone is used.
27664
27665 2023-01-03 Florian Weimer <fweimer@redhat.com>
27666
27667 Revert:
27668 2023-01-02 Florian Weimer <fweimer@redhat.com>
27669
27670 * dwarf2cfi.cc (init_return_column_size): Remove.
27671 (init_one_dwarf_reg_size): Adjust.
27672 (generate_dwarf_reg_sizes): New function. Extracted
27673 from expand_builtin_init_dwarf_reg_sizes.
27674 (expand_builtin_init_dwarf_reg_sizes): Call
27675 generate_dwarf_reg_sizes.
27676 * target.def (init_dwarf_reg_sizes_extra): Adjust
27677 hook signature.
27678 * config/msp430/msp430.cc
27679 (msp430_init_dwarf_reg_sizes_extra): Adjust.
27680 * config/rs6000/rs6000.cc
27681 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27682 * doc/tm.texi: Update.
27683
27684 2023-01-03 Florian Weimer <fweimer@redhat.com>
27685
27686 Revert:
27687 2023-01-02 Florian Weimer <fweimer@redhat.com>
27688
27689 * debug.h (dwarf_reg_sizes_constant): Declare.
27690 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27691
27692 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
27693
27694 PR tree-optimization/105043
27695 * doc/extend.texi (Object Size Checking): Split out into two
27696 subsections and mention _FORTIFY_SOURCE.
27697
27698 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
27699
27700 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27701 RTL expansion to allow condition (mask) to be shared/reused,
27702 by avoiding overwriting pseudos and adding REG_EQUAL notes.
27703
27704 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
27705
27706 PR target/108229
27707 * config/i386/i386-features.cc
27708 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
27709 the gain/cost of converting a MEM operand.
27710
27711 2023-01-03 Jakub Jelinek <jakub@redhat.com>
27712
27713 PR middle-end/108264
27714 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
27715 from source which doesn't have scalar integral mode first convert
27716 it to outer_mode.
27717
27718 2023-01-03 Jakub Jelinek <jakub@redhat.com>
27719
27720 PR rtl-optimization/108263
27721 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
27722 asm goto to EXIT.
27723
27724 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
27725
27726 PR target/87832
27727 * config/i386/lujiazui.md (lujiazui_div): New automaton.
27728 (lua_div): New unit.
27729 (lua_idiv_qi): Correct unit in the reservation.
27730 (lua_idiv_qi_load): Ditto.
27731 (lua_idiv_hi): Ditto.
27732 (lua_idiv_hi_load): Ditto.
27733 (lua_idiv_si): Ditto.
27734 (lua_idiv_si_load): Ditto.
27735 (lua_idiv_di): Ditto.
27736 (lua_idiv_di_load): Ditto.
27737 (lua_fdiv_SF): Ditto.
27738 (lua_fdiv_SF_load): Ditto.
27739 (lua_fdiv_DF): Ditto.
27740 (lua_fdiv_DF_load): Ditto.
27741 (lua_fdiv_XF): Ditto.
27742 (lua_fdiv_XF_load): Ditto.
27743 (lua_ssediv_SF): Ditto.
27744 (lua_ssediv_load_SF): Ditto.
27745 (lua_ssediv_V4SF): Ditto.
27746 (lua_ssediv_load_V4SF): Ditto.
27747 (lua_ssediv_V8SF): Ditto.
27748 (lua_ssediv_load_V8SF): Ditto.
27749 (lua_ssediv_SD): Ditto.
27750 (lua_ssediv_load_SD): Ditto.
27751 (lua_ssediv_V2DF): Ditto.
27752 (lua_ssediv_load_V2DF): Ditto.
27753 (lua_ssediv_V4DF): Ditto.
27754 (lua_ssediv_load_V4DF): Ditto.
27755
27756 2023-01-02 Florian Weimer <fweimer@redhat.com>
27757
27758 * debug.h (dwarf_reg_sizes_constant): Declare.
27759 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27760
27761 2023-01-02 Florian Weimer <fweimer@redhat.com>
27762
27763 * dwarf2cfi.cc (init_return_column_size): Remove.
27764 (init_one_dwarf_reg_size): Adjust.
27765 (generate_dwarf_reg_sizes): New function. Extracted
27766 from expand_builtin_init_dwarf_reg_sizes.
27767 (expand_builtin_init_dwarf_reg_sizes): Call
27768 generate_dwarf_reg_sizes.
27769 * target.def (init_dwarf_reg_sizes_extra): Adjust
27770 hook signature.
27771 * config/msp430/msp430.cc
27772 (msp430_init_dwarf_reg_sizes_extra): Adjust.
27773 * config/rs6000/rs6000.cc
27774 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27775 * doc/tm.texi: Update.
27776
27777 2023-01-02 Jakub Jelinek <jakub@redhat.com>
27778
27779 * gcc.cc (process_command): Update copyright notice dates.
27780 * gcov-dump.cc (print_version): Ditto.
27781 * gcov.cc (print_version): Ditto.
27782 * gcov-tool.cc (print_version): Ditto.
27783 * gengtype.cc (create_file): Ditto.
27784 * doc/cpp.texi: Bump @copying's copyright year.
27785 * doc/cppinternals.texi: Ditto.
27786 * doc/gcc.texi: Ditto.
27787 * doc/gccint.texi: Ditto.
27788 * doc/gcov.texi: Ditto.
27789 * doc/install.texi: Ditto.
27790 * doc/invoke.texi: Ditto.
27791
27792 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
27793 Uroš Bizjak <ubizjak@gmail.com>
27794
27795 * config/i386/i386.md (extendditi2): New define_insn.
27796 (define_split): Use DWIH mode iterator to treat new extendditi2
27797 identically to existing extendsidi2_1.
27798 (define_peephole2): Likewise.
27799 (define_peephole2): Likewise.
27800 (define_Split): Likewise.
27801
27802 \f
27803 Copyright (C) 2023 Free Software Foundation, Inc.
27804
27805 Copying and distribution of this file, with or without modification,
27806 are permitted in any medium without royalty provided the copyright
27807 notice and this notice are preserved.