1 2023-06-20 Tamar Christina <tamar.christina@arm.com>
4 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
6 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
8 * config/aarch64/aarch64.md (stack_tie): Hard-code the first
9 register operand to the stack pointer. Require the second register
10 operand to have the number specified in a separate const_int operand.
11 * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
12 (aarch64_allocate_and_probe_stack_space): Use it.
13 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
14 (aarch64_expand_epilogue): Likewise.
16 2023-06-20 Jakub Jelinek <jakub@redhat.com>
19 * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
20 IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
23 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
25 * calls.h (setjmp_call_p): Change return type from int to bool.
26 * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
27 (store_one_arg): Change return type from int to bool
28 and adjust function body accordingly. Change "sibcall_failure"
30 (finalize_must_preallocate): Ditto. Change *must_preallocate pointer
31 argument to bool. Change "partial_seen" variable to bool.
32 (load_register_parameters): Change *sibcall_failure
33 pointer argument to bool.
34 (check_sibcall_argument_overlap_1): Change return type from int to bool
35 and adjust function body accordingly.
36 (check_sibcall_argument_overlap): Ditto. Change
37 "mark_stored_args_map" argument to bool.
38 (emit_call_1): Change "already_popped" variable to bool.
39 (setjmp_call_p): Change return type from int to bool
40 and adjust function body accordingly.
41 (initialize_argument_information): Change *must_preallocate
42 pointer argument to bool.
43 (expand_call): Change "pcc_struct_value", "must_preallocate"
44 and "sibcall_failure" variables to bool.
45 (emit_library_call_value_1): Change "pcc_struct_value"
48 2023-06-20 Martin Jambor <mjambor@suse.cz>
51 * ipa-sra.cc (struct caller_issues): New field there_is_one.
52 (check_for_caller_issues): Set it.
53 (check_all_callers_for_issues): Check it.
55 2023-06-20 Martin Jambor <mjambor@suse.cz>
57 * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
58 (struct ipcp_transformation): Rearrange members according to
59 C++ class coding convention, add m_uid_to_idx,
60 get_param_index and maybe_create_parm_idx_map.
61 * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
62 (compare_uids): Likewise.
63 (ipcp_transformation::maype_create_parm_idx_map): Likewise.
64 * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
65 (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
66 (ipcp_update_vr): Likewise.
67 (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
68 out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
70 2023-06-20 Carl Love <cel@us.ibm.com>
72 * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
73 Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
74 Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
75 Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
76 Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
77 (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
78 CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
79 * config/rs6000/rs6000-builtins.def
80 (__builtin_vsx_scalar_extract_exp_to_vec,
81 __builtin_vsx_scalar_extract_sig_to_vec,
82 __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
83 Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
84 xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
85 * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
86 Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
87 overloaded instance. Update comments.
88 * config/rs6000/rs6000-overload.def
89 (__builtin_vec_scalar_insert_exp): Add new overload definition with
91 (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
92 overloaded definitions.
93 * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
94 (DI_to_TI): New mode attribute.
95 Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
96 Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
97 Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
98 * doc/extend.texi (scalar_extract_exp_to_vec,
99 scalar_extract_sig_to_vec): Add documentation for new builtins.
100 (scalar_insert_exp): Add new overloaded builtin definition.
102 2023-06-20 Li Xu <xuli1@eswincomputing.com>
104 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
105 size of vector mask mode to one rvv register.
107 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
109 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
111 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
113 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
116 2023-06-20 Richard Biener <rguenther@suse.de>
118 * tree-ssa-dse.cc (dse_classify_store): When we found
119 no defs and the basic-block with the original definition
120 ends in __builtin_unreachable[_trap] the store is dead.
122 2023-06-20 Richard Biener <rguenther@suse.de>
124 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
125 keep the virtual SSA form up-to-date.
127 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
129 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
130 New define_insn_and_split.
132 2023-06-20 Tamar Christina <tamar.christina@arm.com>
134 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
136 2023-06-20 Jan Beulich <jbeulich@suse.com>
138 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
139 constraint. Add new AVX512F alternative.
141 2023-06-20 Richard Biener <rguenther@suse.de>
144 * dwarf2out.cc (process_scope_var): Continue processing
145 the decl after setting a parent in case the existing DIE
148 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
150 * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
151 (riscv_arg_has_vector): Simplify.
152 (riscv_pass_in_vector_p): Adjust warning message.
154 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
156 * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
157 (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
158 * config/riscv/riscv.md (riscv_frcsr): New patterns.
159 (riscv_fscsr): Likewise.
161 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
163 PR rtl-optimization/110305
164 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
165 Handle HONOR_SNANS for x + 0.0.
167 2023-06-19 Jan Hubicka <jh@suse.cz>
169 PR tree-optimization/109811
170 PR tree-optimization/109849
171 * passes.def: Add phiprop to early optimization passes.
172 * tree-ssa-phiprop.cc: Allow clonning.
174 2023-06-19 Tamar Christina <tamar.christina@arm.com>
176 * config/aarch64/aarch64.md (arches): Add nosimd.
177 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
180 2023-06-19 Tamar Christina <tamar.christina@arm.com>
181 Omar Tahir <Omar.Tahir2@arm.com>
183 * gensupport.cc (class conlist, add_constraints, add_attributes,
184 skip_spaces, expect_char, preprocess_compact_syntax,
185 parse_section_layout, parse_section, convert_syntax): New.
186 (process_rtx): Check for conversion.
187 * genoutput.cc (process_template): Check for unresolved iterators.
188 (class data): Add compact_syntax_p.
190 * gensupport.h (compact_syntax): New.
191 (hash-set.h): Include.
192 * doc/md.texi: Document it.
194 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
196 * recog.h (check_asm_operands): Change return type from int to bool.
197 (insn_invalid_p): Ditto.
198 (verify_changes): Ditto.
199 (apply_change_group): Ditto.
200 (constrain_operands): Ditto.
201 (constrain_operands_cached): Ditto.
202 (validate_replace_rtx_subexp): Ditto.
203 (validate_replace_rtx): Ditto.
204 (validate_replace_rtx_part): Ditto.
205 (validate_replace_rtx_part_nosimplify): Ditto.
206 (added_clobbers_hard_reg_p): Ditto.
207 (peep2_regno_dead_p): Ditto.
208 (peep2_reg_dead_p): Ditto.
209 (store_data_bypass_p): Ditto.
210 (if_test_bypass_p): Ditto.
211 * rtl.h (split_all_insns_noflow): Change
212 return type from unsigned int to void.
213 * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
214 of generated added_clobbers_hard_reg_p from int to bool and adjust
215 function body accordingly. Change "used" variable type from
217 * recog.cc (check_asm_operands): Change return type
218 from int to bool and adjust function body accordingly.
219 (insn_invalid_p): Ditto. Change "is_asm" variable to bool.
220 (verify_changes): Change return type from int to bool.
221 (apply_change_group): Change return type from int to bool
222 and adjust function body accordingly.
223 (validate_replace_rtx_subexp): Change return type from int to bool.
224 (validate_replace_rtx): Ditto.
225 (validate_replace_rtx_part): Ditto.
226 (validate_replace_rtx_part_nosimplify): Ditto.
227 (constrain_operands_cached): Ditto.
228 (constrain_operands): Ditto. Change "lose" and "win"
229 variables type from int to bool.
230 (split_all_insns_noflow): Change return type from unsigned int
231 to void and adjust function body accordingly.
232 (peep2_regno_dead_p): Change return type from int to bool.
233 (peep2_reg_dead_p): Ditto.
234 (peep2_find_free_register): Change "success"
235 variable type from int to bool
236 (store_data_bypass_p_1): Change return type from int to bool.
237 (store_data_bypass_p): Ditto.
239 2023-06-19 Li Xu <xuli1@eswincomputing.com>
241 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
244 2023-06-19 Pan Li <pan2.li@intel.com>
247 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
249 * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
250 VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
251 VF_ZVE63 and VF_ZVE32.
252 * config/riscv/vector.md
253 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
254 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
255 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
256 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
257 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
258 (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
259 (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
260 (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
261 (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
262 (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
264 2023-06-19 Pan Li <pan2.li@intel.com>
267 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
269 * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
270 VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
271 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
272 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
273 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
274 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
275 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
276 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
277 (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
278 (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
279 (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
280 (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
281 (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
282 (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
284 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
286 * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
287 (gcn_init_libfuncs): Add div and mod functions for all modes.
288 Add placeholders for divmod functions.
289 (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
291 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
293 * tree-vect-generic.cc: Include optabs-libfuncs.h.
294 (get_compute_type): Check optab_libfunc.
295 * tree-vect-stmts.cc: Include optabs-libfuncs.h.
296 (vectorizable_operation): Check optab_libfunc.
298 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
300 * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
301 * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
302 (V_MOV, V_MOV_ALT): Likewise.
303 (scalar_mode, SCALAR_MODE): Add TImode.
304 (vnsi, VnSI, vndi, VnDI): Likewise.
305 (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
306 (mov<mode>, mov<mode>_unspec): Use V_MOV.
307 (*mov<mode>_4reg): New insn.
308 (mov<mode>_exec): New 4reg variant.
309 (mov<mode>_sgprbase): Likewise.
310 (reload_in<mode>, reload_out<mode>): Use V_MOV.
311 (vec_set<mode>): Likewise.
312 (vec_duplicate<mode><exec>): New 4reg variant.
313 (vec_extract<mode><scalar_mode>): Likewise.
314 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
315 (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
316 (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
317 (fold_extract_last_<mode>): Use V_MOV.
318 (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
319 (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
320 (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
321 gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
322 gather<mode>_insn_2offsets<exec>): Use V_MOV.
323 (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
324 scatter<mode>_insn_1offset<exec_scatter>,
325 scatter<mode>_insn_1offset_ds<exec_scatter>,
326 scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
327 (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
328 mask_scatter_store<mode><vnsi>): Likewise.
329 * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
330 (gcn_hard_regno_mode_ok): Likewise.
331 (GEN_VNM): Add TImode support.
332 (USE_TI): New macro. Separate TImode operations from non-TImode ones.
333 (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
334 V8TImode, and V2TImode.
335 (print_operand): Add 'J' and 'K' print codes.
337 2023-06-19 Richard Biener <rguenther@suse.de>
339 PR tree-optimization/110298
340 * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
341 Clear number of iterations info before cleaning up the CFG.
343 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
345 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
346 Simplify vec_concat of lowpart subreg and high part vec_select.
348 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
350 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
352 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
354 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
355 Handle null niters_skip.
357 2023-06-19 Richard Biener <rguenther@suse.de>
359 * config/aarch64/aarch64.cc
360 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
363 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
366 * common/config/avr/avr-common.cc: Remove setting
367 of OPT_fdelete_null_pointer_checks.
368 * config/avr/avr.cc (avr_option_override): Clear
369 flag_delete_null_pointer_checks if zero_address_valid.
370 (avr_addr_space_zero_address_valid): New function.
371 (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
374 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
375 Robin Dapp <rdapp.gcc@gmail.com>
377 * doc/md.texi: Add len_mask{load,store}.
378 * genopinit.cc (main): Ditto.
380 * internal-fn.cc (len_maskload_direct): Ditto.
381 (len_maskstore_direct): Ditto.
382 (expand_call_mem_ref): Ditto.
383 (expand_partial_load_optab_fn): Ditto.
384 (expand_len_maskload_optab_fn): Ditto.
385 (expand_partial_store_optab_fn): Ditto.
386 (expand_len_maskstore_optab_fn): Ditto.
387 (direct_len_maskload_optab_supported_p): Ditto.
388 (direct_len_maskstore_optab_supported_p): Ditto.
389 * internal-fn.def (LEN_MASK_LOAD): Ditto.
390 (LEN_MASK_STORE): Ditto.
391 * optabs.def (OPTAB_CD): Ditto.
393 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
395 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
397 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
399 * config/riscv/autovec.md (<optab><mode>3): Implement binop
401 * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
402 (enum vxrm_field_enum): Rename this...
403 (enum fixed_point_rounding_mode): ...to this.
404 (enum frm_field_enum): Rename this...
405 (enum floating_point_rounding_mode): ...to this.
406 * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
407 * config/riscv/riscv.cc (riscv_const_insns): Clarify const
409 (riscv_libgcc_floating_mode_supported_p): Adjust comment.
410 (riscv_excess_precision): Do not convert to float for ZVFH.
411 * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
413 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
415 * config/riscv/vector-iterators.md: Add VI_QH iterator.
416 * config/riscv/autovec-opt.md
417 (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
418 that includes sign extension.
419 (@pred_extract_first_sextsi<mode>): Dito for SImode.
421 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
423 * config/riscv/autovec.md (vec_set<mode>): Implement.
424 (vec_extract<mode><vel>): Implement.
425 * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
426 (emit_vlmax_slide_insn): Declare.
427 (emit_nonvlmax_slide_tu_insn): Declare.
428 (emit_scalar_move_insn): Export.
429 (emit_nonvlmax_integer_move_insn): Export.
430 * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
431 (emit_nonvlmax_slide_tu_insn): New function.
432 (emit_vlmax_masked_mu_insn): No change.
433 (emit_vlmax_integer_move_insn): Export.
435 2023-06-19 Richard Biener <rguenther@suse.de>
437 * tree-vectorizer.h (enum vect_partial_vector_style): New.
438 (_loop_vec_info::partial_vector_style): Likewise.
439 (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
440 (rgroup_controls::compare_type): Add.
441 (vec_loop_masks): Change from a typedef to auto_vec<>
443 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
444 Adjust. Convert niters_skip to compare_type.
445 (vect_set_loop_condition_partial_vectors_avx512): New function
446 implementing the AVX512 partial vector codegen.
447 (vect_set_loop_condition): Dispatch to the correct
448 vect_set_loop_condition_partial_vectors_* function based on
449 LOOP_VINFO_PARTIAL_VECTORS_STYLE.
450 (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
451 in the original niter type.
452 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
453 partial_vector_style.
454 (can_produce_all_loop_masks_p): Adjust.
455 (vect_verify_full_masking): Produce the rgroup_controls vector
456 here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
457 (vect_verify_full_masking_avx512): New function implementing
458 verification of AVX512 style masking.
459 (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
460 (vect_analyze_loop_2): Also try AVX512 style masking.
462 (vect_estimate_min_profitable_iters): Implement AVX512 style
464 (vect_record_loop_mask): Do not build the rgroup_controls
465 vector here but record masks in a hash-set.
466 (vect_get_loop_mask): Implement AVX512 style mask query,
467 complementing the existing while_ult style.
469 2023-06-19 Richard Biener <rguenther@suse.de>
471 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
473 * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
474 (vectorize_fold_left_reduction): Adjust.
475 (vect_transform_reduction): Likewise.
476 (vectorizable_live_operation): Likewise.
477 * tree-vect-stmts.cc (vectorizable_call): Likewise.
478 (vectorizable_operation): Likewise.
479 (vectorizable_store): Likewise.
480 (vectorizable_load): Likewise.
481 (vectorizable_condition): Likewise.
483 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
486 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
487 Add Optimization option property.
489 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
491 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
492 Add new pattern for the abovementioned case.
494 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
496 * config/xtensa/xtensa.cc
497 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
499 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
501 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
503 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
505 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
507 2023-06-19 liuhongt <hongtao.liu@intel.com>
510 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
512 (sse2_packsswb<mask_name>): .. this, ..
513 (avx2_packsswb<mask_name>): .. this and ..
514 (avx512bw_packsswb<mask_name>): .. this.
515 (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
516 (sse2_packssdw<mask_name>): .. this, ..
517 (avx2_packssdw<mask_name>): .. this and ..
518 (avx512bw_packssdw<mask_name>): .. this.
520 2023-06-19 liuhongt <hongtao.liu@intel.com>
523 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
524 UNSPEC_US_TRUNCATE instead of original us_truncate for
526 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
528 (mmx_packsswb): .. this and ..
529 (mmx_packuswb): .. this.
530 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
532 (s_trunsuffix): Removed code iterator.
533 (any_s_truncate): Ditto.
534 * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
535 UNSPEC_US_TRUNCATE instead of original us_truncate.
536 (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
537 * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
539 2023-06-18 Pan Li <pan2.li@intel.com>
541 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
543 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
545 * rtl.h (*rtx_equal_p_callback_function):
546 Change return type from int to bool.
547 (rtx_equal_p): Ditto.
548 (*hash_rtx_callback_function): Ditto.
549 * rtl.cc (rtx_equal_p): Change return type from int to bool
550 and adjust function body accordingly.
551 * early-remat.cc (scratch_equal): Ditto.
552 * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
553 (hash_with_unspec_callback): Ditto.
555 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
557 * config/arc/arc.md (movqi_insn): Allow certain constants to
558 be stored into memory in the pattern's condition.
559 (movsf_insn): Similarly.
561 2023-06-18 Honza <jh@ryzen3.suse.cz>
563 PR tree-optimization/109849
564 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
565 ES; handle ipa_predicate::not_sra_candidate.
566 (evaluate_properties_for_edge): Pass es to
567 evaluate_conditions_for_known_args.
568 (ipa_fn_summary_t::duplicate): Handle sra candidates.
569 (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
570 (load_or_store_of_ptr_parameter): New function.
571 (points_to_possible_sra_candidate_p): New function.
572 (analyze_function_body): Initialize points_to_possible_sra_candidate;
573 determine sra predicates.
574 (estimate_ipcp_clone_size_and_time): Update call of
575 evaluate_conditions_for_known_args.
576 (remap_edge_params): Update points_to_possible_sra_candidate.
577 (read_ipa_call_summary): Stream points_to_possible_sra_candidate
578 (write_ipa_call_summary): Likewise.
579 * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
580 (dump_condition): Dump it.
581 * ipa-predicate.h (struct inline_param_summary): Add
582 points_to_possible_sra_candidate.
584 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
586 * config/i386/i386-expand.cc (ix86_expand_carry): New helper
587 function for setting the carry flag.
588 (ix86_expand_builtin) <handlecarry>: Use it here.
589 * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
590 * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
591 (usubc<mode>5): Likewise.
593 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
595 * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
596 for the immediate constant shift count.
597 (*concat<mode><dwi>3_2): Likewise.
598 (*concat<mode><dwi>3_3): Likewise.
599 (*concat<mode><dwi>3_4): Likewise.
600 (*concat<mode><dwi>3_5): Likewise.
601 (*concat<mode><dwi>3_6): Likewise.
603 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
605 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
607 * early-remat.cc (remat_candidate_hasher::equal): Update
608 to call rtx_equal_p with rtx_equal_p_callback_function argument.
609 * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
610 (rtx_equal_p): Remove.
611 * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
612 argument with NULL default value.
613 (rtx_equal_p_cb): Remove function declaration.
614 (hash_rtx_cb): Ditto.
615 (hash_rtx): Add hash_rtx_callback_function argument
616 with NULL default value.
617 * sel-sched-ir.cc (free_nop_pool): Update function comment.
618 (skip_unspecs_callback): Ditto.
619 (vinsn_init): Update to call hash_rtx with
620 hash_rtx_callback_function argument.
621 (vinsn_equal_p): Ditto.
623 2023-06-18 yulong <shiyulong@iscas.ac.cn>
625 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
626 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
627 (ADJUST_ALIGNMENT): Ditto.
628 (RVV_TUPLE_PARTIAL_MODES): Ditto.
629 (ADJUST_NUNITS): Ditto.
630 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
632 (vfloat16mf4x3_t): Ditto.
633 (vfloat16mf4x4_t): Ditto.
634 (vfloat16mf4x5_t): Ditto.
635 (vfloat16mf4x6_t): Ditto.
636 (vfloat16mf4x7_t): Ditto.
637 (vfloat16mf4x8_t): Ditto.
638 (vfloat16mf2x2_t): Ditto.
639 (vfloat16mf2x3_t): Ditto.
640 (vfloat16mf2x4_t): Ditto.
641 (vfloat16mf2x5_t): Ditto.
642 (vfloat16mf2x6_t): Ditto.
643 (vfloat16mf2x7_t): Ditto.
644 (vfloat16mf2x8_t): Ditto.
645 (vfloat16m1x2_t): Ditto.
646 (vfloat16m1x3_t): Ditto.
647 (vfloat16m1x4_t): Ditto.
648 (vfloat16m1x5_t): Ditto.
649 (vfloat16m1x6_t): Ditto.
650 (vfloat16m1x7_t): Ditto.
651 (vfloat16m1x8_t): Ditto.
652 (vfloat16m2x2_t): Ditto.
653 (vfloat16m2x3_t): Ditto.
654 (vfloat16m2x4_t): Ditto.
655 (vfloat16m4x2_t): Ditto.
656 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
657 (vfloat16mf4x3_t): Ditto.
658 (vfloat16mf4x4_t): Ditto.
659 (vfloat16mf4x5_t): Ditto.
660 (vfloat16mf4x6_t): Ditto.
661 (vfloat16mf4x7_t): Ditto.
662 (vfloat16mf4x8_t): Ditto.
663 (vfloat16mf2x2_t): Ditto.
664 (vfloat16mf2x3_t): Ditto.
665 (vfloat16mf2x4_t): Ditto.
666 (vfloat16mf2x5_t): Ditto.
667 (vfloat16mf2x6_t): Ditto.
668 (vfloat16mf2x7_t): Ditto.
669 (vfloat16mf2x8_t): Ditto.
670 (vfloat16m1x2_t): Ditto.
671 (vfloat16m1x3_t): Ditto.
672 (vfloat16m1x4_t): Ditto.
673 (vfloat16m1x5_t): Ditto.
674 (vfloat16m1x6_t): Ditto.
675 (vfloat16m1x7_t): Ditto.
676 (vfloat16m1x8_t): Ditto.
677 (vfloat16m2x2_t): Ditto.
678 (vfloat16m2x3_t): Ditto.
679 (vfloat16m2x4_t): Ditto.
680 (vfloat16m4x2_t): Ditto.
681 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
682 * config/riscv/riscv.md: New.
683 * config/riscv/vector-iterators.md: New.
685 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
687 * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
688 CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
689 Generalize special case for converting TImode to V1TImode to handle
690 all 128-bit vector conversions.
692 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
694 * gcc-ar.cc (main): Refactor to slightly reduce code
695 duplication. Avoid unnecessary elements in nargv.
697 2023-06-16 Pan Li <pan2.li@intel.com>
700 * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
701 integer reduction expand.
702 * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
703 and the LMUL1 attr respectively.
704 * config/riscv/vector.md
705 (@pred_reduc_<reduc><mode><vlmul1>): Removed.
706 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
707 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
708 (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
709 (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
710 (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
711 (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
713 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
716 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
718 2023-06-16 Jakub Jelinek <jakub@redhat.com>
721 * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
722 BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
723 BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
725 * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
726 BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
727 * builtins.cc (fold_builtin_addc_subc): New function.
728 (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
729 * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
731 2023-06-16 Jakub Jelinek <jakub@redhat.com>
733 PR tree-optimization/110271
734 * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
735 <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
736 instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
738 2023-06-16 Martin Jambor <mjambor@suse.cz>
740 * configure: Regenerate.
742 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
743 Uros Bizjak <ubizjak@gmail.com>
746 * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
747 define_insn_and_split combine *add<dwi>3_doubleword with
748 a *concat<mode><dwi>3 for more efficient lowering after reload.
750 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
752 * ira-lives.cc: Include except.h.
753 (process_bb_node_lives): Ignore conflicts from cleanup exceptions
754 when the pseudo does not live at the exception landing pad.
756 2023-06-16 Alex Coplan <alex.coplan@arm.com>
758 * doc/invoke.texi: Document -Welaborated-enum-base.
760 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
762 * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
763 (ushrn2_n): ... This.
764 (sqshrn2_n): Rename builtins to...
765 (ssqshrn2_n): ... This.
766 (uqshrn2_n): Rename builtins to...
767 (uqushrn2_n): ... This.
768 * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
769 (vqshrn_high_n_s32): Likewise.
770 (vqshrn_high_n_s64): Likewise.
771 (vqshrn_high_n_u16): Likewise.
772 (vqshrn_high_n_u32): Likewise.
773 (vqshrn_high_n_u64): Likewise.
774 (vshrn_high_n_s16): Likewise.
775 (vshrn_high_n_s32): Likewise.
776 (vshrn_high_n_s64): Likewise.
777 (vshrn_high_n_u16): Likewise.
778 (vshrn_high_n_u32): Likewise.
779 (vshrn_high_n_u64): Likewise.
780 * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
782 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
783 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
784 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
785 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
786 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
787 (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
788 (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
789 Update expander for the above.
791 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
793 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
795 (rshrn2): Rename builtins to...
796 (rshrn2_n): ... This.
797 * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
798 (vrshrn_high_n_s32): Likewise.
799 (vrshrn_high_n_s64): Likewise.
800 (vrshrn_high_n_u16): Likewise.
801 (vrshrn_high_n_u32): Likewise.
802 (vrshrn_high_n_u64): Likewise.
803 (vshrn_high_n_s16): Likewise.
804 (vshrn_high_n_s32): Likewise.
805 (vshrn_high_n_s64): Likewise.
806 (vshrn_high_n_u16): Likewise.
807 (vshrn_high_n_u32): Likewise.
808 (vshrn_high_n_u64): Likewise.
809 * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
811 (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
812 (aarch64_shrn2<mode>_insn_le): Likewise.
813 (aarch64_shrn2<mode>_insn_be): Likewise.
814 (aarch64_shrn2<mode>): Likewise.
815 (aarch64_rshrn2<mode>_insn_le): Likewise.
816 (aarch64_rshrn2<mode>_insn_be): Likewise.
817 (aarch64_rshrn2<mode>): Likewise.
818 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
819 (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
820 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
821 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
822 (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
823 (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
824 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
825 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
826 (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
827 (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
828 (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
829 (aarch64_sqshrun2_n<mode>): New define_expand.
830 (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
831 (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
832 (aarch64_sqrshrun2_n<mode>): New define_expand.
833 * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
834 UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
835 Delete unspec values.
836 (VQSHRN_N): Delete int iterator.
838 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
840 * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
841 * config/aarch64/aarch64-simd.md
842 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
843 (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
844 Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
845 * config/aarch64/iterators.md (shrn_s): New code attribute.
847 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
849 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
851 (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes.
852 (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
853 (aarch64_sqrshrun_n<mode>_insn): Likewise.
854 (aarch64_sqshrun_n<mode>_insn): Likewise.
855 (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
856 (aarch64_sqshrun_n<mode>): Likewise.
857 (aarch64_sqrshrun_n<mode>): Likewise.
858 * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
860 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
862 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
864 (rshrn): Rename builtins to...
866 * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
867 (vshrn_n_s32): Likewise.
868 (vshrn_n_s64): Likewise.
869 (vshrn_n_u16): Likewise.
870 (vshrn_n_u32): Likewise.
871 (vshrn_n_u64): Likewise.
872 (vrshrn_n_s16): Likewise.
873 (vrshrn_n_s32): Likewise.
874 (vrshrn_n_s64): Likewise.
875 (vrshrn_n_u16): Likewise.
876 (vrshrn_n_u32): Likewise.
877 (vrshrn_n_u64): Likewise.
878 * config/aarch64/aarch64-simd.md
879 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
880 (aarch64_shrn<mode>): Likewise.
881 (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
882 (aarch64_rshrn<mode>): Likewise.
883 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
884 (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
885 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
886 (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
887 (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
888 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
889 (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
890 (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
891 (aarch64_sqshrun_n<mode>): Likewise.
892 (aarch64_sqrshrun_n<mode>): Likewise.
893 * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
894 (TRUNCEXTEND): New code attribute.
895 (TRUNC_SHIFT): Likewise.
897 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
900 2023-06-16 Pan Li <pan2.li@intel.com>
902 * config/riscv/riscv-vsetvl.cc
903 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
905 2023-06-16 Richard Biener <rguenther@suse.de>
907 PR tree-optimization/110278
908 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
909 (x != (typeof x)(x == 0) -> true): Likewise.
911 2023-06-16 Pali Rohár <pali@kernel.org>
913 * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
914 (REAL_LIBGCC_SPEC): New define.
915 * config/i386/mingw.opt: Add mcrtdll=
916 * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
917 (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
918 (STARTFILE_SPEC): Adjust for -mcrtdll=.
919 * doc/invoke.texi: Add mcrtdll= documentation.
921 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
923 * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
924 (mips_handle_code_readable_attr):New static function.
925 (mips_get_code_readable_attr):New static enum function.
926 (mips_set_current_function):Set the code_readable mode.
927 (mips_option_override):Same as above.
928 * doc/extend.texi:Document code_readable.
930 2023-06-16 Richard Biener <rguenther@suse.de>
932 PR tree-optimization/110269
933 * fold-const.cc (fold_binary_loc): Merge x != 0 folding
934 with tree_expr_nonzero_p ...
935 * match.pd (cmp (convert? addr@0) integer_zerop): With this
938 2023-06-15 Marek Polacek <polacek@redhat.com>
940 * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie.
941 Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to
942 ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie.
943 * configure.ac (--enable-host-shared): Don't set PICFLAG here.
944 (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this
946 * configure: Regenerate.
947 * doc/install.texi: Document --enable-host-pie.
949 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
951 * regcprop.cc (maybe_mode_change): Enable stack pointer
954 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
956 PR tree-optimization/110266
957 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
959 (adjust_realpart_expr): Ditto.
961 2023-06-15 Jan Beulich <jbeulich@suse.com>
963 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
966 2023-06-15 Jan Beulich <jbeulich@suse.com>
968 * config/i386/constraints.md: Mention k and r for B.
970 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
971 Andrew Pinski <apinski@marvell.com>
974 * config/loongarch/loongarch.md: Modify the register constraints for template
975 "jumptable" and "indirect_jump" from "r" to "e".
977 2023-06-15 Xi Ruoyao <xry111@xry111.site>
979 * config/loongarch/loongarch-tune.h (loongarch_align): New
981 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
983 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
985 * config/loongarch/loongarch.cc
986 (loongarch_option_override_internal): Set the value of
987 -falign-functions= if -falign-functions is enabled but no value
988 is given. Likewise for -falign-labels=.
990 2023-06-15 Jakub Jelinek <jakub@redhat.com>
993 * internal-fn.def (UADDC, USUBC): New internal functions.
994 * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
995 (commutative_ternary_fn_p): Return true also for IFN_UADDC.
996 * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
997 * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
998 match_uaddc_usubc): New functions.
999 (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
1000 for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
1001 other optimizations have been successful for those.
1002 * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
1003 * fold-const-call.cc (fold_const_call): Likewise.
1004 * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
1005 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
1006 * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
1008 * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
1009 define_expand patterns.
1010 (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
1011 into NOTE_INSN_DELETED note rather than nop instruction.
1012 (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
1015 2023-06-15 Jakub Jelinek <jakub@redhat.com>
1018 * config/i386/i386.md (subborrow<mode>): Add alternative with
1019 memory destination and add for it define_peephole2
1020 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
1021 destination in these patterns.
1023 2023-06-15 Jakub Jelinek <jakub@redhat.com>
1026 * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
1027 addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
1028 define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
1029 using memory destination in these patterns.
1031 2023-06-15 Jakub Jelinek <jakub@redhat.com>
1033 * gimple-fold.cc (gimple_fold_call): Move handling of arg0
1034 as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
1035 and .{ADD,SUB,MUL}_OVERFLOW calls from here...
1036 * fold-const-call.cc (fold_const_call): ... here.
1038 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
1040 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
1041 Rename to <su>abd<mode>3.
1042 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
1045 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
1047 * doc/md.texi (sabd, uabd): Document them.
1048 * internal-fn.def (ABD): Use new optab.
1049 * optabs.def (sabd_optab, uabd_optab): New optabs,
1050 * tree-vect-patterns.cc (vect_recog_absolute_difference):
1051 Recognize the following idiom abs (a - b).
1052 (vect_recog_sad_pattern): Refactor to use
1053 vect_recog_absolute_difference.
1054 (vect_recog_abd_pattern): Use patterns found by
1055 vect_recog_absolute_difference to build a new ABD
1058 2023-06-15 chenxiaolong <chenxl04200420@163.com>
1060 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
1061 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
1063 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1065 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
1066 (expand_vec_perm_const_1): Add merge optmization.
1068 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
1071 * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
1072 (riscv_pass_by_reference): Return true for vector mode
1074 2023-06-15 Pan Li <pan2.li@intel.com>
1076 * config/riscv/autovec-opt.md: Align the predictor sytle.
1077 * config/riscv/autovec.md: Ditto.
1079 2023-06-15 Pan Li <pan2.li@intel.com>
1081 * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
1082 Take elen instead of scalar BITS_PER_WORD.
1083 (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
1084 instead of scaler BITS_PER_WORD.
1086 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1088 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
1090 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1092 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
1093 Fix signed comparison warning in loop from npats to enelts.
1095 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
1097 * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
1098 to offloading compilation.
1099 * config/gcn/mkoffload.cc (main): Adjust.
1100 * config/nvptx/mkoffload.cc (main): Likewise.
1101 * doc/invoke.texi (foffload-options): Update example.
1103 2023-06-14 liuhongt <hongtao.liu@intel.com>
1106 * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
1107 for alternative 2 since there's no evex version for vpcmpeqd
1110 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
1112 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
1114 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
1116 * config/sh/divtab.cc: Remove.
1118 2023-06-13 Jakub Jelinek <jakub@redhat.com>
1120 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
1121 superfluous spaces around \t for vpcmpeqd.
1123 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
1125 * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
1126 clearing vectors with only a single element. Set CLEARED if the
1127 vector was initialized to zero.
1129 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
1131 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
1134 (TUPLE_ENTRY): Undef.
1136 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1138 * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
1139 (shuffle_generic_patterns): Ditto.
1140 (expand_vec_perm_const_1): Ditto.
1142 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1144 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
1145 (shuffle_decompress_patterns): Ditto.
1147 2023-06-13 Richard Biener <rguenther@suse.de>
1149 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
1151 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
1152 Kito Cheng <kito.cheng@sifive.com>
1154 * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
1155 warning flag if func is not builtin
1156 * config/riscv/riscv.cc
1157 (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
1158 (riscv_arg_has_vector): Determine whether the arg is vector type.
1159 (riscv_pass_in_vector_p): Check the vector type param is passed by value.
1160 (riscv_init_cumulative_args): The same as header.
1161 (riscv_get_arg_info): Add the checking.
1162 (riscv_function_value): Check the func return and set warning flag
1163 * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
1164 determine whether warning psabi or not.
1166 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1168 * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
1169 Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
1170 * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
1171 * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
1173 (arm_output_load_tpidr): Define.
1174 * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
1175 * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
1177 (reload_tp_hard): Likewise.
1178 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
1180 * doc/invoke.texi (Arm Options, mtp): Document new values.
1182 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1185 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
1186 AARCH64_TPIDRRO_EL0 value.
1187 * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
1188 * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
1189 tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
1190 * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
1192 2023-06-13 Alexandre Oliva <oliva@adacore.com>
1194 * range-op-float.cc (frange_nextafter): Drop inline.
1195 (frelop_early_resolve): Add static.
1196 (frange_float): Likewise.
1198 2023-06-13 Richard Biener <rguenther@suse.de>
1200 PR middle-end/110232
1201 * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
1202 to check whether the buffer covers the whole vector.
1204 2023-06-13 Richard Biener <rguenther@suse.de>
1206 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
1207 .MASK_LOAD and friends set the size of the access to unknown.
1209 2023-06-13 Tejas Belagod <tbelagod@arm.com>
1212 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
1213 calls that have a constant input predicate vector.
1214 (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
1215 (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
1216 (svlast_impl::vect_all_same): Check if all vector elements are equal.
1218 2023-06-13 Andi Kleen <ak@linux.intel.com>
1220 * config/i386/gcc-auto-profile: Regenerate.
1222 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1224 * config/riscv/vector-iterators.md: Fix requirement.
1226 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1228 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
1229 (shuffle_decompress_patterns): New function.
1230 (expand_vec_perm_const_1): Add decompress optimization.
1232 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
1234 PR rtl-optimization/101188
1235 * postreload.cc (reload_cse_move2add_invalidate): New function,
1237 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
1239 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1241 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
1242 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
1243 and if maxv == 1, use constant element for duplicating into register.
1245 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
1247 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
1248 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
1249 (gimplify_adjust_omp_clauses): Change
1250 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
1251 GOMP_MAP_FORCE_PRESENT.
1252 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
1253 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
1254 to/from clauses with present modifier.
1256 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1258 PR tree-optimization/110205
1259 * range-op-float.cc (range_operator::fold_range): Add default FII
1261 * range-op-mixed.h (class operator_gt): Add missing final overrides.
1262 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
1263 (operator_lshift ::update_bitmask): Add final override.
1264 (operator_rshift ::update_bitmask): Add final override.
1265 * range-op.h (range_operator::fold_range): Add FII prototype.
1267 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1269 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
1270 Use range_op_handler directly.
1271 * range-op.cc (range_op_handler::range_op_handler): Unsigned
1272 param instead of tree-code.
1273 (ptr_op_widen_plus_signed): Delete.
1274 (ptr_op_widen_plus_unsigned): Delete.
1275 (ptr_op_widen_mult_signed): Delete.
1276 (ptr_op_widen_mult_unsigned): Delete.
1277 (range_op_table::initialize_integral_ops): Add new opcodes.
1278 * range-op.h (range_op_handler): Use unsigned.
1279 (OP_WIDEN_MULT_SIGNED): New.
1280 (OP_WIDEN_MULT_UNSIGNED): New.
1281 (OP_WIDEN_PLUS_SIGNED): New.
1282 (OP_WIDEN_PLUS_UNSIGNED): New.
1283 (RANGE_OP_TABLE_SIZE): New.
1284 (range_op_table::operator []): Use unsigned.
1285 (range_op_table::set): Use unsigned.
1286 (m_range_tree): Make unsigned.
1287 (ptr_op_widen_mult_signed): Remove.
1288 (ptr_op_widen_mult_unsigned): Remove.
1289 (ptr_op_widen_plus_signed): Remove.
1290 (ptr_op_widen_plus_unsigned): Remove.
1292 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1294 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
1295 manually as there is no access to the default operator.
1296 (cfn_copysign::fold_range): Don't check for validity.
1297 (cfn_ubsan::fold_range): Ditto.
1298 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
1299 * range-op.cc (default_operator): New.
1300 (range_op_handler::range_op_handler): Use default_operator
1302 (range_op_handler::operator bool): Move from header, compare
1303 against default operator.
1304 (range_op_handler::range_op): New.
1305 * range-op.h (range_op_handler::operator bool): Move.
1307 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1309 * range-op.cc (unified_table): Delete.
1310 (range_op_table operator_table): Instantiate.
1311 (range_op_table::range_op_table): Rename from unified_table.
1312 (range_op_handler::range_op_handler): Use range_op_table.
1313 * range-op.h (range_op_table::operator []): Inline.
1314 (range_op_table::set): Inline.
1316 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1318 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
1320 * gimple-range-op.cc (get_code): Rename from get_code_and_type
1322 (gimple_range_op_handler::supported_p): No need for type.
1323 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
1324 (cfn_copysign::fold_range): Ditto.
1325 (cfn_ubsan::fold_range): Ditto.
1326 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
1327 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
1328 * range-op-float.cc (operator_plus::op1_range): Ditto.
1329 (operator_mult::op1_range): Ditto.
1330 (range_op_float_tests): Ditto.
1331 * range-op.cc (get_op_handler): Remove.
1332 (range_op_handler::set_op_handler): Remove.
1333 (operator_plus::op1_range): No need for type.
1334 (operator_minus::op1_range): Ditto.
1335 (operator_mult::op1_range): Ditto.
1336 (operator_exact_divide::op1_range): Ditto.
1337 (operator_cast::op1_range): Ditto.
1338 (perator_bitwise_not::fold_range): Ditto.
1339 (operator_negate::fold_range): Ditto.
1340 * range-op.h (range_op_handler::range_op_handler): Remove type param.
1341 (range_cast): No need for type.
1342 (range_op_table::operator[]): Check for enum_code >= 0.
1343 * tree-data-ref.cc (compute_distributive_range): No need for type.
1344 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
1345 * value-query.cc (range_query::get_tree_range): Ditto.
1346 * value-relation.cc (relation_oracle::validate_relation): Ditto.
1347 * vr-values.cc (range_of_var_in_loop): Ditto.
1348 (simplify_using_ranges::fold_cond_with_ops): Ditto.
1350 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1352 * range-op-mixed.h (operator_max): Remove final.
1353 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
1354 (pointer_table::pointer_table): Remove.
1355 (class hybrid_max_operator): New.
1356 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
1357 * range-op.cc (pointer_tree_table): Remove.
1358 (unified_table::unified_table): Comment out MAX_EXPR.
1359 (get_op_handler): Remove check of pointer table.
1360 * range-op.h (class pointer_table): Remove.
1362 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1364 * range-op-mixed.h (operator_min): Remove final.
1365 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
1366 (class hybrid_min_operator): New.
1367 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
1368 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
1370 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1372 * range-op-mixed.h (operator_bitwise_or): Remove final.
1373 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
1374 (class hybrid_or_operator): New.
1375 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
1376 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
1378 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1380 * range-op-mixed.h (operator_bitwise_and): Remove final.
1381 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
1382 (class hybrid_and_operator): New.
1383 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
1384 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
1386 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1388 * Makefile.in (OBJS): Add range-op-ptr.o.
1389 * range-op-mixed.h (update_known_bitmask): Move prototype here.
1390 (minus_op1_op2_relation_effect): Move prototype here.
1391 (wi_includes_zero_p): Move function to here.
1393 * range-op.cc (update_known_bitmask): Remove static.
1394 (wi_includes_zero_p): Move to header.
1395 (wi_zero_p): Move to header.
1396 (minus_op1_op2_relation_effect): Remove static.
1397 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
1398 (pointer_plus_operator): Ditto.
1399 (pointer_min_max_operator): Ditto.
1400 (pointer_and_operator): Ditto.
1401 (pointer_or_operator): Ditto.
1402 (pointer_table): Ditto.
1403 (range_op_table::initialize_pointer_ops): Ditto.
1404 * range-op-ptr.cc: New.
1406 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1408 * range-op-mixed.h (class operator_max): Move from...
1409 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
1410 (get_op_handler): Remove the integral table.
1411 (class operator_max): Move from here.
1412 (integral_table::integral_table): Delete.
1413 * range-op.h (class integral_table): Delete.
1415 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1417 * range-op-mixed.h (class operator_min): Move from...
1418 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
1419 (class operator_min): Move from here.
1420 (integral_table::integral_table): Remove MIN_EXPR.
1422 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1424 * range-op-mixed.h (class operator_bitwise_or): Move from...
1425 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
1426 (class operator_bitwise_or): Move from here.
1427 (integral_table::integral_table): Remove BIT_IOR_EXPR.
1429 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1431 * range-op-mixed.h (class operator_bitwise_and): Move from...
1432 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
1433 (get_op_handler): Check for a pointer table entry first.
1434 (class operator_bitwise_and): Move from here.
1435 (integral_table::integral_table): Remove BIT_AND_EXPR.
1437 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1439 * range-op-mixed.h (class operator_bitwise_xor): Move from...
1440 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
1441 (class operator_bitwise_xor): Move from here.
1442 (integral_table::integral_table): Remove BIT_XOR_EXPR.
1443 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
1445 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1447 * range-op-mixed.h (class operator_bitwise_not): Move from...
1448 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
1449 (class operator_bitwise_not): Move from here.
1450 (integral_table::integral_table): Remove BIT_NOT_EXPR.
1451 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
1453 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1455 * range-op-mixed.h (class operator_addr_expr): Move from...
1456 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
1457 (class operator_addr_expr): Move from here.
1458 (integral_table::integral_table): Remove ADDR_EXPR.
1459 (pointer_table::pointer_table): Remove ADDR_EXPR.
1461 2023-06-12 Pan Li <pan2.li@intel.com>
1463 * config/riscv/riscv-vector-builtins-types.def
1464 (vfloat16m1_t): Add type to lmul1 ops.
1465 (vfloat16m2_t): Likewise.
1466 (vfloat16m4_t): Likewise.
1468 2023-06-12 Richard Biener <rguenther@suse.de>
1470 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
1471 .MASK_STORE and friend set the size of the access to
1474 2023-06-12 Tamar Christina <tamar.christina@arm.com>
1476 * config.in: Regenerate.
1477 * configure: Regenerate.
1478 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
1480 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1482 * config/riscv/autovec-opt.md
1483 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
1484 (*<any_shiftrt:optab>trunc<mode>): Ditto.
1485 * config/riscv/autovec.md (<optab><mode>3): Change to
1486 define_insn_and_split.
1487 (v<optab><mode>3): Ditto.
1488 (trunc<mode><v_double_trunc>2): Ditto.
1490 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1492 * simplify-rtx.cc (simplify_const_unary_operation):
1493 Handle US_TRUNCATE, SS_TRUNCATE.
1495 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
1498 * doc/gm2.texi (Standard procedures): Fix Next link.
1500 2023-06-12 Tamar Christina <tamar.christina@arm.com>
1502 * config.in: Regenerate.
1504 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
1506 PR middle-end/110142
1507 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
1508 subtype to vect_widened_op_tree and remove subtype parameter, also
1509 remove superfluous overloaded function definition.
1510 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
1511 to call to vect_recog_widen_op_pattern.
1512 (vect_recog_widen_minus_pattern): Likewise.
1514 2023-06-12 liuhongt <hongtao.liu@intel.com>
1516 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
1517 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
1518 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
1519 (vec_unpacks_lo_<mode>): Ditto.
1520 (vec_unpacks_hi_<mode>): Ditto.
1521 (sse_movlhps_<mode>): New define_insn.
1522 (ssse3_palignr<mode>_perm): Extend to V_128H.
1523 (V_128H): New mode iterator.
1524 (ssepackPHmode): New mode attribute.
1525 (vunpck_extract_mode): Ditto.
1526 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
1527 (vpckfloat_temp_mode): Ditto.
1528 (vpckfloat_op_mode): Ditto.
1529 (vunpckfixt_mode): Extend to VxHF.
1530 (vunpckfixt_model): Ditto.
1531 (vunpckfixt_extract_mode): Ditto.
1533 2023-06-12 Richard Biener <rguenther@suse.de>
1535 PR middle-end/110200
1536 * genmatch.cc (expr::gen_transform): Put braces around
1537 the if arm for the (convert ...) short-cut.
1539 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
1542 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
1543 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
1545 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
1548 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
1549 floating constant itself for real_to_target call.
1551 2023-06-12 Pan Li <pan2.li@intel.com>
1553 * config/riscv/riscv-vector-builtins-types.def
1554 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
1555 (vfloat16mf2_t): Ditto.
1556 (vfloat16m1_t): Ditto.
1557 (vfloat16m2_t): Ditto.
1558 (vfloat16m4_t): Ditto.
1560 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
1562 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
1563 Do not require a stack frame when debugging is enabled for AIX.
1565 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
1567 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
1568 Remove attribute values.
1569 (insv_notbit): New post-reload insn.
1570 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
1571 (*insv.not-bit.0_split, *insv.not-bit.7_split)
1572 (*insv.xor-extract_split): Split to insv_notbit.
1573 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
1574 (*insv.xor-extract): Remove post-reload insns.
1575 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
1576 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
1577 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
1578 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
1580 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
1583 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
1584 (MSB, SIZE): New mode attributes.
1585 (any_shift): New code iterator.
1586 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
1587 (*lshr<mode>3_const_split): Add constraint alternative for
1588 the case of shift-offset = MSB. Ditch "length" attribute.
1589 (extzv<mode): New. replaces extzv. Adjust following patterns.
1590 Use avr_out_extr, avr_out_extr_not to print asm.
1591 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
1592 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
1593 * config/avr/constraints.md (C15, C23, C31, Yil): New
1594 * config/avr/predicates.md (reg_or_low_io_operand)
1595 (const7_operand, reg_or_low_io_operand)
1596 (const15_operand, const_0_to_15_operand)
1597 (const23_operand, const_0_to_23_operand)
1598 (const31_operand, const_0_to_31_operand): New.
1599 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
1600 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
1601 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
1602 MSB case to new insn constraint "r" for operands[1].
1603 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
1605 (avr_rtx_costs_1): Adjust cost for a new pattern.
1607 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1609 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
1610 (vector_insn_info::parse_insn): Add rtx_insn parse.
1611 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
1612 (get_first_vsetvl): New function.
1613 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
1614 (pass_vsetvl::cleanup_insns): Remove it.
1615 (pass_vsetvl::ssa_post_optimization): New function.
1616 (has_no_uses): Ditto.
1617 (pass_vsetvl::propagate_avl): Remove it.
1618 (pass_vsetvl::df_post_optimization): New function.
1619 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
1620 * config/riscv/riscv-vsetvl.h: Adapt declaration.
1622 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
1624 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
1625 (ipcp_vr_lattice::print): Call dump method.
1626 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
1628 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
1629 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
1631 (initialize_node_lattices): Pass type when appropriate.
1632 (ipa_vr_operation_and_type_effects): Make type agnostic.
1633 (ipa_value_range_from_jfunc): Same.
1634 (propagate_vr_across_jump_function): Same.
1635 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
1636 (evaluate_properties_for_edge): Same.
1637 * ipa-prop.cc (ipa_vr::get_vrange): Same.
1638 (ipcp_update_vr): Same.
1639 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
1640 (ipa_range_set_and_normalize): Same.
1642 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
1646 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
1647 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
1648 (avr_pass_data_ifelse): New pass_data for it.
1649 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
1650 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
1651 (avr_out_cmp_ext): New functions.
1652 (compare_condtition): Make sure REG_CC dies in the branch insn.
1653 (avr_rtx_costs_1): Add computation of cbranch costs.
1654 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
1655 [ADJUST_LEN_CMP_SEXT]Handle them.
1656 (TARGET_CANONICALIZE_COMPARISON): New define.
1657 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
1658 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
1659 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
1660 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
1661 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
1662 (avr_out_cmp_zext): New Protos
1663 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
1664 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
1665 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
1666 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
1667 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
1668 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
1669 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
1670 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
1671 (adjust_len) [add_set_ZN, cmp_zext]: New.
1672 (QIPSI): New mode iterator.
1673 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
1674 (gelt): New code iterator.
1675 (gelt_eqne): New code attribute.
1676 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
1677 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
1678 (*cmpqi_sign_extend): Remove insns.
1679 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
1680 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
1681 * config/avr/predicates.md (scratch_or_d_register_operand): New.
1682 * config/avr/constraints.md (Yxx): New constraint.
1684 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1686 * config/riscv/autovec.md (select_vl<mode>): New pattern.
1687 * config/riscv/riscv-protos.h (expand_select_vl): New function.
1688 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
1690 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1692 * range-op-float.cc (foperator_mult_div_base): Delete.
1693 (foperator_mult_div_base::find_range): Make static local function.
1694 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
1695 (operator_mult::op1_range): Rename from foperator_mult.
1696 (operator_mult::op2_range): Ditto.
1697 (operator_mult::rv_fold): Ditto.
1698 (float_table::float_table): Remove MULT_EXPR.
1699 (class foperator_div): Inherit from range_operator.
1700 (float_table::float_table): Delete.
1701 * range-op-mixed.h (class operator_mult): Combined from integer
1703 * range-op.cc (float_tree_table): Delete.
1704 (op_mult): New object.
1705 (unified_table::unified_table): Add MULT_EXPR.
1706 (get_op_handler): Do not check float table any longer.
1707 (class cross_product_operator): Move to range-op-mixed.h.
1708 (class operator_mult): Move to range-op-mixed.h.
1709 (integral_table::integral_table): Remove MULT_EXPR.
1710 (pointer_table::pointer_table): Remove MULT_EXPR.
1711 * range-op.h (float_table): Remove.
1713 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1715 * range-op-float.cc (foperator_negate): Remove. Move prototypes
1717 (operator_negate::fold_range): Rename from foperator_negate.
1718 (operator_negate::op1_range): Ditto.
1719 (float_table::float_table): Remove NEGATE_EXPR.
1720 * range-op-mixed.h (class operator_negate): Combined from integer
1722 * range-op.cc (op_negate): New object.
1723 (unified_table::unified_table): Add NEGATE_EXPR.
1724 (class operator_negate): Move to range-op-mixed.h.
1725 (integral_table::integral_table): Remove NEGATE_EXPR.
1726 (pointer_table::pointer_table): Remove NEGATE_EXPR.
1728 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1730 * range-op-float.cc (foperator_minus): Remove. Move prototypes
1732 (operator_minus::fold_range): Rename from foperator_minus.
1733 (operator_minus::op1_range): Ditto.
1734 (operator_minus::op2_range): Ditto.
1735 (operator_minus::rv_fold): Ditto.
1736 (float_table::float_table): Remove MINUS_EXPR.
1737 * range-op-mixed.h (class operator_minus): Combined from integer
1739 * range-op.cc (op_minus): New object.
1740 (unified_table::unified_table): Add MINUS_EXPR.
1741 (class operator_minus): Move to range-op-mixed.h.
1742 (integral_table::integral_table): Remove MINUS_EXPR.
1743 (pointer_table::pointer_table): Remove MINUS_EXPR.
1745 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1747 * range-op-float.cc (foperator_abs): Remove. Move prototypes
1749 (operator_abs::fold_range): Rename from foperator_abs.
1750 (operator_abs::op1_range): Ditto.
1751 (float_table::float_table): Remove ABS_EXPR.
1752 * range-op-mixed.h (class operator_abs): Combined from integer
1754 * range-op.cc (op_abs): New object.
1755 (unified_table::unified_table): Add ABS_EXPR.
1756 (class operator_abs): Move to range-op-mixed.h.
1757 (integral_table::integral_table): Remove ABS_EXPR.
1758 (pointer_table::pointer_table): Remove ABS_EXPR.
1760 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1762 * range-op-float.cc (foperator_plus): Remove. Move prototypes
1764 (operator_plus::fold_range): Rename from foperator_plus.
1765 (operator_plus::op1_range): Ditto.
1766 (operator_plus::op2_range): Ditto.
1767 (operator_plus::rv_fold): Ditto.
1768 (float_table::float_table): Remove PLUS_EXPR.
1769 * range-op-mixed.h (class operator_plus): Combined from integer
1771 * range-op.cc (op_plus): New object.
1772 (unified_table::unified_table): Add PLUS_EXPR.
1773 (class operator_plus): Move to range-op-mixed.h.
1774 (integral_table::integral_table): Remove PLUS_EXPR.
1775 (pointer_table::pointer_table): Remove PLUS_EXPR.
1777 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1779 * range-op-mixed.h (class operator_cast): Combined from integer
1781 * range-op.cc (op_cast): New object.
1782 (unified_table::unified_table): Add op_cast
1783 (class operator_cast): Move to range-op-mixed.h.
1784 (integral_table::integral_table): Remove op_cast
1785 (pointer_table::pointer_table): Remove op_cast.
1787 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1789 * range-op-float.cc (operator_cst::fold_range): New.
1790 * range-op-mixed.h (class operator_cst): Move from integer file.
1791 * range-op.cc (op_cst): New object.
1792 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
1793 (class operator_cst): Move to range-op-mixed.h.
1794 (integral_table::integral_table): Remove op_cst.
1795 (pointer_table::pointer_table): Remove op_cst.
1797 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1799 * range-op-float.cc (foperator_identity): Remove. Move prototypes
1801 (operator_identity::fold_range): Rename from foperator_identity.
1802 (operator_identity::op1_range): Ditto.
1803 (float_table::float_table): Remove fop_identity.
1804 * range-op-mixed.h (class operator_identity): Combined from integer
1806 * range-op.cc (op_identity): New object.
1807 (unified_table::unified_table): Add op_identity.
1808 (class operator_identity): Move to range-op-mixed.h.
1809 (integral_table::integral_table): Remove identity.
1810 (pointer_table::pointer_table): Remove identity.
1812 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1814 * range-op-float.cc (foperator_ge): Remove. Move prototypes
1816 (operator_ge::fold_range): Rename from foperator_ge.
1817 (operator_ge::op1_range): Ditto.
1818 (float_table::float_table): Remove GE_EXPR.
1819 * range-op-mixed.h (class operator_ge): Combined from integer
1821 * range-op.cc (op_ge): New object.
1822 (unified_table::unified_table): Add GE_EXPR.
1823 (class operator_ge): Move to range-op-mixed.h.
1824 (ge_op1_op2_relation): Fold into
1825 operator_ge::op1_op2_relation.
1826 (integral_table::integral_table): Remove GE_EXPR.
1827 (pointer_table::pointer_table): Remove GE_EXPR.
1828 * range-op.h (ge_op1_op2_relation): Delete.
1830 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1832 * range-op-float.cc (foperator_gt): Remove. Move prototypes
1834 (operator_gt::fold_range): Rename from foperator_gt.
1835 (operator_gt::op1_range): Ditto.
1836 (float_table::float_table): Remove GT_EXPR.
1837 * range-op-mixed.h (class operator_gt): Combined from integer
1839 * range-op.cc (op_gt): New object.
1840 (unified_table::unified_table): Add GT_EXPR.
1841 (class operator_gt): Move to range-op-mixed.h.
1842 (gt_op1_op2_relation): Fold into
1843 operator_gt::op1_op2_relation.
1844 (integral_table::integral_table): Remove GT_EXPR.
1845 (pointer_table::pointer_table): Remove GT_EXPR.
1846 * range-op.h (gt_op1_op2_relation): Delete.
1848 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1850 * range-op-float.cc (foperator_le): Remove. Move prototypes
1852 (operator_le::fold_range): Rename from foperator_le.
1853 (operator_le::op1_range): Ditto.
1854 (float_table::float_table): Remove LE_EXPR.
1855 * range-op-mixed.h (class operator_le): Combined from integer
1857 * range-op.cc (op_le): New object.
1858 (unified_table::unified_table): Add LE_EXPR.
1859 (class operator_le): Move to range-op-mixed.h.
1860 (le_op1_op2_relation): Fold into
1861 operator_le::op1_op2_relation.
1862 (integral_table::integral_table): Remove LE_EXPR.
1863 (pointer_table::pointer_table): Remove LE_EXPR.
1864 * range-op.h (le_op1_op2_relation): Delete.
1866 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1868 * range-op-float.cc (foperator_lt): Remove. Move prototypes
1870 (operator_lt::fold_range): Rename from foperator_lt.
1871 (operator_lt::op1_range): Ditto.
1872 (float_table::float_table): Remove LT_EXPR.
1873 * range-op-mixed.h (class operator_lt): Combined from integer
1875 * range-op.cc (op_lt): New object.
1876 (unified_table::unified_table): Add LT_EXPR.
1877 (class operator_lt): Move to range-op-mixed.h.
1878 (lt_op1_op2_relation): Fold into
1879 operator_lt::op1_op2_relation.
1880 (integral_table::integral_table): Remove LT_EXPR.
1881 (pointer_table::pointer_table): Remove LT_EXPR.
1882 * range-op.h (lt_op1_op2_relation): Delete.
1884 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1886 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
1888 (operator_equal::fold_range): Rename from foperator_not_equal.
1889 (operator_equal::op1_range): Ditto.
1890 (float_table::float_table): Remove NE_EXPR.
1891 * range-op-mixed.h (class operator_not_equal): Combined from integer
1893 * range-op.cc (op_equal): New object.
1894 (unified_table::unified_table): Add NE_EXPR.
1895 (class operator_not_equal): Move to range-op-mixed.h.
1896 (not_equal_op1_op2_relation): Fold into
1897 operator_not_equal::op1_op2_relation.
1898 (integral_table::integral_table): Remove NE_EXPR.
1899 (pointer_table::pointer_table): Remove NE_EXPR.
1900 * range-op.h (not_equal_op1_op2_relation): Delete.
1902 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1904 * range-op-float.cc (foperator_equal): Remove. Move prototypes
1906 (operator_equal::fold_range): Rename from foperator_equal.
1907 (operator_equal::op1_range): Ditto.
1908 (float_table::float_table): Remove EQ_EXPR.
1909 * range-op-mixed.h (class operator_equal): Combined from integer
1911 * range-op.cc (op_equal): New object.
1912 (unified_table::unified_table): Add EQ_EXPR.
1913 (class operator_equal): Move to range-op-mixed.h.
1914 (equal_op1_op2_relation): Fold into
1915 operator_equal::op1_op2_relation.
1916 (integral_table::integral_table): Remove EQ_EXPR.
1917 (pointer_table::pointer_table): Remove EQ_EXPR.
1918 * range-op.h (equal_op1_op2_relation): Delete.
1920 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1922 * range-op-float.cc (class float_table): Move to header.
1923 (float_table::float_table): Move float only operators to...
1924 (range_op_table::initialize_float_ops): Here.
1925 * range-op-mixed.h: New.
1926 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
1928 (float_tree_table): Moved from range-op-float.cc.
1929 (unified_tree_table): New.
1930 (unified_table::unified_table): New. Call initialize routines.
1931 (get_op_handler): Check unified table first.
1932 (range_op_handler::range_op_handler): Handle no type constructor.
1933 (integral_table::integral_table): Move integral only operators to...
1934 (range_op_table::initialize_integral_ops): Here.
1935 (pointer_table::pointer_table): Move pointer only operators to...
1936 (range_op_table::initialize_pointer_ops): Here.
1937 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
1938 (get_bool_state): Ditto.
1939 (empty_range_varying): Ditto.
1940 (relop_early_resolve): Ditto.
1941 (class range_op_table): Add new init methods for range types.
1942 (class integral_table): Move declaration to here.
1943 (class pointer_table): Move declaration to here.
1944 (class float_table): Move declaration to here.
1946 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1947 Richard Sandiford <richard.sandiford@arm.com>
1948 Richard Biener <rguenther@suse.de>
1950 * doc/md.texi: Add SELECT_VL support.
1951 * internal-fn.def (SELECT_VL): Ditto.
1952 * optabs.def (OPTAB_D): Ditto.
1953 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
1954 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
1955 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
1956 (vectorizable_store): Ditto.
1957 (vectorizable_load): Ditto.
1958 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
1960 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
1963 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
1966 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
1968 * range-op.cc (range_cast): Move to...
1969 * range-op.h (range_cast): Here and add generic a version.
1971 2023-06-09 Marek Polacek <polacek@redhat.com>
1975 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
1976 warn about designated initializers in C only.
1978 2023-06-09 Andrew Pinski <apinski@marvell.com>
1980 PR tree-optimization/97711
1981 PR tree-optimization/110155
1982 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
1983 ((zero_one != 0) ? z <op> y : y): Likewise.
1985 2023-06-09 Andrew Pinski <apinski@marvell.com>
1987 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
1988 multiply rather than negation/bit_and.
1990 2023-06-09 Andrew Pinski <apinski@marvell.com>
1992 * match.pd (`X & -Y -> X * Y`): Allow for truncation
1993 and the same type for unsigned types.
1995 2023-06-09 Andrew Pinski <apinski@marvell.com>
1997 PR tree-optimization/110165
1998 PR tree-optimization/110166
1999 * match.pd (zero_one_valued_p): Don't accept
2000 signed 1-bit integers.
2002 2023-06-09 Richard Biener <rguenther@suse.de>
2004 * match.pd (two conversions in a row): Use element_precision
2005 to DTRT for VECTOR_TYPE.
2007 2023-06-09 Pan Li <pan2.li@intel.com>
2009 * config/riscv/riscv.md (enabled): Move to another place, and
2010 add fp_vector_disabled to the cond.
2011 (fp_vector_disabled): New attr defined for disabling fp.
2012 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
2014 2023-06-09 Pan Li <pan2.li@intel.com>
2016 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
2019 2023-06-09 liuhongt <hongtao.liu@intel.com>
2022 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
2023 view_convert_expr mask to signed type when folding pblendvb
2026 2023-06-09 liuhongt <hongtao.liu@intel.com>
2029 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
2030 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
2031 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
2033 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
2034 real codename for __builtin_ia32_pabs{b,w,d}.
2036 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2038 * gimple-range-op.cc
2039 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
2040 (gimple_range_op_handler::maybe_builtin_call): Adjust.
2041 * gimple-range-op.h (operand1, operand2): Use m_operator.
2042 * range-op.cc (integral_table, pointer_table): Relocate.
2043 (get_op_handler): Rename from get_handler and handle all types.
2044 (range_op_handler::range_op_handler): Relocate.
2045 (range_op_handler::set_op_handler): Relocate and adjust.
2046 (range_op_handler::range_op_handler): Relocate.
2047 (dispatch_trio): New.
2048 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
2049 (range_op_handler::dispatch_kind): New.
2050 (range_op_handler::fold_range): Relocate and Use new dispatch value.
2051 (range_op_handler::op1_range): Ditto.
2052 (range_op_handler::op2_range): Ditto.
2053 (range_op_handler::lhs_op1_relation): Ditto.
2054 (range_op_handler::lhs_op2_relation): Ditto.
2055 (range_op_handler::op1_op2_relation): Ditto.
2056 (range_op_handler::set_op_handler): Use m_operator member.
2057 * range-op.h (range_op_handler::operator bool): Use m_operator.
2058 (range_op_handler::dispatch_kind): New.
2059 (range_op_handler::m_valid): Delete.
2060 (range_op_handler::m_int): Delete
2061 (range_op_handler::m_float): Delete
2062 (range_op_handler::m_operator): New.
2063 (range_op_table::operator[]): Relocate from .cc file.
2064 (range_op_table::set): Ditto.
2065 * value-range.h (class vrange): Make range_op_handler a friend.
2067 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2069 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
2070 (cfn_pass_through_arg1): Adjust using statemenmt.
2071 (cfn_signbit): Change base class, adjust using statement.
2072 (cfn_copysign): Ditto.
2074 (cfn_sincos): Ditto.
2075 * range-op-float.cc (fold_range): Change class to range_operator.
2079 (lhs_op1_relation): Ditto.
2080 (lhs_op2_relation): Ditto.
2081 (op1_op2_relation): Ditto.
2082 (foperator_*): Ditto.
2083 (class float_table): New. Inherit from range_op_table.
2084 (floating_tree_table) Change to range_op_table pointer.
2085 (class floating_op_table): Delete.
2086 * range-op.cc (operator_equal): Adjust using statement.
2087 (operator_not_equal): Ditto.
2088 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
2089 (operator_minus, operator_cast): Ditto.
2090 (operator_bitwise_and, pointer_plus_operator): Ditto.
2091 (get_float_handle): Change return type.
2092 * range-op.h (range_operator_float): Delete. Relocate all methods
2093 into class range_operator.
2094 (range_op_handler::m_float): Change type to range_operator.
2095 (floating_op_table): Delete.
2096 (floating_tree_table): Change type.
2098 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2100 * range-op.cc (range_operator::fold_range): Call virtual routine.
2101 (range_operator::update_bitmask): New.
2102 (operator_equal::update_bitmask): New.
2103 (operator_not_equal::update_bitmask): New.
2104 (operator_lt::update_bitmask): New.
2105 (operator_le::update_bitmask): New.
2106 (operator_gt::update_bitmask): New.
2107 (operator_ge::update_bitmask): New.
2108 (operator_ge::update_bitmask): New.
2109 (operator_plus::update_bitmask): New.
2110 (operator_minus::update_bitmask): New.
2111 (operator_pointer_diff::update_bitmask): New.
2112 (operator_min::update_bitmask): New.
2113 (operator_max::update_bitmask): New.
2114 (operator_mult::update_bitmask): New.
2115 (operator_div:operator_div):New.
2116 (operator_div::update_bitmask): New.
2117 (operator_div::m_code): New member.
2118 (operator_exact_divide::operator_exact_divide): New constructor.
2119 (operator_lshift::update_bitmask): New.
2120 (operator_rshift::update_bitmask): New.
2121 (operator_bitwise_and::update_bitmask): New.
2122 (operator_bitwise_or::update_bitmask): New.
2123 (operator_bitwise_xor::update_bitmask): New.
2124 (operator_trunc_mod::update_bitmask): New.
2125 (op_ident, op_unknown, op_ptr_min_max): New.
2126 (op_nop, op_convert): Delete.
2127 (op_ssa, op_paren, op_obj_type): Delete.
2128 (op_realpart, op_imagpart): Delete.
2129 (op_ptr_min, op_ptr_max): Delete.
2130 (pointer_plus_operator:update_bitmask): New.
2131 (range_op_table::set): Do not use m_code.
2132 (integral_table::integral_table): Adjust to single instances.
2133 * range-op.h (range_operator::range_operator): Delete.
2134 (range_operator::m_code): Delete.
2135 (range_operator::update_bitmask): New.
2137 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2139 * range-op-float.cc (range_operator_float::fold_range): Return
2140 NAN of the result type.
2142 2023-06-08 Jakub Jelinek <jakub@redhat.com>
2144 * optabs.cc (expand_ffs): Add forward declaration.
2145 (expand_doubleword_clz): Rename to ...
2146 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
2147 handle also doubleword CTZ and FFS in addition to CLZ.
2148 (expand_unop): Adjust caller. Also call it for doubleword
2149 ctz_optab and ffs_optab.
2151 2023-06-08 Jakub Jelinek <jakub@redhat.com>
2154 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
2155 n_words == 2 recurse with mmx_ok as first argument rather than false.
2157 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
2159 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
2160 avoid sign extension/undefined behaviour when setting each bit.
2162 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
2163 Uros Bizjak <ubizjak@gmail.com>
2165 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
2166 Use new x86_stc instruction when the carry flag must be set.
2167 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
2168 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
2169 * config/i386/i386.h (TARGET_SLOW_STC): New define.
2170 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
2171 (x86_stc): New define_insn.
2172 (define_peephole2): Convert x86_stc into alternate implementation
2173 on pentium4 without -Os when a QImode register is available.
2174 (*x86_cmc): New define_insn.
2175 (define_peephole2): Convert *x86_cmc into alternate implementation
2176 on pentium4 without -Os when a QImode register is available.
2177 (*setccc): New define_insn_and_split for a no-op CCCmode move.
2178 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
2179 recognize (and eliminate) the carry flag being copied to itself.
2180 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
2181 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
2183 2023-06-07 Andrew Pinski <apinski@marvell.com>
2185 * match.pd: Fix comment for the
2186 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
2188 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
2189 Jeff Law <jlaw@ventanamicro.com>
2191 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
2192 (rotrsi3_sext): Expose generator.
2193 (rotlsi3 pattern): Hide generator.
2194 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
2196 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
2197 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
2198 (mulsi3, <optab>si3): Likewise.
2199 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
2200 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
2201 (<u>mulsidi3): Likewise.
2202 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
2203 (mulsi3_extended, <optab>si3_extended): Likewise.
2204 (splitter for shadd feeding divison): Update RTL pattern to account
2205 for changes in how 32 bit ops are expanded for TARGET_64BIT.
2206 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
2208 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
2211 * config/riscv/riscv.cc (riscv_print_operand): Calculate
2212 memmodel only when it is valid.
2214 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
2216 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
2217 for constant element of a vector.
2219 2023-06-07 Jakub Jelinek <jakub@redhat.com>
2221 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
2222 instead compare tree_nonzero_bits <= 1U rather than just == 1.
2224 2023-06-07 Alex Coplan <alex.coplan@arm.com>
2227 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
2229 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
2231 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
2232 setup if in_lto_p, just like we do for SVE.
2233 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
2234 (__arm_st64b): Delete.
2235 (__arm_st64bv): Delete.
2236 (__arm_st64bv0): Delete.
2238 2023-06-07 Alex Coplan <alex.coplan@arm.com>
2241 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
2242 Use input operand for the destination address.
2243 * config/aarch64/aarch64.md (st64b): Fix constraint on address
2246 2023-06-07 Alex Coplan <alex.coplan@arm.com>
2249 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
2250 Replace eight consecutive spaces with tabs.
2251 (aarch64_init_ls64_builtins): Likewise.
2252 (aarch64_expand_builtin_ls64): Likewise.
2253 * config/aarch64/aarch64.md (ld64b): Likewise.
2256 (st64bv0): Likewise.
2258 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
2260 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
2261 offset table pseudo to a general reg subset.
2263 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2265 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
2267 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
2269 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
2270 (aarch64_sqxtun2<mode>_le): Likewise.
2271 (aarch64_sqxtun2<mode>_be): Likewise.
2272 (aarch64_sqxtun2<mode>): Adjust for the above.
2273 (aarch64_sqmovun<mode>): New define_expand.
2274 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
2275 (half_mask): New mode attribute.
2276 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
2279 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2281 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
2283 (aarch64_addp<mode>_insn): ... This...
2284 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
2285 (aarch64_addp<mode>): New define_expand.
2287 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2289 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
2290 * config/riscv/riscv-v.cc
2291 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
2293 (rvv_builder::single_step_npatterns_p): New function.
2294 (rvv_builder::npatterns_all_equal_p): Ditto.
2295 (const_vec_all_in_range_p): Support POLY handling.
2296 (gen_const_vector_dup): Ditto.
2297 (emit_vlmax_gather_insn): Add vrgatherei16.
2298 (emit_vlmax_masked_gather_mu_insn): Ditto.
2299 (expand_const_vector): Add VLA SLP const vector support.
2300 (expand_vec_perm): Support POLY.
2301 (struct expand_vec_perm_d): New struct.
2302 (shuffle_generic_patterns): New function.
2303 (expand_vec_perm_const_1): Ditto.
2304 (expand_vec_perm_const): Ditto.
2305 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
2306 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
2308 2023-06-07 Andrew Pinski <apinski@marvell.com>
2310 PR middle-end/110117
2311 * expr.cc (expand_single_bit_test): Handle
2312 const_int from expand_expr.
2314 2023-06-07 Andrew Pinski <apinski@marvell.com>
2316 * expr.cc (do_store_flag): Rearrange the
2317 TER code so that it overrides the nonzero bits
2318 info if we had `a & POW2`.
2320 2023-06-07 Andrew Pinski <apinski@marvell.com>
2322 PR tree-optimization/110134
2323 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
2325 (-A CMP CST -> B CMP (-CST)): Likewise.
2327 2023-06-07 Andrew Pinski <apinski@marvell.com>
2329 PR tree-optimization/89263
2330 PR tree-optimization/99069
2331 PR tree-optimization/20083
2332 PR tree-optimization/94898
2333 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
2334 one of the operands are constant.
2336 2023-06-07 Andrew Pinski <apinski@marvell.com>
2338 * match.pd (zero_one_valued_p): Match 0 integer constant
2341 2023-06-07 Pan Li <pan2.li@intel.com>
2343 * config/riscv/riscv-vector-builtins-types.def
2344 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
2345 (vfloat32m1_t): Ditto.
2346 (vfloat32m2_t): Ditto.
2347 (vfloat32m4_t): Ditto.
2348 (vfloat32m8_t): Ditto.
2349 (vint16mf4_t): Ditto.
2350 (vint16mf2_t): Ditto.
2351 (vint16m1_t): Ditto.
2352 (vint16m2_t): Ditto.
2353 (vint16m4_t): Ditto.
2354 (vint16m8_t): Ditto.
2355 (vuint16mf4_t): Ditto.
2356 (vuint16mf2_t): Ditto.
2357 (vuint16m1_t): Ditto.
2358 (vuint16m2_t): Ditto.
2359 (vuint16m4_t): Ditto.
2360 (vuint16m8_t): Ditto.
2361 (vint32mf2_t): Ditto.
2362 (vint32m1_t): Ditto.
2363 (vint32m2_t): Ditto.
2364 (vint32m4_t): Ditto.
2365 (vint32m8_t): Ditto.
2366 (vuint32mf2_t): Ditto.
2367 (vuint32m1_t): Ditto.
2368 (vuint32m2_t): Ditto.
2369 (vuint32m4_t): Ditto.
2370 (vuint32m8_t): Ditto.
2372 2023-06-07 Jason Merrill <jason@redhat.com>
2375 * doc/invoke.texi: Document it.
2377 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
2379 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
2380 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
2381 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
2382 NOT (BITREVERSE x) as BITREVERSE (NOT x).
2383 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
2384 Optimize PARITY (BITREVERSE x) as PARITY x.
2385 Optimize BITREVERSE (BITREVERSE x) as x.
2386 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
2387 BITREVERSE of a constant integer at compile-time.
2388 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
2389 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
2390 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
2391 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
2392 Optimize COPYSIGN (x, ABS y) as ABS x.
2393 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
2394 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
2395 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
2396 arguments at compile-time.
2398 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
2400 * rtl.h (function_invariant_p): Change return type from int to bool.
2401 * reload1.cc (function_invariant_p): Change return type from
2402 int to bool and adjust function body accordingly.
2404 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2406 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
2407 (*single_<optab>mult_plus<mode>): Ditto.
2408 (*double_<optab>mult_plus<mode>): Ditto.
2409 (*sign_zero_extend_fma): Ditto.
2410 (*zero_sign_extend_fma): Ditto.
2411 * config/riscv/riscv-protos.h (enum insn_type): New enum.
2413 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
2414 Tobias Burnus <tobias@codesourcery.com>
2416 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
2417 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
2419 (omp_get_attachment): Handle map clauses with 'present' modifier.
2420 (omp_group_base): Likewise.
2421 (gimplify_scan_omp_clauses): Reorder present maps to come first.
2422 Set GOVD flags for present defaultmaps.
2423 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
2424 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
2426 (lower_omp_target): Handle map clauses with 'present' modifier.
2427 Handle 'to' and 'from' clauses with 'present'.
2428 * tree-core.h (enum omp_clause_defaultmap_kind): Add
2429 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
2430 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
2431 'from' clauses with 'present' modifier. Handle present defaultmap.
2432 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
2434 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
2436 * config/rs6000/genfusion.pl: Delete some dead code.
2438 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
2440 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
2442 (gen_ld_cmpi_p10): ... this.
2444 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
2447 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
2448 duplicate expression.
2450 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2452 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
2453 Handle unsigned reduc_plus_scal_ builtins.
2454 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
2455 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
2456 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
2457 __builtin_aarch64_reduc_plus_scal_v2di.
2458 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
2460 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2462 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
2463 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
2464 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
2466 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2468 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
2469 (aarch64_shrn<mode>_insn_be): Delete.
2470 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
2471 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
2472 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
2473 (aarch64_rshrn<mode>_insn_le): Delete.
2474 (aarch64_rshrn<mode>_insn_be): Delete.
2475 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
2476 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
2478 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2480 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
2482 (aarch64_pars_overlap_p): Likewise.
2483 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
2484 Express in terms of UNSPEC_ADDV.
2485 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
2486 (*aarch64_<su>addlv<mode>_reduction): Define.
2487 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
2488 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
2489 (aarch64_pars_overlap_p): Likewise.
2490 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
2491 (VQUADW): New mode attribute.
2492 (VWIDE2X_S): Likewise.
2494 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
2495 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
2497 2023-06-06 Richard Biener <rguenther@suse.de>
2499 PR middle-end/110055
2500 * gimplify.cc (gimplify_target_expr): Do not emit
2501 CLOBBERs for variables which have static storage duration
2502 after gimplifying their initializers.
2504 2023-06-06 Richard Biener <rguenther@suse.de>
2506 PR tree-optimization/109143
2507 * tree-ssa-structalias.cc (solution_set_expand): Avoid
2508 one bitmap iteration and optimize bit range setting.
2510 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
2513 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
2514 XVECEXP, not XEXP, to access first item of a PARALLEL.
2516 2023-06-06 Pan Li <pan2.li@intel.com>
2518 * config/riscv/riscv-vector-builtins-types.def
2519 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
2520 (vfloat16mf2_t): Likewise.
2521 (vfloat16m1_t): Likewise.
2522 (vfloat16m2_t): Likewise.
2523 (vfloat16m4_t): Likewise.
2524 (vfloat16m8_t): Likewise.
2525 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
2526 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
2528 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
2530 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
2531 for cfi reg/mem machmode
2532 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
2534 2023-06-06 Li Xu <xuli1@eswincomputing.com>
2536 * config/riscv/vector-iterators.md:
2537 Fix 'REQUIREMENT' for machine_mode 'MODE'.
2538 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
2539 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
2540 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
2542 2023-06-06 Pan Li <pan2.li@intel.com>
2544 * config/riscv/vector-iterators.md: Fix typo in mode attr.
2546 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
2547 Joel Hutton <joel.hutton@arm.com>
2549 * doc/generic.texi: Remove old tree codes.
2550 * expr.cc (expand_expr_real_2): Remove old tree code cases.
2551 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
2552 * optabs-tree.cc (optab_for_tree_code): Likewise.
2553 (supportable_half_widening_operation): Likewise.
2554 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
2555 * tree-inline.cc (estimate_operator_cost): Likewise.
2556 (op_symbol_code): Likewise.
2557 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
2558 (vect_analyze_data_ref_accesses): Likewise.
2559 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
2560 * cfgexpand.cc (expand_debug_expr): Likewise.
2561 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
2562 (supportable_widening_operation): Likewise.
2563 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
2565 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
2566 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
2567 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
2568 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
2569 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
2570 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
2571 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
2572 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
2574 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
2575 Joel Hutton <joel.hutton@arm.com>
2576 Tamar Christina <tamar.christina@arm.com>
2578 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
2580 (vec_widen_<su>add_lo_<mode>): ... to this.
2581 (vec_widen_<su>addl_hi_<mode>): Rename this ...
2582 (vec_widen_<su>add_hi_<mode>): ... to this.
2583 (vec_widen_<su>subl_lo_<mode>): Rename this ...
2584 (vec_widen_<su>sub_lo_<mode>): ... to this.
2585 (vec_widen_<su>subl_hi_<mode>): Rename this ...
2586 (vec_widen_<su>sub_hi_<mode>): ...to this.
2587 * doc/generic.texi: Document new IFN codes.
2588 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
2589 (commutative_binary_fn_p): Add widen_plus fn's.
2590 (widening_fn_p): New function.
2591 (narrowing_fn_p): New function.
2592 (direct_internal_fn_optab): Change visibility.
2593 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
2594 internal_fn that expands into multiple internal_fns for widening.
2595 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
2596 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
2597 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
2598 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
2599 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
2600 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
2601 (lookup_hilo_internal_fn): Likewise.
2602 (widening_fn_p): Likewise.
2603 (Narrowing_fn_p): Likewise.
2604 * optabs.cc (commutative_optab_p): Add widening plus optabs.
2605 * optabs.def (OPTAB_D): Define widen add, sub optabs.
2606 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
2607 patterns with a hi/lo or even/odd split.
2608 (vect_recog_sad_pattern): Refactor to use new IFN codes.
2609 (vect_recog_widen_plus_pattern): Likewise.
2610 (vect_recog_widen_minus_pattern): Likewise.
2611 (vect_recog_average_pattern): Likewise.
2612 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
2614 (supportable_widening_operation): Likewise.
2615 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
2617 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
2618 Joel Hutton <joel.hutton@arm.com>
2620 * tree-vect-patterns.cc: Add include for gimple-iterator.
2621 (vect_recog_widen_op_pattern): Refactor to use code_helper.
2622 (vect_gimple_build): New function.
2623 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
2625 (vectorizable_call): Likewise.
2626 (vect_gen_widened_results_half): Likewise.
2627 (vect_create_vectorized_demotion_stmts): Likewise.
2628 (vect_create_vectorized_promotion_stmts): Likewise.
2629 (vect_create_half_widening_stmts): Likewise.
2630 (vectorizable_conversion): Likewise.
2631 (supportable_widening_operation): Likewise.
2632 (supportable_narrowing_operation): Likewise.
2633 * tree-vectorizer.h (supportable_widening_operation): Change
2634 prototype to use code_helper.
2635 (supportable_narrowing_operation): Likewise.
2636 (vect_gimple_build): New function prototype.
2637 * tree.h (code_helper::safe_as_tree_code): New function.
2638 (code_helper::safe_as_fn_code): New function.
2640 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
2642 * wide-int.cc (wi::bitreverse_large): New function implementing
2643 bit reversal of an integer.
2644 * wide-int.h (wi::bitreverse): New (template) function prototype.
2645 (bitreverse_large): Prototype helper function/implementation.
2646 (wi::bitreverse): New template wrapper around bitreverse_large.
2648 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
2650 * rtl.h (print_rtl_single): Change return type from int to void.
2651 (print_rtl_single_with_indent): Ditto.
2652 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
2653 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
2654 (rtx_writer::print_rtx_operand_code_0): Ditto.
2655 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
2656 (rtx_writer::print_rtx_operand_code_i): Ditto.
2657 (rtx_writer::print_rtx_operand_code_u): Ditto.
2658 (rtx_writer::print_rtx_operand): Ditto.
2659 (rtx_writer::print_rtx): Ditto.
2660 (rtx_writer::finish_directive): Ditto.
2661 (print_rtl_single): Change return type from int to void
2662 and adjust function body accordingly.
2663 (rtx_writer::print_rtl_single_with_indent): Ditto.
2665 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
2667 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
2668 (reg_class_subset_p): Ditto.
2669 * reginfo.cc (reg_classes_intersect_p): Ditto.
2670 (reg_class_subset_p): Ditto.
2672 2023-06-05 Pan Li <pan2.li@intel.com>
2674 * config/riscv/riscv-vector-builtins-types.def
2675 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
2676 (vfloat32m1_t): Ditto.
2677 (vfloat32m2_t): Ditto.
2678 (vfloat32m4_t): Ditto.
2679 (vfloat32m8_t): Ditto.
2680 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
2681 (vint16mf2_t): Ditto.
2682 (vint16m1_t): Ditto.
2683 (vint16m2_t): Ditto.
2684 (vint16m4_t): Ditto.
2685 (vint16m8_t): Ditto.
2686 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
2687 (vuint16mf2_t): Ditto.
2688 (vuint16m1_t): Ditto.
2689 (vuint16m2_t): Ditto.
2690 (vuint16m4_t): Ditto.
2691 (vuint16m8_t): Ditto.
2692 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
2693 (vint32m1_t): Ditto.
2694 (vint32m2_t): Ditto.
2695 (vint32m4_t): Ditto.
2696 (vint32m8_t): Ditto.
2697 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
2698 (vuint32m1_t): Ditto.
2699 (vuint32m2_t): Ditto.
2700 (vuint32m4_t): Ditto.
2701 (vuint32m8_t): Ditto.
2702 * config/riscv/vector-iterators.md: Add FP=16 support for V,
2703 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
2705 2023-06-05 Andrew Pinski <apinski@marvell.com>
2708 * Makefile.in (clean): Remove the removing of
2709 MULTILIB_DIR/MULTILIB_OPTIONS directories.
2711 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
2713 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
2715 * config/mips/mips.cc (speculation_barrier_libfunc): New static
2717 (mips_init_libfuncs): Initialize it.
2718 (mips_emit_speculation_barrier): New function.
2719 * config/mips/mips.md (speculation_barrier): Call
2720 mips_emit_speculation_barrier.
2722 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2724 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
2725 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
2726 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
2727 (rvv_builder::get_merged_repeating_sequence): Ditto.
2728 (rvv_builder::get_merge_scalar_mask): Ditto.
2729 (emit_scalar_move_insn): Ditto.
2730 (emit_vlmax_integer_move_insn): Ditto.
2731 (emit_nonvlmax_integer_move_insn): Ditto.
2732 (emit_vlmax_gather_insn): Ditto.
2733 (emit_vlmax_masked_gather_mu_insn): Ditto.
2734 (get_repeating_sequence_dup_machine_mode): Ditto.
2736 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2738 * config/riscv/autovec.md: Split arguments.
2739 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
2740 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
2742 2023-06-04 Andrew Pinski <apinski@marvell.com>
2744 * expr.cc (do_store_flag): Improve for single bit testing
2745 not against zero but against that single bit.
2747 2023-06-04 Andrew Pinski <apinski@marvell.com>
2749 * expr.cc (do_store_flag): Extend the one bit checking case
2750 to handle the case where we don't have an and but rather still
2751 one bit is known to be non-zero.
2753 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
2755 * config/h8300/constraints.md (Zz): Make this a normal
2757 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
2758 * config/h8300/logical.md (H8/SX bit patterns): Remove.
2760 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2762 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
2763 New insn_and_split patterns.
2765 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2768 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
2769 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
2770 (@vlmul_extx4<mode>): Ditto.
2771 (@vlmul_extx8<mode>): Ditto.
2772 (@vlmul_extx16<mode>): Ditto.
2773 (@vlmul_extx32<mode>): Ditto.
2774 (@vlmul_extx64<mode>): Ditto.
2775 (*vlmul_extx2<mode>): Ditto.
2776 (*vlmul_extx4<mode>): Ditto.
2777 (*vlmul_extx8<mode>): Ditto.
2778 (*vlmul_extx16<mode>): Ditto.
2779 (*vlmul_extx32<mode>): Ditto.
2780 (*vlmul_extx64<mode>): Ditto.
2782 2023-06-04 Pan Li <pan2.li@intel.com>
2784 * config/riscv/riscv-vector-builtins-types.def
2785 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
2786 (vfloat32m1_t): Likewise.
2787 (vfloat32m2_t): Likewise.
2788 (vfloat32m4_t): Likewise.
2789 (vfloat32m8_t): Likewise.
2790 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
2791 * config/riscv/vector-iterators.md: Add single to half machine
2794 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2796 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
2797 (*n<optab><mode>): Ditto.
2798 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
2799 (*n<optab><mode>): Ditto.
2800 * config/riscv/vector.md: Ditto.
2802 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
2805 * config/i386/i386-features.cc (scalar_chain::convert_compare):
2806 Update or delete REG_EQUAL notes, converting CONST_INT and
2807 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
2809 2023-06-04 Jason Merrill <jason@redhat.com>
2812 * tree-eh.cc (lower_resx): Pass the exception pointer to the
2814 * except.h: Tweak comment.
2816 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
2818 * postreload.cc (move2add_use_add2_insn): Handle
2819 trivial single_sets. Rename variable PAT to SET.
2820 (move2add_use_add3_insn, reload_cse_move2add): Similar.
2822 2023-06-04 Pan Li <pan2.li@intel.com>
2824 * config/riscv/riscv-vector-builtins-types.def
2825 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
2826 (vfloat16mf2_t): Likewise.
2827 (vfloat16m1_t): Likewise.
2828 (vfloat16m2_t): Likewise.
2829 (vfloat16m4_t): Likewise.
2830 (vfloat16m8_t): Likewise.
2831 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
2832 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
2833 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
2834 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
2837 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
2839 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
2842 2023-06-03 Die Li <lidie@eswincomputing.com>
2844 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
2846 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2848 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
2850 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2852 * config/riscv/vector.md: Add vector-opt.md.
2853 * config/riscv/autovec-opt.md: New file.
2855 2023-06-03 liuhongt <hongtao.liu@intel.com>
2857 PR tree-optimization/110067
2858 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
2859 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
2861 2023-06-03 liuhongt <hongtao.liu@intel.com>
2864 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
2865 (truncv2si<mode>2): Ditto.
2867 2023-06-02 Andrew Pinski <apinski@marvell.com>
2869 PR rtl-optimization/102733
2870 * dse.cc (store_info): Add addrspace field.
2871 (record_store): Record the address space
2872 and check to make sure they are the same.
2874 2023-06-02 Andrew Pinski <apinski@marvell.com>
2876 PR rtl-optimization/110042
2877 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
2878 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
2880 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
2883 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
2884 Make sure that we do not have a cap on field alignment before altering
2885 the struct layout based on the type alignment of the first entry.
2887 2023-06-02 David Faust <david.faust@oracle.com>
2890 * btfout.cc (btf_absolute_func_id): New function.
2891 (btf_asm_func_type): Call it here. Change index parameter from
2892 size_t to ctf_id_t. Use PRIu64 formatter.
2894 2023-06-02 Alex Coplan <alex.coplan@arm.com>
2896 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
2897 (btf_asm_datasec_type): Likewise.
2899 2023-06-02 Carl Love <cel@us.ibm.com>
2901 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
2902 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
2904 2023-06-02 Jason Merrill <jason@redhat.com>
2908 * tree.h (DECL_MERGEABLE): New.
2909 * tree-core.h (struct tree_decl_common): Mention it.
2910 * gimplify.cc (gimplify_init_constructor): Check it.
2911 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
2912 * varasm.cc (categorize_decl_for_section): Likewise.
2914 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
2916 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
2917 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
2918 (stack_regs_mentioned_p): Change return type from int to bool
2919 and adjust function body accordingly.
2920 (stack_regs_mentioned): Ditto.
2921 (check_asm_stack_operands): Ditto. Change "malformed_asm"
2923 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
2924 (swap_rtx_condition_1): Change return type from int to bool
2925 and adjust function body accordingly. Change "r" variable to bool.
2926 (swap_rtx_condition): Change return type from int to bool
2927 and adjust function body accordingly.
2928 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
2929 (subst_stack_regs): Ditto.
2930 (convert_regs_entry): Change return type from int to bool and adjust
2931 function body accordingly. Change "inserted" variable to bool.
2932 (convert_regs_1): Recode handling of control_flow_insn_deleted.
2933 (convert_regs_2): Recode handling of cfg_altered.
2934 (convert_regs): Ditto. Change "inserted" variable to bool.
2936 2023-06-02 Jason Merrill <jason@redhat.com>
2939 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
2940 (initializer_constant_valid_p_1): Compare float precision.
2942 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
2944 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
2947 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2949 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
2950 (vect_set_loop_condition_partial_vectors): Ditto.
2952 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
2955 * config/avr/avr.md: Add an RTL peephole to optimize operations on
2956 non-LD_REGS after a move from LD_REGS.
2957 (piaop): New code iterator.
2959 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
2962 * doc/install.texi: Document (optional) Perl usage for parallel
2965 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
2968 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
2971 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2972 KuanLin Chen <best124612@gmail.com>
2974 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
2975 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
2977 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2979 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
2981 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2983 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
2985 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2987 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
2989 (DEF_RVV_FRM_ENUM): Ditto.
2991 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2993 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
2994 intrinsic API expander
2995 * config/riscv/vector.md
2996 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
2997 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
2998 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
3000 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3002 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
3003 * config/riscv/predicates.md (vector_perm_operand): New predicate.
3004 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3005 (expand_vec_perm): New function.
3006 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
3007 (gen_const_vector_dup): Ditto.
3008 (emit_vlmax_gather_insn): Ditto.
3009 (emit_vlmax_masked_gather_mu_insn): Ditto.
3010 (expand_vec_perm): Ditto.
3012 2023-06-01 Jason Merrill <jason@redhat.com>
3014 * doc/invoke.texi (-Wpedantic): Improve clarity.
3016 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
3018 * rtl.h (exp_equiv_p): Change return type from int to bool.
3019 * cse.cc (mention_regs): Change return type from int to bool
3020 and adjust function body accordingly.
3021 (exp_equiv_p): Ditto.
3022 (insert_regs): Ditto. Change "modified" function argument to bool
3023 and update usage accordingly.
3024 (record_jump_cond): Remove always zero "reversed_nonequality"
3025 function argument and update usage accordingly.
3026 (fold_rtx): Change "changed" variable to bool.
3027 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
3028 (is_dead_reg): Change return type from int to bool.
3030 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3032 * config/xtensa/xtensa.md (adddi3, subdi3):
3033 New RTL generation patterns implemented according to the instruc-
3034 tion idioms described in the Xtensa ISA reference manual (p. 600).
3036 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
3037 Uros Bizjak <ubizjak@gmail.com>
3040 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
3041 CODE_for_sse4_1_ptestzv2di.
3042 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
3043 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
3044 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
3045 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
3046 when expanding UNSPEC_PTEST to compare against zero.
3047 * config/i386/i386-features.cc (scalar_chain::convert_compare):
3048 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
3049 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
3050 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
3051 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
3052 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
3053 check for suitable matching modes for the UNSPEC_PTEST pattern.
3054 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
3055 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
3056 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
3057 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
3058 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
3059 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
3060 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
3062 (*ptest<mode>_and): Specify CCZ to only perform this optimization
3063 when only the Z flag is required.
3065 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
3068 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
3070 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3072 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
3073 Add =r,m and =r,m alternatives.
3074 (load_pair<DREG:mode><DREG2:mode>): Likewise.
3075 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
3077 2023-06-01 Pan Li <pan2.li@intel.com>
3079 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
3081 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
3082 (main): Disable FP16 tuple.
3083 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
3084 (TARGET_VECTOR_ELEN_FP_16): Ditto.
3085 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
3087 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
3088 (vfloat16mf2_t): Ditto.
3089 (vfloat16m1_t): Ditto.
3090 (vfloat16m2_t): Ditto.
3091 (vfloat16m4_t): Ditto.
3092 (vfloat16m8_t): Ditto.
3093 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
3095 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
3096 machine mode based on TARGET_VECTOR_ELEN_FP_16.
3098 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3100 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
3101 (DEF_RVV_FRM_ENUM): New macro.
3102 (handle_pragma_vector): Add FRM enum
3103 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
3110 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
3111 Richard Sandiford <richard.sandiford@arm.com>
3113 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
3114 Update call to wi::bswap.
3115 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
3116 Update call to wi::bswap.
3117 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
3118 Update calls to wi::bswap.
3119 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
3120 (wi::bswap_large): New function, with revised API.
3121 * wide-int.h (wi::bswap): New (template) function prototype.
3122 (wide_int_storage::bswap): Remove method.
3123 (sext_large, zext_large): Consistent indentation/line wrapping.
3124 (bswap_large): Prototype helper function containing implementation.
3125 (wi::bswap): New template wrapper around bswap_large.
3127 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3130 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
3131 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
3132 (usdot_prod<vsi2qi>): Rename to...
3133 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
3134 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
3135 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
3136 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
3137 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
3138 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
3139 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
3142 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3145 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
3146 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
3147 (aarch64_sq<r>dmulh_n<mode>): Rename to...
3148 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
3149 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
3150 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
3151 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
3152 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
3153 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
3154 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
3155 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
3156 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
3157 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
3158 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
3160 2023-05-31 David Faust <david.faust@oracle.com>
3162 * btfout.cc (btf_kind_names): New.
3163 (btf_kind_name): New.
3164 (btf_absolute_var_id): New utility function.
3165 (btf_relative_var_id): Likewise.
3166 (btf_relative_func_id): Likewise.
3167 (btf_absolute_datasec_id): Likewise.
3168 (btf_asm_type_ref): New.
3169 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
3170 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
3171 (btf_asm_varent): Likewise.
3172 (btf_asm_func_arg): Likewise.
3173 (btf_asm_datasec_entry): Likewise.
3174 (btf_asm_datasec_type): Likewise.
3175 (btf_asm_func_type): Likewise. Add index parameter.
3176 (btf_asm_enum_const): Likewise.
3177 (btf_asm_sou_member): Likewise.
3178 (output_btf_vars): Update btf_asm_* call accordingly.
3179 (output_asm_btf_sou_fields): Likewise.
3180 (output_asm_btf_enum_list): Likewise.
3181 (output_asm_btf_func_args_list): Likewise.
3182 (output_asm_btf_vlen_bytes): Likewise.
3183 (output_btf_func_types): Add ctf_container_ref parameter.
3184 Pass it to btf_asm_func_type.
3185 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
3186 (btf_output): Update output_btf_func_types call similarly.
3188 2023-05-31 David Faust <david.faust@oracle.com>
3190 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
3191 and BTF_KIND_FWD which do not use the size/type field at all.
3193 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
3195 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
3196 (active_insn_p): Ditto.
3197 (in_sequence_p): Ditto.
3198 (unshare_all_rtl): Change return type from int to void.
3199 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
3200 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
3201 and adjust function body accordingly.
3202 (mem_expr_equal_p): Ditto.
3203 (unshare_all_rtl): Change return type from int to void
3204 and adjust function body accordingly.
3205 (verify_rtx_sharing): Remove unneeded return.
3206 (active_insn_p): Change return type from int to bool
3207 and adjust function body accordingly.
3208 (in_sequence_p): Ditto.
3210 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
3212 * rtl.h (true_dependence): Change return type from int to bool.
3213 (canon_true_dependence): Ditto.
3214 (read_dependence): Ditto.
3215 (anti_dependence): Ditto.
3216 (canon_anti_dependence): Ditto.
3217 (output_dependence): Ditto.
3218 (canon_output_dependence): Ditto.
3219 (may_alias_p): Ditto.
3220 * alias.h (alias_sets_conflict_p): Ditto.
3221 (alias_sets_must_conflict_p): Ditto.
3222 (objects_must_conflict_p): Ditto.
3223 (nonoverlapping_memrefs_p): Ditto.
3224 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
3225 (record_set): Ditto.
3226 (base_alias_check): Ditto.
3227 (find_base_value): Ditto.
3228 (mems_in_disjoint_alias_sets_p): Ditto.
3229 (get_alias_set_entry): Ditto.
3230 (decl_for_component_ref): Ditto.
3231 (write_dependence_p): Ditto.
3232 (memory_modified_1): Ditto.
3233 (mems_in_disjoint_alias_set_p): Change return type from int to bool
3234 and adjust function body accordingly.
3235 (alias_sets_conflict_p): Ditto.
3236 (alias_sets_must_conflict_p): Ditto.
3237 (objects_must_conflict_p): Ditto.
3238 (rtx_equal_for_memref_p): Ditto.
3239 (base_alias_check): Ditto.
3240 (read_dependence): Ditto.
3241 (nonoverlapping_memrefs_p): Ditto.
3242 (true_dependence_1): Ditto.
3243 (true_dependence): Ditto.
3244 (canon_true_dependence): Ditto.
3245 (write_dependence_p): Ditto.
3246 (anti_dependence): Ditto.
3247 (canon_anti_dependence): Ditto.
3248 (output_dependence): Ditto.
3249 (canon_output_dependence): Ditto.
3250 (may_alias_p): Ditto.
3251 (init_alias_analysis): Change "changed" variable to bool.
3253 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3255 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
3256 expand into define_insn_and_split.
3258 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3260 * config/riscv/vector.md: Remove FRM.
3262 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3264 * config/riscv/vector.md: Remove FRM.
3266 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3268 * config/riscv/vector.md: Remove FRM.
3270 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
3273 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
3276 2023-05-31 Richard Biener <rguenther@suse.de>
3279 PR tree-optimization/109143
3280 * tree-ssa-structalias.cc (struct topo_info): Remove.
3281 (init_topo_info): Likewise.
3282 (free_topo_info): Likewise.
3283 (compute_topo_order): Simplify API, put the component
3284 with ESCAPED last so it's processed first.
3285 (topo_visit): Adjust.
3286 (solve_graph): Likewise.
3288 2023-05-31 Richard Biener <rguenther@suse.de>
3290 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
3292 (add_graph_edge): Count redundant edges we avoid to create.
3293 (dump_sa_stats): Dump them.
3294 (ipa_pta_execute): Do not dump generating constraints when
3295 we are not dumping them.
3297 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3299 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
3300 output template to avoid explicit switch on which_alternative.
3301 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
3302 (and<mode>3): Likewise.
3303 (ior<mode>3): Likewise.
3304 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
3306 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3308 * config/xtensa/predicates.md (xtensa_bit_join_operator):
3310 * config/xtensa/xtensa.md (ior_op): Remove.
3311 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
3312 insn_and_split pattern of the same name to express and capture
3313 the bit-combining operation with both sides swapped.
3314 In addition, replace use of code iterator with new operator
3316 (*shlrd_const, *shlrd_per_byte):
3317 Likewise regarding the code iterator.
3319 2023-05-31 Cui, Lili <lili.cui@intel.com>
3321 PR tree-optimization/110038
3322 * params.opt: Add a limit on tree-reassoc-width.
3323 * tree-ssa-reassoc.cc
3324 (rewrite_expr_tree_parallel): Add width limit.
3326 2023-05-31 Pan Li <pan2.li@intel.com>
3328 * common/config/riscv/riscv-common.cc:
3329 (riscv_implied_info): Add zvfh item.
3330 (riscv_ext_version_table): Ditto.
3331 (riscv_ext_flag_table): Ditto.
3332 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
3333 (TARGET_ZVFH): Ditto.
3335 2023-05-30 liuhongt <hongtao.liu@intel.com>
3337 PR tree-optimization/108804
3338 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
3339 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
3340 Add new parameter narrow_src_p.
3341 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
3342 vectorization by truncating to lower precision.
3343 * tree-vectorizer.h (vect_get_range_info): New declare.
3345 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
3347 * lra-int.h (lra_update_sp_offset): Add the prototype.
3348 * lra.cc (setup_sp_offset): Change the return type. Use
3349 lra_update_sp_offset.
3350 * lra-eliminations.cc (lra_update_sp_offset): New function.
3351 (lra_process_new_insns): Push the current insn to reprocess if the
3352 input reload changes sp offset.
3354 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
3357 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
3358 Fix misleading identation.
3360 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
3362 * rtl.h (comparison_dominates_p): Change return type from int to bool.
3363 (condjump_p): Ditto.
3364 (any_condjump_p): Ditto.
3365 (any_uncondjump_p): Ditto.
3366 (simplejump_p): Ditto.
3367 (returnjump_p): Ditto.
3368 (eh_returnjump_p): Ditto.
3369 (onlyjump_p): Ditto.
3370 (invert_jump_1): Ditto.
3371 (invert_jump): Ditto.
3372 (rtx_renumbered_equal_p): Ditto.
3373 (redirect_jump_1): Ditto.
3374 (redirect_jump): Ditto.
3375 (condjump_in_parallel_p): Ditto.
3376 * jump.cc (invert_exp_1): Adjust forward declaration.
3377 (comparison_dominates_p): Change return type from int to bool
3378 and adjust function body accordingly.
3379 (simplejump_p): Ditto.
3380 (condjump_p): Ditto.
3381 (condjump_in_parallel_p): Ditto.
3382 (any_uncondjump_p): Ditto.
3383 (any_condjump_p): Ditto.
3384 (returnjump_p): Ditto.
3385 (eh_returnjump_p): Ditto.
3386 (onlyjump_p): Ditto.
3387 (redirect_jump_1): Ditto.
3388 (redirect_jump): Ditto.
3389 (invert_exp_1): Ditto.
3390 (invert_jump_1): Ditto.
3391 (invert_jump): Ditto.
3392 (rtx_renumbered_equal_p): Ditto.
3394 2023-05-30 Andrew Pinski <apinski@marvell.com>
3396 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
3397 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
3398 Add ne as a possible cmp.
3399 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
3401 2023-05-30 Andrew Pinski <apinski@marvell.com>
3403 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
3406 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
3408 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
3409 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
3410 (and (extend X) C) as (zero_extend (and X C)), to also optimize
3411 modes wider than HOST_WIDE_INT.
3413 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
3416 * simplify-rtx.cc (simplify_const_relational_operation): Return
3417 early if we have a MODE_CC comparison that isn't a COMPARE against
3420 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
3422 * config/riscv/riscv.cc (riscv_const_insns): Allow
3423 const_vec_duplicates.
3425 2023-05-30 liuhongt <hongtao.liu@intel.com>
3427 PR middle-end/108938
3428 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
3429 function, cut from original find_bswap_or_nop function.
3430 (find_bswap_or_nop): Add a new parameter, detect bswap +
3431 rotate and save rotate result in the new parameter.
3432 (bswap_replace): Add a new parameter to indicate rotate and
3433 generate rotate stmt if needed.
3434 (maybe_optimize_vector_constructor): Adjust for new rotate
3435 parameter in the upper 2 functions.
3436 (pass_optimize_bswap::execute): Ditto.
3437 (imm_store_chain_info::output_merged_store): Ditto.
3439 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3441 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
3442 (aarch64_<su>adalp<mode>): New define_expand.
3443 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
3444 (aarch64_<su>addlp<mode>): Convert to define_expand.
3445 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
3446 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
3448 (USADDLP): Likewise.
3449 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
3451 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3453 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
3454 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
3455 srhadd, urhadd builtin codes for standard optab ones.
3456 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
3457 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
3459 (<u>avg<mode>3_ceil): Rename to...
3460 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
3462 (aarch64_<su>hsub<mode>): New define_expand.
3463 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
3464 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
3465 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
3467 2023-05-30 Andreas Schwab <schwab@suse.de>
3470 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
3473 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3475 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
3476 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
3478 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
3479 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
3480 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
3481 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
3482 (aarch64_<sra_op>sra_n<mode>): New define_expand.
3483 (aarch64_<sra_op>rsra_n<mode>): Likewise.
3484 (aarch64_<sur>sra_n<mode>): Rename to...
3485 (aarch64_<sur>sra_ndi): ... This.
3486 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
3487 any_target_p argument.
3488 (aarch64_extract_vec_duplicate_wide_int): Define.
3489 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
3490 (aarch64_const_vec_rnd_cst_p): Likewise.
3491 (aarch64_vector_mode_supported_any_target_p): Likewise.
3492 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
3493 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
3494 (VSRA): Adjust for the above.
3496 (V2XWIDE): New mode_attr.
3497 (vec_or_offset): Likewise.
3498 (SHIFTEXTEND): Likewise.
3499 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
3501 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
3502 clarify that it applies to current target options.
3503 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
3504 * doc/tm.texi.in: Regenerate.
3505 * stor-layout.cc (mode_for_vector): Check
3506 vector_mode_supported_any_target_p when iterating through vector modes.
3507 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
3508 clarify that it applies to current target options.
3509 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
3511 2023-05-30 Lili Cui <lili.cui@intel.com>
3513 PR tree-optimization/98350
3514 * tree-ssa-reassoc.cc
3515 (rewrite_expr_tree_parallel): Rewrite this function.
3516 (rank_ops_for_fma): New.
3517 (reassociate_bb): Handle new function.
3519 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
3521 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
3522 (rtx_unstable_p): Ditto.
3523 (reg_mentioned_p): Ditto.
3524 (reg_referenced_p): Ditto.
3525 (reg_used_between_p): Ditto.
3526 (reg_set_between_p): Ditto.
3527 (modified_between_p): Ditto.
3528 (no_labels_between_p): Ditto.
3529 (modified_in_p): Ditto.
3531 (multiple_sets): Ditto.
3532 (set_noop_p): Ditto.
3533 (noop_move_p): Ditto.
3534 (reg_overlap_mentioned_p): Ditto.
3535 (dead_or_set_p): Ditto.
3536 (dead_or_set_regno_p): Ditto.
3537 (find_reg_fusage): Ditto.
3538 (find_regno_fusage): Ditto.
3539 (side_effects_p): Ditto.
3540 (volatile_refs_p): Ditto.
3541 (volatile_insn_p): Ditto.
3542 (may_trap_p_1): Ditto.
3543 (may_trap_p): Ditto.
3544 (may_trap_or_fault_p): Ditto.
3545 (computed_jump_p): Ditto.
3546 (auto_inc_p): Ditto.
3547 (loc_mentioned_in_p): Ditto.
3548 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
3549 (rtx_unstable_p): Change return type from int to bool
3550 and adjust function body accordingly.
3551 (rtx_addr_can_trap_p): Ditto.
3552 (reg_mentioned_p): Ditto.
3553 (no_labels_between_p): Ditto.
3554 (reg_used_between_p): Ditto.
3555 (reg_referenced_p): Ditto.
3556 (reg_set_between_p): Ditto.
3558 (modified_between_p): Ditto.
3559 (modified_in_p): Ditto.
3560 (multiple_sets): Ditto.
3561 (set_noop_p): Ditto.
3562 (noop_move_p): Ditto.
3563 (reg_overlap_mentioned_p): Ditto.
3564 (dead_or_set_p): Ditto.
3565 (dead_or_set_regno_p): Ditto.
3566 (find_reg_fusage): Ditto.
3567 (find_regno_fusage): Ditto.
3568 (remove_node_from_insn_list): Ditto.
3569 (volatile_insn_p): Ditto.
3570 (volatile_refs_p): Ditto.
3571 (side_effects_p): Ditto.
3572 (may_trap_p_1): Ditto.
3573 (may_trap_p): Ditto.
3574 (may_trap_or_fault_p): Ditto.
3575 (computed_jump_p): Ditto.
3576 (auto_inc_p): Ditto.
3577 (loc_mentioned_in_p): Ditto.
3578 * combine.cc (can_combine_p): Update indirect function.
3580 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3582 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
3583 * config/riscv/iterators.md: New attribute.
3584 * config/riscv/vector-iterators.md: New attribute.
3586 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
3588 * config/riscv/riscv.md: Fix signed and unsigned comparison
3591 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3593 * config/riscv/autovec.md (fnma<mode>4): New pattern.
3594 (*fnma<mode>): Ditto.
3596 2023-05-29 Die Li <lidie@eswincomputing.com>
3598 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
3600 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
3601 process for TARGET_XTHEADCONDMOV
3603 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
3606 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
3607 TARGET_AVX512BW to generate truncv16hiv16qi2.
3609 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
3611 * config/riscv/riscv.md (and<mode>3): New expander.
3612 (*and<mode>3) New pattern.
3613 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
3616 2023-05-29 Pan Li <pan2.li@intel.com>
3618 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
3619 comments and rename local variables.
3620 (emit_nonvlmax_insn): Diito.
3621 (emit_vlmax_merge_insn): Ditto.
3622 (emit_vlmax_cmp_insn): Ditto.
3623 (emit_vlmax_cmp_mu_insn): Ditto.
3624 (emit_scalar_move_insn): Ditto.
3626 2023-05-29 Pan Li <pan2.li@intel.com>
3628 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
3630 (emit_nonvlmax_insn): Ditto.
3631 (emit_vlmax_merge_insn): Ditto.
3632 (emit_vlmax_cmp_insn): Ditto.
3633 (emit_vlmax_cmp_mu_insn): Ditto.
3634 (expand_vec_series): Ditto.
3636 2023-05-29 Pan Li <pan2.li@intel.com>
3638 * config/riscv/riscv-protos.h (enum insn_type): New type.
3639 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
3640 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
3642 (rvv_builder::get_merged_repeating_sequence): Ditto.
3643 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
3644 to evaluate the optimization cost.
3645 (rvv_builder::get_merge_scalar_mask): New function to get the merge
3647 (emit_scalar_move_insn): New function to emit vmv.s.x.
3648 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
3649 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
3651 (get_repeating_sequence_dup_machine_mode): New function to get the dup
3653 (expand_vector_init_merge_repeating_sequence): New function to perform
3655 (expand_vec_init): Add this vector init optimization.
3656 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
3658 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
3660 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
3661 put onto the increment when it is inserted after the position.
3663 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
3665 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
3668 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3670 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
3672 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3674 * config/riscv/autovec.md (fma<mode>4): New pattern.
3675 (*fma<mode>): Ditto.
3676 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3677 (emit_vlmax_ternary_insn): New function.
3678 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
3680 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3682 * config/riscv/vector.md: Fix vimuladd instruction bug.
3684 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3686 * config/riscv/riscv.cc (global_state_unknown_p): New function.
3687 (riscv_mode_after): Fix incorrect VXM.
3689 2023-05-29 Pan Li <pan2.li@intel.com>
3691 * common/config/riscv/riscv-common.cc:
3692 (riscv_implied_info): Add zvfhmin item.
3693 (riscv_ext_version_table): Ditto.
3694 (riscv_ext_flag_table): Ditto.
3695 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
3696 (TARGET_ZFHMIN): Align indent.
3697 (TARGET_ZFH): Ditto.
3698 (TARGET_ZVFHMIN): New macro.
3700 2023-05-27 liuhongt <hongtao.liu@intel.com>
3703 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
3704 to VI_AVX2 to cover more modes.
3706 2023-05-27 liuhongt <hongtao.liu@intel.com>
3708 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
3709 Remove ATOM and ICELAKE(and later) core processors.
3711 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
3713 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
3715 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
3717 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
3720 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
3721 Juzhe Zhong <juzhe.zhong@rivai.ai>
3723 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
3725 (<optab><v_quad_trunc><mode>2): Dito.
3726 (<optab><v_oct_trunc><mode>2): Dito.
3727 (trunc<mode><v_double_trunc>2): Dito.
3728 (trunc<mode><v_quad_trunc>2): Dito.
3729 (trunc<mode><v_oct_trunc>2): Dito.
3730 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
3731 (autovectorize_vector_modes): Define.
3732 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
3734 (autovectorize_vector_modes): Implement hook.
3735 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
3736 Implement target hook.
3737 (riscv_vectorize_related_mode): Implement target hook.
3738 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
3739 (TARGET_VECTORIZE_RELATED_MODE): Define.
3740 * config/riscv/vector-iterators.md: Add lowercase versions of
3741 mode_attr iterators.
3743 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
3744 Tobias Burnus <tobias@codesourcery.com>
3746 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
3747 (ASM_SPEC): Use XNACKOPT.
3748 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
3749 (enum hsaco_attr_type): ... this, and generalize the names.
3750 (TARGET_XNACK): New macro.
3751 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
3753 (output_file_start): Update xnack handling.
3754 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
3755 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
3756 (sram_ecc_type): Rename to ...
3757 (hsaco_attr_type: ... this.)
3758 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
3759 (TEST_XNACK): Delete.
3760 (TEST_XNACK_ANY): New macro.
3761 (TEST_XNACK_ON): New macro.
3762 (main): Support the new -mxnack=on/off/any syntax.
3763 * doc/invoke.texi (-mxnack): Update for new syntax.
3765 2023-05-26 Andrew Pinski <apinski@marvell.com>
3767 * genmatch.cc (emit_debug_printf): New function.
3768 (dt_simplify::gen_1): Emit printf into the code
3769 before the `return true` or returning the folded result
3770 instead of emitting it always.
3772 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3774 * config/xtensa/xtensa-protos.h
3775 (xtensa_expand_block_set_unrolled_loop,
3776 xtensa_expand_block_set_small_loop): Remove.
3777 (xtensa_expand_block_set): New prototype.
3778 * config/xtensa/xtensa.cc
3779 (xtensa_expand_block_set_libcall): New subfunction.
3780 (xtensa_expand_block_set_unrolled_loop,
3781 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
3782 (xtensa_expand_block_set): New function that calls the above
3784 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
3785 xtensa_expand_block_set().
3787 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3789 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
3791 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
3793 * config/xtensa/constraints.md (O):
3794 Change to use the above function.
3795 * config/xtensa/xtensa.md (*subsi3_from_const):
3796 New insn_and_split pattern.
3798 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3800 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
3801 Retract excessive line folding, and correct the value of
3802 the "length" insn attribute related to TARGET_DENSITY.
3803 (*extzvsi-1bit_addsubx): Ditto.
3805 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
3807 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
3808 Do not disable call to ix86_expand_vecop_qihi2.
3810 2023-05-26 liuhongt <hongtao.liu@intel.com>
3814 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
3815 calculation when !hard_regno_mode_ok for GENERAL_REGS and
3816 mode, otherwise still use GENERAL_REGS.
3818 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3820 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
3821 explict VL and drop VL in ops.
3823 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
3825 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
3826 in different BB blocks.
3828 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
3830 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
3831 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
3832 instructions when available. Emulate truncation via
3833 ix86_expand_vec_perm_const_1 when native truncate insn
3835 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
3836 when available. Trivially rename some variables.
3837 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
3838 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
3839 calculation of V*QImode emulations to account for generation of
3840 2x-wider mode instructions.
3841 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
3842 emulations to account for generation of 2x-wider mode instructions.
3844 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
3847 * config/avr/avr.cc (avr_can_inline_p): New static function.
3848 (TARGET_CAN_INLINE_P): Define to that function.
3850 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
3853 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
3854 Handle any bit position and use mode QISI.
3855 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
3856 of 2 insns for bit-transfer of respective style.
3858 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
3860 * config/arm/iterators.md (MVE_6): Remove.
3861 * config/arm/mve.md: Replace MVE_6 with MVE_5.
3863 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3864 Richard Sandiford <richard.sandiford@arm.com>
3866 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
3868 (vect_set_loop_controls_directly): Add decrement IV support.
3869 (vect_set_loop_condition_partial_vectors): Ditto.
3870 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
3872 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
3875 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3878 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
3879 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
3880 Fix canonicalization of PLUS operands.
3881 (aarch64_fcmla<rot><mode>): Rename to...
3882 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
3883 Fix canonicalization of PLUS operands.
3884 (aarch64_fcmla_lane<rot><mode>): Rename to...
3885 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
3886 Fix canonicalization of PLUS operands.
3887 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
3888 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
3889 Fix canonicalization of PLUS operands.
3890 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
3892 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
3894 * config/arm/arm.md (rbitsi2): Rename to...
3895 (arm_rbit): ... This.
3896 (ctzsi2): Adjust for the above.
3897 (arm_rev16si2): Convert to define_expand.
3898 (arm_rev16si2_alt1): New pattern.
3899 (arm_rev16si2_alt): Rename to...
3900 (*arm_rev16si2_alt2): ... This.
3901 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
3902 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
3903 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
3904 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
3906 2023-05-25 Alex Coplan <alex.coplan@arm.com>
3909 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
3911 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
3912 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
3913 DFmode as an rvalue.
3915 2023-05-25 Richard Biener <rguenther@suse.de>
3918 * tree-vect-stmts.cc (vectorizable_condition): For
3919 embedded comparisons also handle the case when the target
3920 only provides vec_cmp and vcond_mask.
3922 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
3924 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
3927 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3929 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
3930 (seq_cost_ignoring_scalar_moves): Likewise.
3931 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
3933 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3935 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
3936 (vcage_f32): Likewise.
3937 (vcages_f32): Likewise.
3938 (vcageq_f32): Likewise.
3939 (vcaged_f64): Likewise.
3940 (vcageq_f64): Likewise.
3941 (vcagts_f32): Likewise.
3942 (vcagt_f32): Likewise.
3943 (vcagt_f64): Likewise.
3944 (vcagtq_f32): Likewise.
3945 (vcagtd_f64): Likewise.
3946 (vcagtq_f64): Likewise.
3947 (vcale_f32): Likewise.
3948 (vcale_f64): Likewise.
3949 (vcaled_f64): Likewise.
3950 (vcales_f32): Likewise.
3951 (vcaleq_f32): Likewise.
3952 (vcaleq_f64): Likewise.
3953 (vcalt_f32): Likewise.
3954 (vcalt_f64): Likewise.
3955 (vcaltd_f64): Likewise.
3956 (vcaltq_f32): Likewise.
3957 (vcaltq_f64): Likewise.
3958 (vcalts_f32): Likewise.
3960 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
3964 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
3965 int to const int or const int to const unsigned int.
3966 (_mm512_mask_srli_epi16): Ditto.
3967 (_mm512_slli_epi16): Ditto.
3968 (_mm512_mask_slli_epi16): Ditto.
3969 (_mm512_maskz_slli_epi16): Ditto.
3970 (_mm512_srai_epi16): Ditto.
3971 (_mm512_mask_srai_epi16): Ditto.
3972 (_mm512_maskz_srai_epi16): Ditto.
3973 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
3974 (_mm512_mask_slli_epi64): Ditto.
3975 (_mm512_maskz_slli_epi64): Ditto.
3976 (_mm512_srli_epi64): Ditto.
3977 (_mm512_mask_srli_epi64): Ditto.
3978 (_mm512_maskz_srli_epi64): Ditto.
3979 (_mm512_srai_epi64): Ditto.
3980 (_mm512_mask_srai_epi64): Ditto.
3981 (_mm512_maskz_srai_epi64): Ditto.
3982 (_mm512_slli_epi32): Ditto.
3983 (_mm512_mask_slli_epi32): Ditto.
3984 (_mm512_maskz_slli_epi32): Ditto.
3985 (_mm512_srli_epi32): Ditto.
3986 (_mm512_mask_srli_epi32): Ditto.
3987 (_mm512_maskz_srli_epi32): Ditto.
3988 (_mm512_srai_epi32): Ditto.
3989 (_mm512_mask_srai_epi32): Ditto.
3990 (_mm512_maskz_srai_epi32): Ditto.
3991 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
3992 (_mm256_maskz_srai_epi16): Ditto.
3993 (_mm_mask_srai_epi16): Ditto.
3994 (_mm_maskz_srai_epi16): Ditto.
3995 (_mm256_mask_slli_epi16): Ditto.
3996 (_mm256_maskz_slli_epi16): Ditto.
3997 (_mm_mask_slli_epi16): Ditto.
3998 (_mm_maskz_slli_epi16): Ditto.
3999 (_mm_maskz_srli_epi16): Ditto.
4000 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
4001 (_mm256_maskz_srli_epi32): Ditto.
4002 (_mm_mask_srli_epi32): Ditto.
4003 (_mm_maskz_srli_epi32): Ditto.
4004 (_mm256_mask_srli_epi64): Ditto.
4005 (_mm256_maskz_srli_epi64): Ditto.
4006 (_mm_mask_srli_epi64): Ditto.
4007 (_mm_maskz_srli_epi64): Ditto.
4008 (_mm256_mask_srai_epi32): Ditto.
4009 (_mm256_maskz_srai_epi32): Ditto.
4010 (_mm_mask_srai_epi32): Ditto.
4011 (_mm_maskz_srai_epi32): Ditto.
4012 (_mm256_srai_epi64): Ditto.
4013 (_mm256_mask_srai_epi64): Ditto.
4014 (_mm256_maskz_srai_epi64): Ditto.
4015 (_mm_srai_epi64): Ditto.
4016 (_mm_mask_srai_epi64): Ditto.
4017 (_mm_maskz_srai_epi64): Ditto.
4018 (_mm_mask_slli_epi32): Ditto.
4019 (_mm_maskz_slli_epi32): Ditto.
4020 (_mm_mask_slli_epi64): Ditto.
4021 (_mm_maskz_slli_epi64): Ditto.
4022 (_mm256_mask_slli_epi32): Ditto.
4023 (_mm256_maskz_slli_epi32): Ditto.
4024 (_mm256_mask_slli_epi64): Ditto.
4025 (_mm256_maskz_slli_epi64): Ditto.
4027 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4029 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
4032 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4034 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
4035 * data-streamer-out.cc (streamer_write_vrange): Same.
4036 * value-range.h (class vrange): Make streamer_write_vrange a friend.
4038 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4040 * value-query.cc (range_query::get_tree_range): Set NAN directly
4042 * value-range.cc (frange::set): Assert that bounds are not NAN.
4044 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4046 * value-range.cc (add_vrange): Handle known NANs.
4048 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4050 * value-range.h (frange::set_nan): New.
4052 2023-05-25 Alexandre Oliva <oliva@adacore.com>
4055 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
4056 requires stricter alignment than MEM's.
4058 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4060 PR tree-optimization/107822
4061 PR tree-optimization/107986
4062 * Makefile.in (OBJS): Add gimple-range-phi.o.
4063 * gimple-range-cache.h (ranger_cache::m_estimate): New
4064 phi_analyzer pointer member.
4065 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
4066 phi_analyzer if no loop info is available.
4067 * gimple-range-phi.cc: New file.
4068 * gimple-range-phi.h: New file.
4069 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
4071 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4073 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
4075 (fold_range): Add range_query parameter.
4076 (fur_relation::fur_relation): New.
4077 (fur_relation::trio): New.
4078 (fur_relation::register_relation): New.
4079 (fold_relations): New.
4080 * gimple-range-fold.h (fold_range): Adjust prototypes.
4081 (fold_relations): New.
4083 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4085 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
4086 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
4087 (ranger_cache::const_query): New.
4088 * gimple-range.cc (gimple_ranger::const_query): New.
4089 * gimple-range.h (gimple_ranger::const_query): New prototype.
4091 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4093 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
4094 (ssa_cache::dump_range_query): Delete.
4095 (ssa_lazy_cache::dump_range_query): Delete.
4096 (ssa_lazy_cache::get_range): Move from header file.
4097 (ssa_lazy_cache::clear_range): ditto.
4098 (ssa_lazy_cache::clear): Ditto.
4099 * gimple-range-cache.h (class ssa_cache): Virtualize.
4100 (class ssa_lazy_cache): Inherit and virtualize.
4102 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
4104 * value-range.h (vrange::kind): Remove.
4106 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
4108 PR middle-end/109840
4109 * match.pd <popcount optimizations>: Preserve zero-extension when
4110 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
4111 popcount((T)x), so the popcount's argument keeps the same type.
4112 <parity optimizations>: Likewise preserve extensions when
4113 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
4114 parity((T)x), so that the parity's argument type is the same.
4116 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
4118 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
4119 (ipcp_store_vr_results): Same.
4120 * ipa-prop.cc (ipa_vr::ipa_vr): New.
4121 (ipa_vr::get_vrange): New.
4122 (ipa_vr::set_unknown): New.
4123 (ipa_vr::streamer_read): New.
4124 (ipa_vr::streamer_write): New.
4125 (write_ipcp_transformation_info): Use new ipa_vr API.
4126 (read_ipcp_transformation_info): Same.
4127 (ipa_vr::nonzero_p): Delete.
4128 (ipcp_update_vr): Use new ipa_vr API.
4129 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
4130 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
4132 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
4134 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
4135 silence overflow warnings later on.
4137 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
4139 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
4140 Remove handling of V8QImode.
4141 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
4142 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
4143 (v<insn>v4qi3): Ditto.
4144 * config/i386/sse.md (v<insn>v8qi3): Remove.
4146 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4149 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
4150 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
4151 (aarch64_simd_ashr<mode>): Rename to...
4152 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
4153 (aarch64_simd_imm_shl<mode>): Rename to...
4154 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
4155 (aarch64_simd_reg_sshl<mode>): Rename to...
4156 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
4157 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
4158 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
4159 (aarch64_simd_reg_shl<mode>_signed): Rename to...
4160 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
4161 (vec_shr_<mode>): Rename to...
4162 (vec_shr_<mode><vczle><vczbe>): ... This.
4163 (aarch64_<sur>shl<mode>): Rename to...
4164 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
4165 (aarch64_<sur>q<r>shl<mode>): Rename to...
4166 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
4168 2023-05-24 Richard Biener <rguenther@suse.de>
4171 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
4172 Perform final vector composition using
4173 ix86_expand_vector_init_general instead of setting
4174 the highpart and lowpart which causes spilling.
4176 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4178 PR tree-optimization/109695
4179 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
4181 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
4182 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
4183 flag to set_global_range.
4184 (gimple_ranger::prefill_stmt_dependencies): Ditto.
4186 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4188 PR tree-optimization/109695
4189 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
4191 (temporal_cache::current_p): Check always_current method.
4192 (temporal_cache::set_always_current): Add param and set value
4194 (temporal_cache::always_current_p): New.
4195 (ranger_cache::get_global_range): Adjust.
4196 (ranger_cache::set_global_range): set always current first.
4198 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4200 PR tree-optimization/109695
4201 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
4202 fold_range with global query to choose an initial value.
4204 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4206 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
4209 2023-05-24 Richard Biener <rguenther@suse.de>
4211 PR tree-optimization/109849
4212 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
4213 expressions but take the first sets.
4215 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
4218 * doc/gm2.texi (High procedure function): New node.
4219 (Using): New menu entry for High procedure function.
4221 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
4223 PR rtl-optimization/109940
4224 * early-remat.cc (postorder_index): Rename to...
4225 (rpo_index): ...this.
4226 (compare_candidates): Sort by decreasing rpo_index rather than
4227 increasing postorder_index.
4228 (early_remat::sort_candidates): Calculate the forward RPO from
4230 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
4231 rather than DF_BACKWARD in reverse.
4233 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4236 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
4237 qualifier_none for the return operand.
4239 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4241 * config/riscv/autovec.md (<optab><mode>3): New pattern.
4242 (one_cmpl<mode>2): Ditto.
4243 (*<optab>not<mode>): Ditto.
4244 (*n<optab><mode>): Ditto.
4245 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
4248 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
4250 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
4251 calculation on n_perms by considering nvectors_per_build.
4253 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4254 Richard Sandiford <richard.sandiford@arm.com>
4256 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
4257 (vec_cmp<mode><vm>): New pattern.
4258 (vec_cmpu<mode><vm>): New pattern.
4259 (vcond<V:mode><VI:mode>): New pattern.
4260 (vcondu<V:mode><VI:mode>): New pattern.
4261 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
4262 (emit_vlmax_merge_insn): New function.
4263 (emit_vlmax_cmp_insn): Ditto.
4264 (emit_vlmax_cmp_mu_insn): Ditto.
4265 (expand_vec_cmp): Ditto.
4266 (expand_vec_cmp_float): Ditto.
4267 (expand_vcond): Ditto.
4268 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
4269 (emit_vlmax_cmp_insn): Ditto.
4270 (emit_vlmax_cmp_mu_insn): Ditto.
4271 (get_cmp_insn_code): Ditto.
4272 (expand_vec_cmp): Ditto.
4273 (expand_vec_cmp_float): Ditto.
4274 (expand_vcond): Ditto.
4276 2023-05-24 Pan Li <pan2.li@intel.com>
4278 * config/riscv/genrvv-type-indexer.cc (main): Add
4279 unsigned_eew*_lmul1_interpret for indexer.
4280 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
4281 Register vuint*m1_t interpret function.
4282 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
4283 New macro for vuint8m1_t.
4284 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
4285 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
4286 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
4287 (vbool1_t): Add to unsigned_eew*_interpret_ops.
4288 (vbool2_t): Likewise.
4289 (vbool4_t): Likewise.
4290 (vbool8_t): Likewise.
4291 (vbool16_t): Likewise.
4292 (vbool32_t): Likewise.
4293 (vbool64_t): Likewise.
4294 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
4295 New macro for vuint*m1_t.
4296 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
4297 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
4298 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
4299 (required_extensions_p): Add vuint*m1_t interpret case.
4300 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
4301 Add vuint*m1_t interpret to base type.
4302 (unsigned_eew16_lmul1_interpret): Likewise.
4303 (unsigned_eew32_lmul1_interpret): Likewise.
4304 (unsigned_eew64_lmul1_interpret): Likewise.
4306 2023-05-24 Pan Li <pan2.li@intel.com>
4308 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
4309 for the eew size list.
4310 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
4311 (main): Add signed_eew*_lmul1_interpret for indexer.
4312 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
4313 Register vint*m1_t interpret function.
4314 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
4315 New macro for vint8m1_t.
4316 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
4317 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
4318 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
4319 (vbool1_t): Add to signed_eew*_interpret_ops.
4320 (vbool2_t): Likewise.
4321 (vbool4_t): Likewise.
4322 (vbool8_t): Likewise.
4323 (vbool16_t): Likewise.
4324 (vbool32_t): Likewise.
4325 (vbool64_t): Likewise.
4326 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
4327 New macro for vint*m1_t.
4328 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
4329 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
4330 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
4331 (required_extensions_p): Add vint8m1_t interpret case.
4332 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
4333 Add vint*m1_t interpret to base type.
4334 (signed_eew16_lmul1_interpret): Likewise.
4335 (signed_eew32_lmul1_interpret): Likewise.
4336 (signed_eew64_lmul1_interpret): Likewise.
4338 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4340 * config/riscv/autovec.md: Adjust for new interface.
4341 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
4342 (emit_nonvlmax_insn): Add AVL operand.
4343 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
4344 (emit_nonvlmax_insn): Add AVL operand.
4345 (sew64_scalar_helper): Adjust for new interface.
4346 (expand_tuple_move): Ditto.
4347 * config/riscv/vector.md: Ditto.
4349 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4351 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
4352 (expand_const_vector): Ditto.
4353 (legitimize_move): Ditto.
4354 (sew64_scalar_helper): Ditto.
4355 (expand_tuple_move): Ditto.
4356 (expand_vector_init_insert_elems): Ditto.
4357 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
4359 2023-05-24 liuhongt <hongtao.liu@intel.com>
4362 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
4363 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
4364 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
4365 (ix86_masked_all_ones): Handle 64-bit mask.
4366 * config/i386/i386-builtin.def: Replace icode of related
4367 non-mask simd abs builtins with CODE_FOR_nothing.
4369 2023-05-23 Martin Uecker <uecker@tugraz.at>
4372 * function.cc (gimplify_parm_type): Remove function.
4373 (gimplify_parameters): Call gimplify_type_sizes.
4375 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4377 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
4378 and change to also accept '*subx' pattern.
4381 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4383 * config/xtensa/predicates.md (addsub_operator): New.
4384 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
4385 *extzvsi-1bit_addsubx): New insn_and_split patterns.
4386 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
4387 Add a special case about ifcvt 'noce_try_cmove()' to handle
4388 constant loads that do not fit into signed 12 bits in the
4389 patterns added above.
4391 2023-05-23 Richard Biener <rguenther@suse.de>
4393 PR tree-optimization/109747
4394 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
4395 the SLP node only once to the cost hook.
4397 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
4399 * config/avr/avr.cc (avr_insn_cost): New static function.
4400 (TARGET_INSN_COST): Define to that function.
4402 2023-05-23 Richard Biener <rguenther@suse.de>
4405 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
4406 For vector construction or splats apply GPR->XMM move
4407 costing. QImode memory can be handled directly only
4410 2023-05-23 Richard Biener <rguenther@suse.de>
4412 PR tree-optimization/108752
4413 * tree-vect-stmts.cc (vectorizable_operation): For bit
4414 operations with generic word_mode vectors do not cost
4415 an extra stmt. For plus, minus and negate also cost the
4416 constant materialization.
4418 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
4420 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
4421 Call ix86_expand_vec_shift_qihi_constant for shifts
4422 with constant count operand.
4423 * config/i386/i386.cc (ix86_shift_rotate_cost):
4424 Handle V4QImode and V8QImode.
4425 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
4426 (<insn>v4qi3): Ditto.
4428 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4430 * config/riscv/vector.md: Add mode.
4432 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
4434 PR tree-optimization/109934
4435 * value-range.cc (irange::invert): Remove buggy special case.
4437 2023-05-23 Richard Biener <rguenther@suse.de>
4439 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
4442 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
4445 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
4446 subregs between any scalars that are 64 bits or smaller.
4447 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
4448 (bits_etype): New int attribute.
4449 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
4450 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
4451 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
4453 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
4455 * doc/md.texi: Document that <FOO> can be used to refer to the
4456 numerical value of an int iterator FOO. Tweak other parts of
4457 the int iterator documentation.
4458 * read-rtl.cc (iterator_group::has_self_attr): New field.
4459 (map_attr_string): When has_self_attr is true, make <FOO>
4460 expand to the current value of iterator FOO.
4461 (initialize_iterators): Set has_self_attr for int iterators.
4463 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4465 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
4466 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
4467 (RVV_UNOP_NUM): New macro.
4468 (RVV_BINOP_NUM): Ditto.
4469 (legitimize_move): Refactor the framework of RVV auto-vectorization.
4470 (emit_vlmax_op): Ditto.
4471 (emit_vlmax_reg_op): Ditto.
4472 (emit_len_op): Ditto.
4473 (emit_len_binop): Ditto.
4474 (emit_vlmax_tany_many): Ditto.
4475 (emit_nonvlmax_tany_many): Ditto.
4476 (sew64_scalar_helper): Ditto.
4477 (expand_tuple_move): Ditto.
4478 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
4479 (emit_pred_binop): Ditto.
4480 (emit_vlmax_op): Ditto.
4481 (emit_vlmax_tany_many): New function.
4482 (emit_len_op): Remove.
4483 (emit_nonvlmax_tany_many): New function.
4484 (emit_vlmax_reg_op): Remove.
4485 (emit_len_binop): Ditto.
4486 (emit_index_op): Ditto.
4487 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
4488 (expand_const_vector): Ditto.
4489 (legitimize_move): Ditto.
4490 (sew64_scalar_helper): Ditto.
4491 (expand_tuple_move): Ditto.
4492 (expand_vector_init_insert_elems): Ditto.
4493 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
4494 * config/riscv/vector.md: Ditto.
4496 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4499 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
4500 and constraint for operand 0.
4501 (add_vec_concat_subst_be): Likewise.
4503 2023-05-23 Richard Biener <rguenther@suse.de>
4505 PR tree-optimization/109849
4506 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
4507 and use that to determine what to hoist.
4509 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
4511 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
4512 specific treatment for bit-fields only if they have an integral type
4513 and filter out non-integral bit-fields that do not start and end on
4516 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
4518 PR tree-optimization/109920
4519 * value-range.h (RESIZABLE>::~int_range): Use delete[].
4521 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
4523 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
4524 calcuation of integer vector mode costs to reflect generated
4525 instruction sequences of different integer vector modes and
4526 different target ABIs. Remove "speed" function argument.
4527 (ix86_rtx_costs): Update call for removed function argument.
4528 (ix86_vector_costs::add_stmt_cost): Ditto.
4530 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
4532 * value-range.h (class Value_Range): Implement set_zero,
4533 set_nonzero, and nonzero_p.
4535 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
4537 * config/i386/i386.cc (ix86_multiplication_cost): Add
4538 the cost of a memory read to the cost of V?QImode sequences.
4540 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4542 * config/riscv/riscv-v.cc: Add "m_" prefix.
4544 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4546 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
4547 multiple-rgroup of length.
4548 * tree-vect-stmts.cc (vectorizable_store): Ditto.
4549 (vectorizable_load): Ditto.
4550 * tree-vectorizer.h (vect_get_loop_len): Ditto.
4552 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4554 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
4557 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
4559 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
4560 handling for the case index == count.
4562 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
4565 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
4566 Don't fold to XOR / AND / XOR if just one bit is copied to the
4569 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
4571 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
4572 builtin for bit reversal using brev instruction.
4573 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
4574 NVPTX_BUILTIN_BREVLL.
4575 (nvptx_init_builtins): Define "brev" and "brevll".
4576 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
4577 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
4578 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
4579 section, document __builtin_nvptx_brev{,ll}.
4581 2023-05-21 Jakub Jelinek <jakub@redhat.com>
4583 PR tree-optimization/109505
4584 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
4585 Combine successive equal operations with constants,
4586 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
4587 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
4590 2023-05-21 Andrew Pinski <apinski@marvell.com>
4592 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
4594 2023-05-21 Pan Li <pan2.li@intel.com>
4596 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
4597 rest bool size, aka 2, 4, 8, 16, 32, 64.
4598 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
4599 Register vbool[2|4|8|16|32|64] interpret function.
4600 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
4601 New macro for vbool2_t.
4602 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
4603 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
4604 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
4605 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
4606 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
4607 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
4608 (vint16m1_t): Likewise.
4609 (vint32m1_t): Likewise.
4610 (vint64m1_t): Likewise.
4611 (vuint8m1_t): Likewise.
4612 (vuint16m1_t): Likewise.
4613 (vuint32m1_t): Likewise.
4614 (vuint64m1_t): Likewise.
4615 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
4616 New macro for vbool2_t.
4617 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
4618 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
4619 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
4620 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
4621 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
4622 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
4623 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
4624 vbool2_t interprect to base type.
4625 (bool4_interpret): Likewise.
4626 (bool8_interpret): Likewise.
4627 (bool16_interpret): Likewise.
4628 (bool32_interpret): Likewise.
4629 (bool64_interpret): Likewise.
4631 2023-05-21 Andrew Pinski <apinski@marvell.com>
4633 PR middle-end/109919
4634 * expr.cc (expand_single_bit_test): Don't use the
4635 target for expand_expr.
4637 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
4639 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
4642 2023-05-20 Pan Li <pan2.li@intel.com>
4644 * mode-switching.cc (entity_map): Initialize the array to zero.
4647 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
4650 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
4651 Remove superfluous "parallel" in insn pattern.
4652 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
4653 printing error text to assembly.
4655 2023-05-20 Andrew Pinski <apinski@marvell.com>
4657 * expr.cc (fold_single_bit_test): Rename to ...
4658 (expand_single_bit_test): This and expand directly.
4659 (do_store_flag): Update for the rename function.
4661 2023-05-20 Andrew Pinski <apinski@marvell.com>
4663 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
4664 instead of shift/and.
4666 2023-05-20 Andrew Pinski <apinski@marvell.com>
4668 * expr.cc (fold_single_bit_test): Add an assert
4669 and simplify based on code being NE_EXPR or EQ_EXPR.
4671 2023-05-20 Andrew Pinski <apinski@marvell.com>
4673 * expr.cc (fold_single_bit_test): Take inner and bitnum
4674 instead of arg0 and arg1. Update the code.
4675 (do_store_flag): Don't create a tree when calling
4676 fold_single_bit_test instead just call it with the bitnum
4679 2023-05-20 Andrew Pinski <apinski@marvell.com>
4681 * expr.cc (fold_single_bit_test): Use get_def_for_expr
4682 instead of checking the inner's code.
4684 2023-05-20 Andrew Pinski <apinski@marvell.com>
4686 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
4687 (fold_single_bit_test): This and simplify.
4689 2023-05-20 Andrew Pinski <apinski@marvell.com>
4691 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
4693 (fold_single_bit_test): Likewise.
4694 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
4695 (fold_single_bit_test): Likewise and make static.
4696 * fold-const.h (fold_single_bit_test): Remove declaration.
4698 2023-05-20 Die Li <lidie@eswincomputing.com>
4700 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
4703 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
4705 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
4707 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
4710 * config/riscv/bitmanip.md
4711 (<bitmanip_optab>disi2): Match with any_extend.
4712 (<bitmanip_optab>disi2_sext): New pattern to match
4713 with sign extend using an ANDI instruction.
4715 2023-05-19 Nathan Sidwell <nathan@acm.org>
4718 * opts.h (handle_deferred_dump_options): Declare.
4719 * opts-global.cc (handle_common_deferred_options): Do not handle
4721 (handle_deferred_dump_options): New.
4722 * toplev.cc (toplev::main): Call it after plugin init.
4724 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
4726 * config/riscv/constraints.md (DsS, DsD): Restore agreement
4727 with shiftm1 mode attribute.
4729 2023-05-19 Andrew Pinski <apinski@marvell.com>
4732 * gcc.cc (default_compilers["@c-header"]): Add %w
4733 after the --output-pch.
4735 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
4737 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
4738 to hival, ASHIFT the corresponding regs.
4740 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
4742 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
4744 2023-05-19 Jakub Jelinek <jakub@redhat.com>
4746 PR tree-optimization/105776
4747 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
4748 non-NULL, allow division statement to have a cast as single imm use
4749 rather than comparison/condition.
4750 (match_arith_overflow): In that case remove the cast stmt in addition
4751 to the division statement.
4753 2023-05-19 Jakub Jelinek <jakub@redhat.com>
4755 PR tree-optimization/101856
4756 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
4757 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
4758 support it but umul_highpart_optab does.
4760 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
4762 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
4763 of tree_to_shwi on array indices. Minor tweaks.
4765 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4767 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
4768 * attribs.cc (diag_attr_exclusions): Ditto.
4769 (decl_attributes): Ditto.
4770 (build_type_attribute_qual_variant): Ditto.
4771 * builtins.cc (fold_builtin_carg): Ditto.
4772 (fold_builtin_next_arg): Ditto.
4773 (do_mpc_arg2): Ditto.
4774 * cfgexpand.cc (expand_return): Ditto.
4775 * cgraph.h (decl_in_symtab_p): Ditto.
4776 (symtab_node::get_create): Ditto.
4777 * dwarf2out.cc (base_type_die): Ditto.
4778 (implicit_ptr_descriptor): Ditto.
4779 (gen_array_type_die): Ditto.
4780 (gen_type_die_with_usage): Ditto.
4781 (optimize_location_into_implicit_ptr): Ditto.
4782 * expr.cc (do_store_flag): Ditto.
4783 * fold-const.cc (negate_expr_p): Ditto.
4784 (fold_negate_expr_1): Ditto.
4785 (fold_convert_const): Ditto.
4786 (fold_convert_loc): Ditto.
4787 (constant_boolean_node): Ditto.
4788 (fold_binary_op_with_conditional_arg): Ditto.
4789 (build_fold_addr_expr_with_type_loc): Ditto.
4790 (fold_comparison): Ditto.
4791 (fold_checksum_tree): Ditto.
4792 (tree_unary_nonnegative_warnv_p): Ditto.
4793 (integer_valued_real_unary_p): Ditto.
4794 (fold_read_from_constant_string): Ditto.
4795 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
4796 * gimple-expr.cc (useless_type_conversion_p): Ditto.
4797 (is_gimple_reg): Ditto.
4798 (is_gimple_asm_val): Ditto.
4799 (mark_addressable): Ditto.
4800 * gimple-expr.h (is_gimple_variable): Ditto.
4801 (virtual_operand_p): Ditto.
4802 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
4803 * gimplify.cc (gimplify_bind_expr): Ditto.
4804 (gimplify_return_expr): Ditto.
4805 (gimple_add_padding_init_for_auto_var): Ditto.
4806 (gimplify_addr_expr): Ditto.
4807 (omp_add_variable): Ditto.
4808 (omp_notice_variable): Ditto.
4809 (omp_get_base_pointer): Ditto.
4810 (omp_strip_components_and_deref): Ditto.
4811 (omp_strip_indirections): Ditto.
4812 (omp_accumulate_sibling_list): Ditto.
4813 (omp_build_struct_sibling_lists): Ditto.
4814 (gimplify_adjust_omp_clauses_1): Ditto.
4815 (gimplify_adjust_omp_clauses): Ditto.
4816 (gimplify_omp_for): Ditto.
4817 (goa_lhs_expr_p): Ditto.
4818 (gimplify_one_sizepos): Ditto.
4819 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
4820 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
4821 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
4822 (propagate_controlled_uses): Ditto.
4823 * ipa-sra.cc (type_prevails_p): Ditto.
4824 (scan_expr_access): Ditto.
4825 * optabs-tree.cc (optab_for_tree_code): Ditto.
4826 * toplev.cc (wrapup_global_declaration_1): Ditto.
4827 * trans-mem.cc (transaction_invariant_address_p): Ditto.
4828 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
4829 (verify_gimple_comparison): Ditto.
4830 (verify_gimple_assign_binary): Ditto.
4831 (verify_gimple_assign_single): Ditto.
4832 * tree-complex.cc (get_component_ssa_name): Ditto.
4833 * tree-emutls.cc (lower_emutls_2): Ditto.
4834 * tree-inline.cc (copy_tree_body_r): Ditto.
4835 (estimate_move_cost): Ditto.
4836 (copy_decl_for_dup_finish): Ditto.
4837 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
4838 (note_nonlocal_vla_type): Ditto.
4839 (convert_local_omp_clauses): Ditto.
4840 (remap_vla_decls): Ditto.
4841 (fixup_vla_decls): Ditto.
4842 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
4843 * tree-pretty-print.cc (print_declaration): Ditto.
4844 (print_call_name): Ditto.
4845 * tree-sra.cc (compare_access_positions): Ditto.
4846 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
4847 * tree-ssa-ccp.cc (get_default_value): Ditto.
4848 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
4849 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
4850 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
4851 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
4852 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
4853 * tree-ssa-sink.cc (statement_sink_location): Ditto.
4854 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
4855 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
4856 * tree-ssa-uninit.cc (warn_uninit): Ditto.
4857 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
4858 (non_rewritable_mem_ref_base): Ditto.
4859 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
4860 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
4861 * tree-vect-generic.cc (do_binop): Ditto.
4863 * tree-vect-stmts.cc (vect_init_vector): Ditto.
4864 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
4865 * tree.cc (sign_mask_for): Ditto.
4866 (verify_type_variant): Ditto.
4867 (gimple_canonical_types_compatible_p): Ditto.
4868 (verify_type): Ditto.
4869 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
4870 * var-tracking.cc (prepare_call_arguments): Ditto.
4871 (vt_add_function_parameters): Ditto.
4872 * varasm.cc (decode_addr_const): Ditto.
4874 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4876 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
4877 (lower_reduction_clauses): Ditto.
4878 (lower_send_clauses): Ditto.
4879 (lower_omp_task_reductions): Ditto.
4880 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
4881 (worker_single_copy): Ditto.
4882 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
4883 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
4885 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4887 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
4889 (lto_read_body_or_constructor): Ditto.
4890 * lto-streamer-out.cc (tree_is_indexable): Ditto.
4891 (lto_output_var_decl_ref): Ditto.
4892 (DFS::DFS_write_tree_body): Ditto.
4894 (write_symbol_extension_info): Ditto.
4896 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4898 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
4899 defines from tree.h.
4900 (aarch64_mangle_type): Ditto.
4901 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
4902 (alpha_gimplify_va_arg_1): Ditto.
4903 * config/arc/arc.cc (arc_encode_section_info): Ditto.
4904 (arc_is_aux_reg_p): Ditto.
4905 (arc_is_uncached_mem_p): Ditto.
4906 (arc_handle_aux_attribute): Ditto.
4907 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
4908 (arm_handle_cmse_nonsecure_call): Ditto.
4909 (arm_set_default_type_attributes): Ditto.
4910 (arm_is_segment_info_known): Ditto.
4911 (arm_mangle_type): Ditto.
4912 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
4913 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
4914 (avr_decl_absdata_p): Ditto.
4915 (avr_insert_attributes): Ditto.
4916 (avr_section_type_flags): Ditto.
4917 (avr_encode_section_info): Ditto.
4918 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
4919 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
4920 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
4921 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
4922 (csky_mangle_type): Ditto.
4923 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
4924 * config/darwin.cc (is_objc_metadata): Ditto.
4925 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
4926 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
4927 * config/frv/frv.cc (frv_emit_movsi): Ditto.
4928 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
4929 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
4930 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
4931 * config/i386/i386-expand.cc: Ditto.
4932 * config/i386/i386.cc (type_natural_mode): Ditto.
4933 (ix86_function_arg): Ditto.
4934 (ix86_data_alignment): Ditto.
4935 (ix86_local_alignment): Ditto.
4936 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
4937 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
4938 (i386_pe_type_dllexport_p): Ditto.
4939 (i386_pe_adjust_class_at_definition): Ditto.
4940 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
4941 (i386_pe_binds_local_p): Ditto.
4942 (i386_pe_section_type_flags): Ditto.
4943 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
4944 (ia64_gimplify_va_arg): Ditto.
4945 (ia64_in_small_data_p): Ditto.
4946 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
4947 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
4948 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
4949 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
4950 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
4951 (mcore_encode_section_info): Ditto.
4952 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
4953 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
4954 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
4955 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
4956 (pass_in_memory): Ditto.
4957 (nvptx_generate_vector_shuffle): Ditto.
4958 (nvptx_lockless_update): Ditto.
4959 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
4960 (pa_function_value): Ditto.
4961 (pa_function_arg): Ditto.
4962 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
4963 (TEXT_SPACE_P): Ditto.
4964 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
4965 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
4966 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
4967 (riscv_mangle_type): Ditto.
4968 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
4969 (rl78_addsi3_internal): Ditto.
4970 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
4971 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
4972 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
4973 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
4974 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
4975 (rs6000_function_arg_advance_1): Ditto.
4976 (rs6000_function_arg): Ditto.
4977 (rs6000_pass_by_reference): Ditto.
4978 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
4979 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
4980 (rs6000_set_default_type_attributes): Ditto.
4981 (rs6000_elf_in_small_data_p): Ditto.
4982 (IN_NAMED_SECTION): Ditto.
4983 (rs6000_xcoff_encode_section_info): Ditto.
4984 (rs6000_function_value): Ditto.
4985 (invalid_arg_for_unprototyped_fn): Ditto.
4986 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
4987 (s390_vec_n_elem): Ditto.
4988 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
4989 (s390_function_arg_integer): Ditto.
4990 (s390_return_in_memory): Ditto.
4991 (s390_encode_section_info): Ditto.
4992 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
4993 (sh_function_value): Ditto.
4994 * config/sol2.cc (solaris_insert_attributes): Ditto.
4995 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
4996 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
4997 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
4998 (xstormy16_handle_below100_attribute): Ditto.
4999 * config/v850/v850.cc (v850_encode_section_info): Ditto.
5000 (v850_insert_attributes): Ditto.
5001 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
5002 (visium_return_in_memory): Ditto.
5003 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
5005 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
5007 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
5008 (ix86_expand_vecop_qihi): Add op2vec bool variable.
5009 Do not set REG_EQUAL note.
5010 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
5012 * config/i386/i386.cc (ix86_multiplication_cost): Handle
5013 V4QImode and V8QImode.
5014 * config/i386/mmx.md (mulv8qi3): New expander.
5016 * config/i386/sse.md (mulv8qi3): Remove.
5018 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
5020 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
5022 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
5025 * config.gcc: Use = operator instead of ==.
5027 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
5030 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
5031 * configure.ac: Likewise.
5032 * configure: Regenerate.
5034 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
5036 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
5037 (__ARM_mve_coerce1): Remove.
5038 (__ARM_mve_coerce2): Remove.
5039 (__ARM_mve_coerce3): Remove.
5040 (__ARM_mve_coerce_i_scalar): New.
5041 (__ARM_mve_coerce_s8_ptr): New.
5042 (__ARM_mve_coerce_u8_ptr): New.
5043 (__ARM_mve_coerce_s16_ptr): New.
5044 (__ARM_mve_coerce_u16_ptr): New.
5045 (__ARM_mve_coerce_s32_ptr): New.
5046 (__ARM_mve_coerce_u32_ptr): New.
5047 (__ARM_mve_coerce_s64_ptr): New.
5048 (__ARM_mve_coerce_u64_ptr): New.
5049 (__ARM_mve_coerce_f_scalar): New.
5050 (__ARM_mve_coerce_f16_ptr): New.
5051 (__ARM_mve_coerce_f32_ptr): New.
5052 (__arm_vst4q): Change _coerce_ overloads.
5053 (__arm_vbicq): Change _coerce_ overloads.
5054 (__arm_vld1q): Change _coerce_ overloads.
5055 (__arm_vld1q_z): Change _coerce_ overloads.
5056 (__arm_vld2q): Change _coerce_ overloads.
5057 (__arm_vld4q): Change _coerce_ overloads.
5058 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
5059 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
5060 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
5061 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
5062 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
5063 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
5064 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
5065 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
5066 (__arm_vst1q_p): Change _coerce_ overloads.
5067 (__arm_vst2q): Change _coerce_ overloads.
5068 (__arm_vst1q): Change _coerce_ overloads.
5069 (__arm_vstrhq): Change _coerce_ overloads.
5070 (__arm_vstrhq_p): Change _coerce_ overloads.
5071 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
5072 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
5073 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
5074 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
5075 (__arm_vstrwq_p): Change _coerce_ overloads.
5076 (__arm_vstrwq): Change _coerce_ overloads.
5077 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
5078 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
5079 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
5080 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
5081 (__arm_vsetq_lane): Change _coerce_ overloads.
5082 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
5083 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
5084 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
5085 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
5086 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
5087 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
5088 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
5089 (__arm_vidupq_x_u8): Change _coerce_ overloads.
5090 (__arm_vddupq_x_u8): Change _coerce_ overloads.
5091 (__arm_vidupq_x_u16): Change _coerce_ overloads.
5092 (__arm_vddupq_x_u16): Change _coerce_ overloads.
5093 (__arm_vidupq_x_u32): Change _coerce_ overloads.
5094 (__arm_vddupq_x_u32): Change _coerce_ overloads.
5095 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
5096 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
5097 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
5098 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
5099 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
5100 (__arm_vidupq_u16): Change _coerce_ overloads.
5101 (__arm_vidupq_u32): Change _coerce_ overloads.
5102 (__arm_vidupq_u8): Change _coerce_ overloads.
5103 (__arm_vddupq_u16): Change _coerce_ overloads.
5104 (__arm_vddupq_u32): Change _coerce_ overloads.
5105 (__arm_vddupq_u8): Change _coerce_ overloads.
5106 (__arm_viwdupq_m): Change _coerce_ overloads.
5107 (__arm_viwdupq_u16): Change _coerce_ overloads.
5108 (__arm_viwdupq_u32): Change _coerce_ overloads.
5109 (__arm_viwdupq_u8): Change _coerce_ overloads.
5110 (__arm_vdwdupq_m): Change _coerce_ overloads.
5111 (__arm_vdwdupq_u16): Change _coerce_ overloads.
5112 (__arm_vdwdupq_u32): Change _coerce_ overloads.
5113 (__arm_vdwdupq_u8): Change _coerce_ overloads.
5114 (__arm_vstrbq): Change _coerce_ overloads.
5115 (__arm_vstrbq_p): Change _coerce_ overloads.
5116 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
5117 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
5118 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
5119 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
5120 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
5122 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
5124 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
5127 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
5129 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
5130 (__arm_vadcq_u32): Likewise.
5131 (__arm_vadcq_m_s32): Likewise.
5132 (__arm_vadcq_m_u32): Likewise.
5133 (__arm_vsbcq_s32): Likewise.
5134 (__arm_vsbcq_u32): Likewise.
5135 (__arm_vsbcq_m_s32): Likewise.
5136 (__arm_vsbcq_m_u32): Likewise.
5137 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
5139 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
5141 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
5142 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
5143 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
5144 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
5145 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
5146 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
5147 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
5148 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
5149 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
5150 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
5151 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
5152 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
5153 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
5154 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
5155 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
5156 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
5157 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
5158 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
5159 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
5160 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
5161 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
5162 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
5163 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
5164 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
5165 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
5166 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
5167 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
5168 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
5169 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
5170 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
5171 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
5172 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
5173 (mve_vorrq_m_f<mode>)
5174 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
5175 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
5176 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
5177 capitalization in the emitted asm.
5179 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
5181 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
5183 (Ri): Move constraint definition from predicates.md.
5184 (Rl): Define new constraint.
5185 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
5187 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
5188 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
5189 op 2. Fix asm output spacing.
5190 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
5191 * config/arm/predicates.md (Ri) Move constraint to constraints.md
5192 (mve_vldrd_immediate): Move it from
5194 (mve_vstrw_immediate): New predicate.
5196 2023-05-18 Pan Li <pan2.li@intel.com>
5197 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5198 Kito Cheng <kito.cheng@sifive.com>
5199 Richard Biener <rguenther@suse.de>
5200 Richard Sandiford <richard.sandiford@arm.com>
5202 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
5203 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
5204 (struct table_elt): Extend machine_mode to 16 bits.
5205 (struct set): Ditto.
5206 * genmodes.cc (emit_mode_wider): Extend type from char to short.
5207 (emit_mode_complex): Ditto.
5208 (emit_mode_inner): Ditto.
5209 (emit_class_narrowest_mode): Ditto.
5210 * genopinit.cc (main): Extend the machine_mode limit.
5211 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
5212 re-ordered the struct fields for padding.
5213 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
5214 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
5215 (get_mode_alignment): Extend type from char to short.
5216 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
5217 removed the ATTRIBUTE_PACKED.
5218 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
5219 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
5220 m_kind to 2 bits and remove m_spare.
5221 * rtl.h (RTX_CODE_BITSIZE): New macro.
5222 (struct rtx_def): Swap both the bit size and location between the
5223 rtx_code and the machine_mode.
5224 (subreg_shape::unique_id): Extend the machine_mode limit.
5225 * rtlanal.h: Extend machine_mode to 16 bits.
5226 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
5227 bits and re-ordered the struct fields for padding.
5228 (struct tree_decl_common): Extend machine_mode to 16 bits.
5230 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
5232 * genrecog.cc (print_nonbool_test): Fix type error of
5233 switch (SUBREG_BYTE (op))'.
5235 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
5237 * common/config/riscv/riscv-common.cc: Remove
5238 trailing spaces on lines.
5239 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
5240 * config/riscv/riscv.h (enum reg_class): Likewise.
5241 * config/riscv/riscv.md: Likewise.
5243 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
5245 * config/pa/pa.md (clear_cache): New.
5247 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
5249 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
5250 parenthesis. Fix misnamed index entry.
5251 <concept>: Fix misnamed index entry.
5253 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
5255 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
5257 (*<optab>si3_mask, *<optab>di3_mask): Here.
5258 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
5259 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
5261 (*<bitmanip_optab>si3_sext_mask): Likewise.
5262 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
5263 and const_di_mask_operand.
5264 (bitmanip_rotate): New iterator.
5265 (bitmanip_optab): Add rotates.
5266 * config/riscv/predicates.md (const_si_mask_operand): Renamed
5267 from const31_operand. Generalize to handle more mask constants.
5268 (const_di_mask_operand): Similarly.
5270 2023-05-17 Jakub Jelinek <jakub@redhat.com>
5273 * config/i386/i386-builtin-types.def (FLOAT128): Use
5274 float128t_type_node rather than float128_type_node.
5276 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
5278 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
5279 FP_CONTRACT_FAST (no functional change).
5281 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
5283 * config/i386/i386.cc (ix86_multiplication_cost): Correct
5284 calcuation of integer vector mode costs to reflect generated
5285 instruction sequences of different integer vector modes and
5286 different target ABIs.
5288 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5290 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
5291 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
5292 (riscv_mode_needed): Ditto.
5293 (riscv_mode_after): Ditto.
5294 (riscv_mode_entry): Ditto.
5295 (riscv_mode_exit): Ditto.
5296 (riscv_mode_priority): Ditto.
5297 (TARGET_MODE_EMIT): New target hook.
5298 (TARGET_MODE_NEEDED): Ditto.
5299 (TARGET_MODE_AFTER): Ditto.
5300 (TARGET_MODE_ENTRY): Ditto.
5301 (TARGET_MODE_EXIT): Ditto.
5302 (TARGET_MODE_PRIORITY): Ditto.
5303 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
5304 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
5305 * config/riscv/riscv.md: Add csrwvxrm.
5306 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
5307 (vxrmsi): New pattern.
5309 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5311 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
5312 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
5313 (struct narrow_alu_def): Ditto.
5314 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
5315 (function_expander::use_exact_insn): Ditto.
5316 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
5317 (function_base::has_rounding_mode_operand_p): New function.
5319 2023-05-17 Andrew Pinski <apinski@marvell.com>
5321 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
5322 against 0 instead of calling integer_zerop.
5324 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5326 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
5327 (DEF_RVV_VXRM_ENUM): New macro.
5328 (handle_pragma_vector): Add vxrm enum register.
5329 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
5335 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
5337 * value-range.h (Value_Range::operator=): New.
5339 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
5341 * value-range.cc (vrange::operator=): Add a stub to copy
5343 * value-range.h (is_a <unsupported_range>): New.
5344 (Value_Range::operator=): Support copying unsupported ranges.
5346 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
5348 * data-streamer-in.cc (streamer_read_real_value): New.
5349 (streamer_read_value_range): New.
5350 * data-streamer-out.cc (streamer_write_real_value): New.
5351 (streamer_write_vrange): New.
5352 * data-streamer.h (streamer_write_vrange): New.
5353 (streamer_read_value_range): New.
5355 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
5358 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
5359 is ignored for a fixed underlying type.
5360 (C++ Dialect Options): Likewise for -fstrict-enums.
5362 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
5364 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
5367 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5369 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
5371 (s390_atomic_align_for_mode): New.
5373 2023-05-17 Jakub Jelinek <jakub@redhat.com>
5375 * wide-int.cc (wi::from_array): Add missing closing paren in function
5378 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
5380 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
5381 suggested unroll factor once the previous analysis fails.
5383 2023-05-17 Pan Li <pan2.li@intel.com>
5385 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
5387 (main): Add bool1 to the type indexer.
5388 * config/riscv/riscv-vector-builtins-functions.def
5389 (vreinterpret): Register vbool1 interpret function.
5390 * config/riscv/riscv-vector-builtins-types.def
5391 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
5392 (vint8m1_t): Add the type to bool1_interpret_ops.
5393 (vint16m1_t): Ditto.
5394 (vint32m1_t): Ditto.
5395 (vint64m1_t): Ditto.
5396 (vuint8m1_t): Ditto.
5397 (vuint16m1_t): Ditto.
5398 (vuint32m1_t): Ditto.
5399 (vuint64m1_t): Ditto.
5400 * config/riscv/riscv-vector-builtins.cc
5401 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
5402 (required_extensions_p): Add bool1 interpret case.
5403 * config/riscv/riscv-vector-builtins.def
5404 (bool1_interpret): Add bool1 interpret to base type.
5405 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
5406 with VB dest for vreinterpret.
5408 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
5411 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
5412 constants through "lis; xoris".
5414 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
5416 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
5417 default rs6000 target pass for O2 and above.
5418 * doc/invoke.texi: Document -free
5420 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
5422 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
5423 Fix wrong select_kind...
5425 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5427 * config/s390/s390-protos.h (s390_expand_setmem): Change
5429 * config/s390/s390.cc (s390_expand_setmem): For memset's less
5430 than or equal to 256 byte do not perform a libc call.
5431 * config/s390/s390.md: Change expander into a version which
5434 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5436 * config/s390/s390-protos.h (s390_expand_movmem): New.
5437 * config/s390/s390.cc (s390_expand_movmem): New.
5438 * config/s390/s390.md (movmem<mode>): New.
5442 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5444 * config/s390/s390-protos.h (s390_expand_cpymem): Change
5446 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
5447 than or equal to 256 byte do not perform a libc call.
5448 (s390_expand_insv): Adapt new function signature of
5450 * config/s390/s390.md: Change expander into a version which
5453 2023-05-16 Andrew Pinski <apinski@marvell.com>
5455 PR tree-optimization/109424
5456 * match.pd: Add patterns for min/max of zero_one_valued
5459 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5461 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
5462 * config/riscv/riscv-vector-builtins.cc
5463 (function_expander::use_ternop_insn): Add default rounding mode.
5464 (function_expander::use_widen_ternop_insn): Ditto.
5465 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
5466 (riscv_hard_regno_mode_ok): Ditto.
5467 (riscv_conditional_register_usage): Ditto.
5468 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
5470 (RISCV_DWARF_FRM): Ditto.
5471 * config/riscv/riscv.md: Ditto.
5472 * config/riscv/vector-iterators.md: split no frm and has frm operations.
5473 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
5474 (@pred_<optab><mode>): Ditto.
5476 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
5478 PR tree-optimization/109695
5479 * value-range.cc (irange::operator=): Resize range.
5480 (irange::union_): Same.
5481 (irange::intersect): Same.
5482 (irange::invert): Same.
5483 (int_range_max): Default to 3 sub-ranges and resize as needed.
5484 * value-range.h (irange::maybe_resize): New.
5486 (int_range::int_range): Adjust for resizing.
5487 (int_range::operator=): Same.
5489 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
5491 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
5493 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
5496 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5498 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
5499 * config/riscv/riscv-vector-builtins.cc
5500 (function_expander::use_exact_insn): Add default rounding mode operand.
5501 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
5502 (riscv_hard_regno_mode_ok): Ditto.
5503 (riscv_conditional_register_usage): Ditto.
5504 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
5505 (VXRM_REG_P): Ditto.
5506 (RISCV_DWARF_VXRM): Ditto.
5507 * config/riscv/riscv.md: Ditto.
5508 * config/riscv/vector.md: Ditto
5510 2023-05-15 Pan Li <pan2.li@intel.com>
5512 * optabs.cc (maybe_gen_insn): Add case to generate instruction
5513 that has 11 operands.
5515 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5517 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
5518 logic for vector modes.
5520 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5523 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
5524 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
5525 (aarch64_cmtst<mode>): Rename to...
5526 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
5527 (*aarch64_cmtst_same_<mode>): Rename to...
5528 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
5529 (*aarch64_cmtstdi): Rename to...
5530 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
5531 (aarch64_fac<optab><mode>): Rename to...
5532 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
5534 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5537 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
5538 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
5540 2023-05-15 Pan Li <pan2.li@intel.com>
5541 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5542 kito-cheng <kito.cheng@sifive.com>
5544 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
5545 deciding the mode is constant or not.
5546 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
5548 2023-05-15 Richard Biener <rguenther@suse.de>
5550 PR tree-optimization/109848
5551 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
5552 TARGET_MEM_REF address preparation before the store, not
5555 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5557 * config/riscv/riscv.cc
5558 (riscv_vectorize_preferred_vector_alignment): New function.
5559 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
5561 2023-05-14 Andrew Pinski <apinski@marvell.com>
5563 PR tree-optimization/109829
5564 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
5566 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
5569 * config/i386/i386.cc: Revert the 2023-05-11 change.
5570 (ix86_widen_mult_cost): Return high value instead of
5571 ICEing for unsupported modes.
5573 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
5575 * config/i386/i386.cc (x86_function_profiler): Take
5576 ix86_direct_extern_access into account when generating calls
5579 2023-05-14 Pan Li <pan2.li@intel.com>
5581 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
5582 Refactor the or pattern to switch cases.
5584 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5586 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
5587 aarch64_expand_vector_init to this, and remove interleaving case.
5588 Recursively call aarch64_expand_vector_init_fallback, instead of
5589 aarch64_expand_vector_init.
5590 (aarch64_unzip_vector_init): New function.
5591 (aarch64_expand_vector_init): Likewise.
5593 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
5595 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
5596 Pull out function call from the gcc_assert.
5598 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
5600 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
5601 (policy_to_str): New.
5602 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
5604 2023-05-13 Andrew Pinski <apinski@marvell.com>
5606 PR tree-optimization/109834
5607 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
5608 (popcount(rotate(x,y))->popcount(x)): Likewise.
5610 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
5612 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
5613 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
5614 gen_extend_insn to generate zero/sign extension instructions.
5616 (ix86_expand_vecop_qihi): Initialize interleave functions
5617 for MULT code only. Fix comments.
5619 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
5622 * config/i386/mmx.md (mulv2si3): Remove expander.
5623 (mulv2si3): Rename insn pattern from *mulv2si.
5625 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
5628 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
5629 '!lto_stream_offload_p'.
5631 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
5632 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5635 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
5636 (local_avl_compatible_p): New.
5637 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
5638 for LCM, rewrite as a backward algorithm.
5639 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
5640 interface, handle a BB at once.
5642 2023-05-12 Richard Biener <rguenther@suse.de>
5644 PR tree-optimization/64731
5645 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
5646 handle TARGET_MEM_REF destinations of stores from vector
5649 2023-05-12 Richard Biener <rguenther@suse.de>
5651 PR tree-optimization/109791
5652 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
5654 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
5657 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5659 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
5660 * config/arm/arm-mve-builtins-base.def (vsriq): New.
5661 * config/arm/arm-mve-builtins-base.h (vsriq): New.
5662 * config/arm/arm-mve-builtins.cc
5663 (function_instance::has_inactive_argument): Handle vsriq.
5664 * config/arm/arm_mve.h (vsriq): Remove.
5666 (vsriq_n_u8): Remove.
5667 (vsriq_n_s8): Remove.
5668 (vsriq_n_u16): Remove.
5669 (vsriq_n_s16): Remove.
5670 (vsriq_n_u32): Remove.
5671 (vsriq_n_s32): Remove.
5672 (vsriq_m_n_s8): Remove.
5673 (vsriq_m_n_u8): Remove.
5674 (vsriq_m_n_s16): Remove.
5675 (vsriq_m_n_u16): Remove.
5676 (vsriq_m_n_s32): Remove.
5677 (vsriq_m_n_u32): Remove.
5678 (__arm_vsriq_n_u8): Remove.
5679 (__arm_vsriq_n_s8): Remove.
5680 (__arm_vsriq_n_u16): Remove.
5681 (__arm_vsriq_n_s16): Remove.
5682 (__arm_vsriq_n_u32): Remove.
5683 (__arm_vsriq_n_s32): Remove.
5684 (__arm_vsriq_m_n_s8): Remove.
5685 (__arm_vsriq_m_n_u8): Remove.
5686 (__arm_vsriq_m_n_s16): Remove.
5687 (__arm_vsriq_m_n_u16): Remove.
5688 (__arm_vsriq_m_n_s32): Remove.
5689 (__arm_vsriq_m_n_u32): Remove.
5690 (__arm_vsriq): Remove.
5691 (__arm_vsriq_m): Remove.
5693 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5695 * config/arm/iterators.md (mve_insn): Add vsri.
5696 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
5697 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
5698 (mve_vsriq_m_n_<supf><mode>): Rename into ...
5699 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5701 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5703 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
5704 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
5706 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5708 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
5709 * config/arm/arm-mve-builtins-base.def (vsliq): New.
5710 * config/arm/arm-mve-builtins-base.h (vsliq): New.
5711 * config/arm/arm-mve-builtins.cc
5712 (function_instance::has_inactive_argument): Handle vsliq.
5713 * config/arm/arm_mve.h (vsliq): Remove.
5715 (vsliq_n_u8): Remove.
5716 (vsliq_n_s8): Remove.
5717 (vsliq_n_u16): Remove.
5718 (vsliq_n_s16): Remove.
5719 (vsliq_n_u32): Remove.
5720 (vsliq_n_s32): Remove.
5721 (vsliq_m_n_s8): Remove.
5722 (vsliq_m_n_s32): Remove.
5723 (vsliq_m_n_s16): Remove.
5724 (vsliq_m_n_u8): Remove.
5725 (vsliq_m_n_u32): Remove.
5726 (vsliq_m_n_u16): Remove.
5727 (__arm_vsliq_n_u8): Remove.
5728 (__arm_vsliq_n_s8): Remove.
5729 (__arm_vsliq_n_u16): Remove.
5730 (__arm_vsliq_n_s16): Remove.
5731 (__arm_vsliq_n_u32): Remove.
5732 (__arm_vsliq_n_s32): Remove.
5733 (__arm_vsliq_m_n_s8): Remove.
5734 (__arm_vsliq_m_n_s32): Remove.
5735 (__arm_vsliq_m_n_s16): Remove.
5736 (__arm_vsliq_m_n_u8): Remove.
5737 (__arm_vsliq_m_n_u32): Remove.
5738 (__arm_vsliq_m_n_u16): Remove.
5739 (__arm_vsliq): Remove.
5740 (__arm_vsliq_m): Remove.
5742 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5744 * config/arm/iterators.md (mve_insn>): Add vsli.
5745 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
5746 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5747 (mve_vsliq_m_n_<supf><mode>): Rename into ...
5748 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5750 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5752 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
5753 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
5755 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5757 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
5758 * config/arm/arm-mve-builtins-base.def (vpselq): New.
5759 * config/arm/arm-mve-builtins-base.h (vpselq): New.
5760 * config/arm/arm_mve.h (vpselq): Remove.
5761 (vpselq_u8): Remove.
5762 (vpselq_s8): Remove.
5763 (vpselq_u16): Remove.
5764 (vpselq_s16): Remove.
5765 (vpselq_u32): Remove.
5766 (vpselq_s32): Remove.
5767 (vpselq_u64): Remove.
5768 (vpselq_s64): Remove.
5769 (vpselq_f16): Remove.
5770 (vpselq_f32): Remove.
5771 (__arm_vpselq_u8): Remove.
5772 (__arm_vpselq_s8): Remove.
5773 (__arm_vpselq_u16): Remove.
5774 (__arm_vpselq_s16): Remove.
5775 (__arm_vpselq_u32): Remove.
5776 (__arm_vpselq_s32): Remove.
5777 (__arm_vpselq_u64): Remove.
5778 (__arm_vpselq_s64): Remove.
5779 (__arm_vpselq_f16): Remove.
5780 (__arm_vpselq_f32): Remove.
5781 (__arm_vpselq): Remove.
5783 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5785 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
5786 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
5788 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5790 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
5792 * config/arm/iterators.md (MVE_VPSELQ_F): New.
5793 (mve_insn): Add vpsel.
5794 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
5795 (@mve_<mve_insn>q_<supf><mode>): ... this.
5796 (@mve_vpselq_f<mode>): Rename into ...
5797 (@mve_<mve_insn>q_f<mode>): ... this.
5799 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5801 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
5802 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
5803 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
5804 * config/arm/arm-mve-builtins.cc
5805 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
5807 * config/arm/arm_mve.h (vfmaq): Remove.
5813 (vfmaq_f16): Remove.
5814 (vfmaq_n_f16): Remove.
5815 (vfmasq_n_f16): Remove.
5816 (vfmsq_f16): Remove.
5817 (vfmaq_f32): Remove.
5818 (vfmaq_n_f32): Remove.
5819 (vfmasq_n_f32): Remove.
5820 (vfmsq_f32): Remove.
5821 (vfmaq_m_f32): Remove.
5822 (vfmaq_m_f16): Remove.
5823 (vfmaq_m_n_f32): Remove.
5824 (vfmaq_m_n_f16): Remove.
5825 (vfmasq_m_n_f32): Remove.
5826 (vfmasq_m_n_f16): Remove.
5827 (vfmsq_m_f32): Remove.
5828 (vfmsq_m_f16): Remove.
5829 (__arm_vfmaq_f16): Remove.
5830 (__arm_vfmaq_n_f16): Remove.
5831 (__arm_vfmasq_n_f16): Remove.
5832 (__arm_vfmsq_f16): Remove.
5833 (__arm_vfmaq_f32): Remove.
5834 (__arm_vfmaq_n_f32): Remove.
5835 (__arm_vfmasq_n_f32): Remove.
5836 (__arm_vfmsq_f32): Remove.
5837 (__arm_vfmaq_m_f32): Remove.
5838 (__arm_vfmaq_m_f16): Remove.
5839 (__arm_vfmaq_m_n_f32): Remove.
5840 (__arm_vfmaq_m_n_f16): Remove.
5841 (__arm_vfmasq_m_n_f32): Remove.
5842 (__arm_vfmasq_m_n_f16): Remove.
5843 (__arm_vfmsq_m_f32): Remove.
5844 (__arm_vfmsq_m_f16): Remove.
5845 (__arm_vfmaq): Remove.
5846 (__arm_vfmasq): Remove.
5847 (__arm_vfmsq): Remove.
5848 (__arm_vfmaq_m): Remove.
5849 (__arm_vfmasq_m): Remove.
5850 (__arm_vfmsq_m): Remove.
5852 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5854 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
5856 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
5857 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
5858 (mve_insn): Add vfma, vfmas, vfms.
5859 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
5861 (@mve_<mve_insn>q_f<mode>): ... this.
5862 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
5863 (@mve_<mve_insn>q_n_f<mode>): ... this.
5864 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
5865 @mve_<mve_insn>q_m_f<mode>.
5866 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
5867 @mve_<mve_insn>q_m_n_f<mode>.
5869 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5871 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
5872 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
5874 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5876 * config/arm/arm-mve-builtins-base.cc
5877 (FUNCTION_WITH_RTX_M_N_NO_F): New.
5879 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
5880 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
5881 * config/arm/arm_mve.h (vmvnq): Remove.
5885 (vmvnq_s16): Remove.
5886 (vmvnq_s32): Remove.
5887 (vmvnq_n_s16): Remove.
5888 (vmvnq_n_s32): Remove.
5890 (vmvnq_u16): Remove.
5891 (vmvnq_u32): Remove.
5892 (vmvnq_n_u16): Remove.
5893 (vmvnq_n_u32): Remove.
5894 (vmvnq_m_u8): Remove.
5895 (vmvnq_m_s8): Remove.
5896 (vmvnq_m_u16): Remove.
5897 (vmvnq_m_s16): Remove.
5898 (vmvnq_m_u32): Remove.
5899 (vmvnq_m_s32): Remove.
5900 (vmvnq_m_n_s16): Remove.
5901 (vmvnq_m_n_u16): Remove.
5902 (vmvnq_m_n_s32): Remove.
5903 (vmvnq_m_n_u32): Remove.
5904 (vmvnq_x_s8): Remove.
5905 (vmvnq_x_s16): Remove.
5906 (vmvnq_x_s32): Remove.
5907 (vmvnq_x_u8): Remove.
5908 (vmvnq_x_u16): Remove.
5909 (vmvnq_x_u32): Remove.
5910 (vmvnq_x_n_s16): Remove.
5911 (vmvnq_x_n_s32): Remove.
5912 (vmvnq_x_n_u16): Remove.
5913 (vmvnq_x_n_u32): Remove.
5914 (__arm_vmvnq_s8): Remove.
5915 (__arm_vmvnq_s16): Remove.
5916 (__arm_vmvnq_s32): Remove.
5917 (__arm_vmvnq_n_s16): Remove.
5918 (__arm_vmvnq_n_s32): Remove.
5919 (__arm_vmvnq_u8): Remove.
5920 (__arm_vmvnq_u16): Remove.
5921 (__arm_vmvnq_u32): Remove.
5922 (__arm_vmvnq_n_u16): Remove.
5923 (__arm_vmvnq_n_u32): Remove.
5924 (__arm_vmvnq_m_u8): Remove.
5925 (__arm_vmvnq_m_s8): Remove.
5926 (__arm_vmvnq_m_u16): Remove.
5927 (__arm_vmvnq_m_s16): Remove.
5928 (__arm_vmvnq_m_u32): Remove.
5929 (__arm_vmvnq_m_s32): Remove.
5930 (__arm_vmvnq_m_n_s16): Remove.
5931 (__arm_vmvnq_m_n_u16): Remove.
5932 (__arm_vmvnq_m_n_s32): Remove.
5933 (__arm_vmvnq_m_n_u32): Remove.
5934 (__arm_vmvnq_x_s8): Remove.
5935 (__arm_vmvnq_x_s16): Remove.
5936 (__arm_vmvnq_x_s32): Remove.
5937 (__arm_vmvnq_x_u8): Remove.
5938 (__arm_vmvnq_x_u16): Remove.
5939 (__arm_vmvnq_x_u32): Remove.
5940 (__arm_vmvnq_x_n_s16): Remove.
5941 (__arm_vmvnq_x_n_s32): Remove.
5942 (__arm_vmvnq_x_n_u16): Remove.
5943 (__arm_vmvnq_x_n_u32): Remove.
5944 (__arm_vmvnq): Remove.
5945 (__arm_vmvnq_m): Remove.
5946 (__arm_vmvnq_x): Remove.
5948 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5950 * config/arm/iterators.md (mve_insn): Add vmvn.
5951 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
5952 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5953 (mve_vmvnq_m_<supf><mode>): Rename into ...
5954 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5955 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
5956 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5958 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5960 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
5961 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
5963 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5965 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
5966 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
5967 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
5968 * config/arm/arm_mve.h (vbrsrq): Remove.
5971 (vbrsrq_n_f16): Remove.
5972 (vbrsrq_n_f32): Remove.
5973 (vbrsrq_n_u8): Remove.
5974 (vbrsrq_n_s8): Remove.
5975 (vbrsrq_n_u16): Remove.
5976 (vbrsrq_n_s16): Remove.
5977 (vbrsrq_n_u32): Remove.
5978 (vbrsrq_n_s32): Remove.
5979 (vbrsrq_m_n_s8): Remove.
5980 (vbrsrq_m_n_s32): Remove.
5981 (vbrsrq_m_n_s16): Remove.
5982 (vbrsrq_m_n_u8): Remove.
5983 (vbrsrq_m_n_u32): Remove.
5984 (vbrsrq_m_n_u16): Remove.
5985 (vbrsrq_m_n_f32): Remove.
5986 (vbrsrq_m_n_f16): Remove.
5987 (vbrsrq_x_n_s8): Remove.
5988 (vbrsrq_x_n_s16): Remove.
5989 (vbrsrq_x_n_s32): Remove.
5990 (vbrsrq_x_n_u8): Remove.
5991 (vbrsrq_x_n_u16): Remove.
5992 (vbrsrq_x_n_u32): Remove.
5993 (vbrsrq_x_n_f16): Remove.
5994 (vbrsrq_x_n_f32): Remove.
5995 (__arm_vbrsrq_n_u8): Remove.
5996 (__arm_vbrsrq_n_s8): Remove.
5997 (__arm_vbrsrq_n_u16): Remove.
5998 (__arm_vbrsrq_n_s16): Remove.
5999 (__arm_vbrsrq_n_u32): Remove.
6000 (__arm_vbrsrq_n_s32): Remove.
6001 (__arm_vbrsrq_m_n_s8): Remove.
6002 (__arm_vbrsrq_m_n_s32): Remove.
6003 (__arm_vbrsrq_m_n_s16): Remove.
6004 (__arm_vbrsrq_m_n_u8): Remove.
6005 (__arm_vbrsrq_m_n_u32): Remove.
6006 (__arm_vbrsrq_m_n_u16): Remove.
6007 (__arm_vbrsrq_x_n_s8): Remove.
6008 (__arm_vbrsrq_x_n_s16): Remove.
6009 (__arm_vbrsrq_x_n_s32): Remove.
6010 (__arm_vbrsrq_x_n_u8): Remove.
6011 (__arm_vbrsrq_x_n_u16): Remove.
6012 (__arm_vbrsrq_x_n_u32): Remove.
6013 (__arm_vbrsrq_n_f16): Remove.
6014 (__arm_vbrsrq_n_f32): Remove.
6015 (__arm_vbrsrq_m_n_f32): Remove.
6016 (__arm_vbrsrq_m_n_f16): Remove.
6017 (__arm_vbrsrq_x_n_f16): Remove.
6018 (__arm_vbrsrq_x_n_f32): Remove.
6019 (__arm_vbrsrq): Remove.
6020 (__arm_vbrsrq_m): Remove.
6021 (__arm_vbrsrq_x): Remove.
6023 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6025 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
6026 (mve_insn): Add vbrsr.
6027 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
6028 (@mve_<mve_insn>q_n_f<mode>): ... this.
6029 (mve_vbrsrq_n_<supf><mode>): Rename into ...
6030 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6031 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
6032 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6033 (mve_vbrsrq_m_n_f<mode>): Rename into ...
6034 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
6036 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6038 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
6039 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
6041 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6043 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
6044 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
6045 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
6046 * config/arm/arm_mve.h (vqshluq): Remove.
6047 (vqshluq_m): Remove.
6048 (vqshluq_n_s8): Remove.
6049 (vqshluq_n_s16): Remove.
6050 (vqshluq_n_s32): Remove.
6051 (vqshluq_m_n_s8): Remove.
6052 (vqshluq_m_n_s16): Remove.
6053 (vqshluq_m_n_s32): Remove.
6054 (__arm_vqshluq_n_s8): Remove.
6055 (__arm_vqshluq_n_s16): Remove.
6056 (__arm_vqshluq_n_s32): Remove.
6057 (__arm_vqshluq_m_n_s8): Remove.
6058 (__arm_vqshluq_m_n_s16): Remove.
6059 (__arm_vqshluq_m_n_s32): Remove.
6060 (__arm_vqshluq): Remove.
6061 (__arm_vqshluq_m): Remove.
6063 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6065 * config/arm/iterators.md (mve_insn): Add vqshlu.
6066 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
6067 (VQSHLUQ_M_N, VQSHLUQ_N): New.
6068 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
6069 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6070 (mve_vqshluq_m_n_s<mode>): Change name into ...
6071 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6073 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6075 * config/arm/arm-mve-builtins-shapes.cc
6076 (binary_lshift_unsigned): New.
6077 * config/arm/arm-mve-builtins-shapes.h
6078 (binary_lshift_unsigned): New.
6080 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6082 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
6083 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
6084 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
6085 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
6086 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
6087 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
6088 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
6089 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
6090 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
6091 (vrmlaldavhaxq): Remove.
6092 (vrmlsldavhaq): Remove.
6093 (vrmlsldavhaxq): Remove.
6094 (vrmlaldavhaq_p): Remove.
6095 (vrmlaldavhaxq_p): Remove.
6096 (vrmlsldavhaq_p): Remove.
6097 (vrmlsldavhaxq_p): Remove.
6098 (vrmlaldavhaq_s32): Remove.
6099 (vrmlaldavhaq_u32): Remove.
6100 (vrmlaldavhaxq_s32): Remove.
6101 (vrmlsldavhaq_s32): Remove.
6102 (vrmlsldavhaxq_s32): Remove.
6103 (vrmlaldavhaq_p_s32): Remove.
6104 (vrmlaldavhaq_p_u32): Remove.
6105 (vrmlaldavhaxq_p_s32): Remove.
6106 (vrmlsldavhaq_p_s32): Remove.
6107 (vrmlsldavhaxq_p_s32): Remove.
6108 (__arm_vrmlaldavhaq_s32): Remove.
6109 (__arm_vrmlaldavhaq_u32): Remove.
6110 (__arm_vrmlaldavhaxq_s32): Remove.
6111 (__arm_vrmlsldavhaq_s32): Remove.
6112 (__arm_vrmlsldavhaxq_s32): Remove.
6113 (__arm_vrmlaldavhaq_p_s32): Remove.
6114 (__arm_vrmlaldavhaq_p_u32): Remove.
6115 (__arm_vrmlaldavhaxq_p_s32): Remove.
6116 (__arm_vrmlsldavhaq_p_s32): Remove.
6117 (__arm_vrmlsldavhaxq_p_s32): Remove.
6118 (__arm_vrmlaldavhaq): Remove.
6119 (__arm_vrmlaldavhaxq): Remove.
6120 (__arm_vrmlsldavhaq): Remove.
6121 (__arm_vrmlsldavhaxq): Remove.
6122 (__arm_vrmlaldavhaq_p): Remove.
6123 (__arm_vrmlaldavhaxq_p): Remove.
6124 (__arm_vrmlsldavhaq_p): Remove.
6125 (__arm_vrmlsldavhaxq_p): Remove.
6127 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6129 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
6130 (MVE_VRMLxLDAVHAxQ_P): New.
6131 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
6133 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
6134 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
6136 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
6137 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
6138 (mve_vrmlsldavhaq_sv4si): Merge into ...
6139 (@mve_<mve_insn>q_<supf>v4si): ... this.
6140 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
6141 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
6142 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
6143 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
6145 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6147 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
6148 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
6150 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
6151 * config/arm/arm_mve.h (vqdmulltq): Remove.
6152 (vqdmullbq): Remove.
6153 (vqdmullbq_m): Remove.
6154 (vqdmulltq_m): Remove.
6155 (vqdmulltq_s16): Remove.
6156 (vqdmulltq_n_s16): Remove.
6157 (vqdmullbq_s16): Remove.
6158 (vqdmullbq_n_s16): Remove.
6159 (vqdmulltq_s32): Remove.
6160 (vqdmulltq_n_s32): Remove.
6161 (vqdmullbq_s32): Remove.
6162 (vqdmullbq_n_s32): Remove.
6163 (vqdmullbq_m_n_s32): Remove.
6164 (vqdmullbq_m_n_s16): Remove.
6165 (vqdmullbq_m_s32): Remove.
6166 (vqdmullbq_m_s16): Remove.
6167 (vqdmulltq_m_n_s32): Remove.
6168 (vqdmulltq_m_n_s16): Remove.
6169 (vqdmulltq_m_s32): Remove.
6170 (vqdmulltq_m_s16): Remove.
6171 (__arm_vqdmulltq_s16): Remove.
6172 (__arm_vqdmulltq_n_s16): Remove.
6173 (__arm_vqdmullbq_s16): Remove.
6174 (__arm_vqdmullbq_n_s16): Remove.
6175 (__arm_vqdmulltq_s32): Remove.
6176 (__arm_vqdmulltq_n_s32): Remove.
6177 (__arm_vqdmullbq_s32): Remove.
6178 (__arm_vqdmullbq_n_s32): Remove.
6179 (__arm_vqdmullbq_m_n_s32): Remove.
6180 (__arm_vqdmullbq_m_n_s16): Remove.
6181 (__arm_vqdmullbq_m_s32): Remove.
6182 (__arm_vqdmullbq_m_s16): Remove.
6183 (__arm_vqdmulltq_m_n_s32): Remove.
6184 (__arm_vqdmulltq_m_n_s16): Remove.
6185 (__arm_vqdmulltq_m_s32): Remove.
6186 (__arm_vqdmulltq_m_s16): Remove.
6187 (__arm_vqdmulltq): Remove.
6188 (__arm_vqdmullbq): Remove.
6189 (__arm_vqdmullbq_m): Remove.
6190 (__arm_vqdmulltq_m): Remove.
6192 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6194 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
6195 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
6196 (mve_insn): Add vqdmullb, vqdmullt.
6197 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
6198 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
6200 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
6201 (mve_vqdmulltq_n_s<mode>): Merge into ...
6202 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6203 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
6204 (@mve_<mve_insn>q_<supf><mode>): ... this.
6205 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
6207 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6208 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
6209 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6211 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6213 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
6214 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
6216 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
6218 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
6219 Drop unused parameter.
6220 (riscv_select_multilib): Ditto.
6221 (riscv_compute_multilib): Update call site of
6222 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
6224 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
6226 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
6227 * config/riscv/riscv-protos.h (expand_vec_init): New function.
6228 * config/riscv/riscv-v.cc (class rvv_builder): New class.
6229 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
6230 (rvv_builder::get_merged_repeating_sequence): Ditto.
6231 (expand_vector_init_insert_elems): Ditto.
6232 (expand_vec_init): Ditto.
6233 * config/riscv/vector-iterators.md: New attribute.
6235 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
6237 * config/rs6000/rs6000-builtins.def
6238 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
6240 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
6241 xsiexpdpf to xsiexpdpf_di.
6242 * config/rs6000/vsx.md (xsiexpdp): Rename to...
6243 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
6244 replace TARGET_64BIT with TARGET_POWERPC64.
6245 (xsiexpdpf): Rename to...
6246 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
6247 replace TARGET_64BIT with TARGET_POWERPC64.
6249 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
6251 * config/rs6000/rs6000-builtins.def
6252 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
6254 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
6257 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
6259 * config/rs6000/rs6000-builtins.def
6260 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
6261 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
6263 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
6264 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
6266 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
6267 requirement when it has a 64-bit argument.
6269 2023-05-12 Pan Li <pan2.li@intel.com>
6270 Richard Sandiford <richard.sandiford@arm.com>
6271 Richard Biener <rguenther@suse.de>
6272 Jakub Jelinek <jakub@redhat.com>
6274 * mux-utils.h: Add overload operator == and != for pointer_mux.
6275 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
6276 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
6277 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
6278 (dv_as_decl): Ditto.
6279 (dv_as_opaque): Removed due to unnecessary.
6280 (struct variable_hasher): Take decl_or_value as compare_type.
6281 (variable_hasher::equal): Diito.
6282 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
6283 (dv_from_value): Ditto.
6284 (attrs_list_member): Ditto.
6286 (var_reg_decl_set): Ditto.
6287 (var_reg_delete_and_set): Ditto.
6288 (find_loc_in_1pdv): Ditto.
6289 (canonicalize_values_star): Ditto.
6290 (variable_post_merge_new_vals): Ditto.
6291 (dump_onepart_variable_differences): Ditto.
6292 (variable_different_p): Ditto.
6293 (set_slot_part): Ditto.
6294 (clobber_slot_part): Ditto.
6295 (clobber_variable_part): Ditto.
6297 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
6299 * match.pd: simplify vector shift + bit_and + multiply.
6301 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6303 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
6304 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
6305 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
6306 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
6307 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
6308 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
6309 * config/arm/arm-mve-builtins.cc
6310 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
6311 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
6312 * config/arm/arm_mve.h (vqrdmlashq): Remove.
6313 (vqrdmlahq): Remove.
6314 (vqdmlashq): Remove.
6320 (vqdmlashq_m): Remove.
6321 (vqdmlahq_m): Remove.
6322 (vqrdmlahq_m): Remove.
6323 (vqrdmlashq_m): Remove.
6324 (vmlasq_n_u8): Remove.
6325 (vmlaq_n_u8): Remove.
6326 (vqrdmlashq_n_s8): Remove.
6327 (vqrdmlahq_n_s8): Remove.
6328 (vqdmlahq_n_s8): Remove.
6329 (vqdmlashq_n_s8): Remove.
6330 (vmlasq_n_s8): Remove.
6331 (vmlaq_n_s8): Remove.
6332 (vmlasq_n_u16): Remove.
6333 (vmlaq_n_u16): Remove.
6334 (vqrdmlashq_n_s16): Remove.
6335 (vqrdmlahq_n_s16): Remove.
6336 (vqdmlashq_n_s16): Remove.
6337 (vqdmlahq_n_s16): Remove.
6338 (vmlasq_n_s16): Remove.
6339 (vmlaq_n_s16): Remove.
6340 (vmlasq_n_u32): Remove.
6341 (vmlaq_n_u32): Remove.
6342 (vqrdmlashq_n_s32): Remove.
6343 (vqrdmlahq_n_s32): Remove.
6344 (vqdmlashq_n_s32): Remove.
6345 (vqdmlahq_n_s32): Remove.
6346 (vmlasq_n_s32): Remove.
6347 (vmlaq_n_s32): Remove.
6348 (vmlaq_m_n_s8): Remove.
6349 (vmlaq_m_n_s32): Remove.
6350 (vmlaq_m_n_s16): Remove.
6351 (vmlaq_m_n_u8): Remove.
6352 (vmlaq_m_n_u32): Remove.
6353 (vmlaq_m_n_u16): Remove.
6354 (vmlasq_m_n_s8): Remove.
6355 (vmlasq_m_n_s32): Remove.
6356 (vmlasq_m_n_s16): Remove.
6357 (vmlasq_m_n_u8): Remove.
6358 (vmlasq_m_n_u32): Remove.
6359 (vmlasq_m_n_u16): Remove.
6360 (vqdmlashq_m_n_s8): Remove.
6361 (vqdmlashq_m_n_s32): Remove.
6362 (vqdmlashq_m_n_s16): Remove.
6363 (vqdmlahq_m_n_s8): Remove.
6364 (vqdmlahq_m_n_s32): Remove.
6365 (vqdmlahq_m_n_s16): Remove.
6366 (vqrdmlahq_m_n_s8): Remove.
6367 (vqrdmlahq_m_n_s32): Remove.
6368 (vqrdmlahq_m_n_s16): Remove.
6369 (vqrdmlashq_m_n_s8): Remove.
6370 (vqrdmlashq_m_n_s32): Remove.
6371 (vqrdmlashq_m_n_s16): Remove.
6372 (__arm_vmlasq_n_u8): Remove.
6373 (__arm_vmlaq_n_u8): Remove.
6374 (__arm_vqrdmlashq_n_s8): Remove.
6375 (__arm_vqdmlashq_n_s8): Remove.
6376 (__arm_vqrdmlahq_n_s8): Remove.
6377 (__arm_vqdmlahq_n_s8): Remove.
6378 (__arm_vmlasq_n_s8): Remove.
6379 (__arm_vmlaq_n_s8): Remove.
6380 (__arm_vmlasq_n_u16): Remove.
6381 (__arm_vmlaq_n_u16): Remove.
6382 (__arm_vqrdmlashq_n_s16): Remove.
6383 (__arm_vqdmlashq_n_s16): Remove.
6384 (__arm_vqrdmlahq_n_s16): Remove.
6385 (__arm_vqdmlahq_n_s16): Remove.
6386 (__arm_vmlasq_n_s16): Remove.
6387 (__arm_vmlaq_n_s16): Remove.
6388 (__arm_vmlasq_n_u32): Remove.
6389 (__arm_vmlaq_n_u32): Remove.
6390 (__arm_vqrdmlashq_n_s32): Remove.
6391 (__arm_vqdmlashq_n_s32): Remove.
6392 (__arm_vqrdmlahq_n_s32): Remove.
6393 (__arm_vqdmlahq_n_s32): Remove.
6394 (__arm_vmlasq_n_s32): Remove.
6395 (__arm_vmlaq_n_s32): Remove.
6396 (__arm_vmlaq_m_n_s8): Remove.
6397 (__arm_vmlaq_m_n_s32): Remove.
6398 (__arm_vmlaq_m_n_s16): Remove.
6399 (__arm_vmlaq_m_n_u8): Remove.
6400 (__arm_vmlaq_m_n_u32): Remove.
6401 (__arm_vmlaq_m_n_u16): Remove.
6402 (__arm_vmlasq_m_n_s8): Remove.
6403 (__arm_vmlasq_m_n_s32): Remove.
6404 (__arm_vmlasq_m_n_s16): Remove.
6405 (__arm_vmlasq_m_n_u8): Remove.
6406 (__arm_vmlasq_m_n_u32): Remove.
6407 (__arm_vmlasq_m_n_u16): Remove.
6408 (__arm_vqdmlahq_m_n_s8): Remove.
6409 (__arm_vqdmlahq_m_n_s32): Remove.
6410 (__arm_vqdmlahq_m_n_s16): Remove.
6411 (__arm_vqrdmlahq_m_n_s8): Remove.
6412 (__arm_vqrdmlahq_m_n_s32): Remove.
6413 (__arm_vqrdmlahq_m_n_s16): Remove.
6414 (__arm_vqrdmlashq_m_n_s8): Remove.
6415 (__arm_vqrdmlashq_m_n_s32): Remove.
6416 (__arm_vqrdmlashq_m_n_s16): Remove.
6417 (__arm_vqdmlashq_m_n_s8): Remove.
6418 (__arm_vqdmlashq_m_n_s16): Remove.
6419 (__arm_vqdmlashq_m_n_s32): Remove.
6420 (__arm_vmlasq): Remove.
6421 (__arm_vmlaq): Remove.
6422 (__arm_vqrdmlashq): Remove.
6423 (__arm_vqdmlashq): Remove.
6424 (__arm_vqrdmlahq): Remove.
6425 (__arm_vqdmlahq): Remove.
6426 (__arm_vmlaq_m): Remove.
6427 (__arm_vmlasq_m): Remove.
6428 (__arm_vqdmlahq_m): Remove.
6429 (__arm_vqrdmlahq_m): Remove.
6430 (__arm_vqrdmlashq_m): Remove.
6431 (__arm_vqdmlashq_m): Remove.
6433 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6435 * config/arm/iterators.md (MVE_VMLxQ_N): New.
6436 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
6438 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
6440 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
6441 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
6442 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
6443 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
6444 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6446 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6448 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
6449 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
6451 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6453 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
6454 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
6456 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
6457 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
6459 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
6460 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
6462 * config/arm/arm-mve-builtins.cc
6463 (function_instance::has_inactive_argument): Handle vqrdmladhq,
6464 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
6465 vqdmlsdhq, vqdmlsdhxq.
6466 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
6467 (vqrdmlsdhq): Remove.
6468 (vqrdmladhxq): Remove.
6469 (vqrdmladhq): Remove.
6470 (vqdmlsdhxq): Remove.
6471 (vqdmlsdhq): Remove.
6472 (vqdmladhxq): Remove.
6473 (vqdmladhq): Remove.
6474 (vqdmladhq_m): Remove.
6475 (vqdmladhxq_m): Remove.
6476 (vqdmlsdhq_m): Remove.
6477 (vqdmlsdhxq_m): Remove.
6478 (vqrdmladhq_m): Remove.
6479 (vqrdmladhxq_m): Remove.
6480 (vqrdmlsdhq_m): Remove.
6481 (vqrdmlsdhxq_m): Remove.
6482 (vqrdmlsdhxq_s8): Remove.
6483 (vqrdmlsdhq_s8): Remove.
6484 (vqrdmladhxq_s8): Remove.
6485 (vqrdmladhq_s8): Remove.
6486 (vqdmlsdhxq_s8): Remove.
6487 (vqdmlsdhq_s8): Remove.
6488 (vqdmladhxq_s8): Remove.
6489 (vqdmladhq_s8): Remove.
6490 (vqrdmlsdhxq_s16): Remove.
6491 (vqrdmlsdhq_s16): Remove.
6492 (vqrdmladhxq_s16): Remove.
6493 (vqrdmladhq_s16): Remove.
6494 (vqdmlsdhxq_s16): Remove.
6495 (vqdmlsdhq_s16): Remove.
6496 (vqdmladhxq_s16): Remove.
6497 (vqdmladhq_s16): Remove.
6498 (vqrdmlsdhxq_s32): Remove.
6499 (vqrdmlsdhq_s32): Remove.
6500 (vqrdmladhxq_s32): Remove.
6501 (vqrdmladhq_s32): Remove.
6502 (vqdmlsdhxq_s32): Remove.
6503 (vqdmlsdhq_s32): Remove.
6504 (vqdmladhxq_s32): Remove.
6505 (vqdmladhq_s32): Remove.
6506 (vqdmladhq_m_s8): Remove.
6507 (vqdmladhq_m_s32): Remove.
6508 (vqdmladhq_m_s16): Remove.
6509 (vqdmladhxq_m_s8): Remove.
6510 (vqdmladhxq_m_s32): Remove.
6511 (vqdmladhxq_m_s16): Remove.
6512 (vqdmlsdhq_m_s8): Remove.
6513 (vqdmlsdhq_m_s32): Remove.
6514 (vqdmlsdhq_m_s16): Remove.
6515 (vqdmlsdhxq_m_s8): Remove.
6516 (vqdmlsdhxq_m_s32): Remove.
6517 (vqdmlsdhxq_m_s16): Remove.
6518 (vqrdmladhq_m_s8): Remove.
6519 (vqrdmladhq_m_s32): Remove.
6520 (vqrdmladhq_m_s16): Remove.
6521 (vqrdmladhxq_m_s8): Remove.
6522 (vqrdmladhxq_m_s32): Remove.
6523 (vqrdmladhxq_m_s16): Remove.
6524 (vqrdmlsdhq_m_s8): Remove.
6525 (vqrdmlsdhq_m_s32): Remove.
6526 (vqrdmlsdhq_m_s16): Remove.
6527 (vqrdmlsdhxq_m_s8): Remove.
6528 (vqrdmlsdhxq_m_s32): Remove.
6529 (vqrdmlsdhxq_m_s16): Remove.
6530 (__arm_vqrdmlsdhxq_s8): Remove.
6531 (__arm_vqrdmlsdhq_s8): Remove.
6532 (__arm_vqrdmladhxq_s8): Remove.
6533 (__arm_vqrdmladhq_s8): Remove.
6534 (__arm_vqdmlsdhxq_s8): Remove.
6535 (__arm_vqdmlsdhq_s8): Remove.
6536 (__arm_vqdmladhxq_s8): Remove.
6537 (__arm_vqdmladhq_s8): Remove.
6538 (__arm_vqrdmlsdhxq_s16): Remove.
6539 (__arm_vqrdmlsdhq_s16): Remove.
6540 (__arm_vqrdmladhxq_s16): Remove.
6541 (__arm_vqrdmladhq_s16): Remove.
6542 (__arm_vqdmlsdhxq_s16): Remove.
6543 (__arm_vqdmlsdhq_s16): Remove.
6544 (__arm_vqdmladhxq_s16): Remove.
6545 (__arm_vqdmladhq_s16): Remove.
6546 (__arm_vqrdmlsdhxq_s32): Remove.
6547 (__arm_vqrdmlsdhq_s32): Remove.
6548 (__arm_vqrdmladhxq_s32): Remove.
6549 (__arm_vqrdmladhq_s32): Remove.
6550 (__arm_vqdmlsdhxq_s32): Remove.
6551 (__arm_vqdmlsdhq_s32): Remove.
6552 (__arm_vqdmladhxq_s32): Remove.
6553 (__arm_vqdmladhq_s32): Remove.
6554 (__arm_vqdmladhq_m_s8): Remove.
6555 (__arm_vqdmladhq_m_s32): Remove.
6556 (__arm_vqdmladhq_m_s16): Remove.
6557 (__arm_vqdmladhxq_m_s8): Remove.
6558 (__arm_vqdmladhxq_m_s32): Remove.
6559 (__arm_vqdmladhxq_m_s16): Remove.
6560 (__arm_vqdmlsdhq_m_s8): Remove.
6561 (__arm_vqdmlsdhq_m_s32): Remove.
6562 (__arm_vqdmlsdhq_m_s16): Remove.
6563 (__arm_vqdmlsdhxq_m_s8): Remove.
6564 (__arm_vqdmlsdhxq_m_s32): Remove.
6565 (__arm_vqdmlsdhxq_m_s16): Remove.
6566 (__arm_vqrdmladhq_m_s8): Remove.
6567 (__arm_vqrdmladhq_m_s32): Remove.
6568 (__arm_vqrdmladhq_m_s16): Remove.
6569 (__arm_vqrdmladhxq_m_s8): Remove.
6570 (__arm_vqrdmladhxq_m_s32): Remove.
6571 (__arm_vqrdmladhxq_m_s16): Remove.
6572 (__arm_vqrdmlsdhq_m_s8): Remove.
6573 (__arm_vqrdmlsdhq_m_s32): Remove.
6574 (__arm_vqrdmlsdhq_m_s16): Remove.
6575 (__arm_vqrdmlsdhxq_m_s8): Remove.
6576 (__arm_vqrdmlsdhxq_m_s32): Remove.
6577 (__arm_vqrdmlsdhxq_m_s16): Remove.
6578 (__arm_vqrdmlsdhxq): Remove.
6579 (__arm_vqrdmlsdhq): Remove.
6580 (__arm_vqrdmladhxq): Remove.
6581 (__arm_vqrdmladhq): Remove.
6582 (__arm_vqdmlsdhxq): Remove.
6583 (__arm_vqdmlsdhq): Remove.
6584 (__arm_vqdmladhxq): Remove.
6585 (__arm_vqdmladhq): Remove.
6586 (__arm_vqdmladhq_m): Remove.
6587 (__arm_vqdmladhxq_m): Remove.
6588 (__arm_vqdmlsdhq_m): Remove.
6589 (__arm_vqdmlsdhxq_m): Remove.
6590 (__arm_vqrdmladhq_m): Remove.
6591 (__arm_vqrdmladhxq_m): Remove.
6592 (__arm_vqrdmlsdhq_m): Remove.
6593 (__arm_vqrdmlsdhxq_m): Remove.
6595 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6597 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
6598 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
6599 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
6600 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
6601 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
6602 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
6603 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
6604 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
6605 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
6606 (mve_vqdmladhq_s<mode>): Merge into ...
6607 (@mve_<mve_insn>q_<supf><mode>): ... this.
6609 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6611 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
6612 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
6614 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6616 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
6617 (vmlsldavaq, vmlsldavaxq): New.
6618 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
6619 (vmlsldavaq, vmlsldavaxq): New.
6620 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
6621 (vmlsldavaq, vmlsldavaxq): New.
6622 * config/arm/arm_mve.h (vmlaldavaq): Remove.
6623 (vmlaldavaxq): Remove.
6624 (vmlsldavaq): Remove.
6625 (vmlsldavaxq): Remove.
6626 (vmlaldavaq_p): Remove.
6627 (vmlaldavaxq_p): Remove.
6628 (vmlsldavaq_p): Remove.
6629 (vmlsldavaxq_p): Remove.
6630 (vmlaldavaq_s16): Remove.
6631 (vmlaldavaxq_s16): Remove.
6632 (vmlsldavaq_s16): Remove.
6633 (vmlsldavaxq_s16): Remove.
6634 (vmlaldavaq_u16): Remove.
6635 (vmlaldavaq_s32): Remove.
6636 (vmlaldavaxq_s32): Remove.
6637 (vmlsldavaq_s32): Remove.
6638 (vmlsldavaxq_s32): Remove.
6639 (vmlaldavaq_u32): Remove.
6640 (vmlaldavaq_p_s32): Remove.
6641 (vmlaldavaq_p_s16): Remove.
6642 (vmlaldavaq_p_u32): Remove.
6643 (vmlaldavaq_p_u16): Remove.
6644 (vmlaldavaxq_p_s32): Remove.
6645 (vmlaldavaxq_p_s16): Remove.
6646 (vmlsldavaq_p_s32): Remove.
6647 (vmlsldavaq_p_s16): Remove.
6648 (vmlsldavaxq_p_s32): Remove.
6649 (vmlsldavaxq_p_s16): Remove.
6650 (__arm_vmlaldavaq_s16): Remove.
6651 (__arm_vmlaldavaxq_s16): Remove.
6652 (__arm_vmlsldavaq_s16): Remove.
6653 (__arm_vmlsldavaxq_s16): Remove.
6654 (__arm_vmlaldavaq_u16): Remove.
6655 (__arm_vmlaldavaq_s32): Remove.
6656 (__arm_vmlaldavaxq_s32): Remove.
6657 (__arm_vmlsldavaq_s32): Remove.
6658 (__arm_vmlsldavaxq_s32): Remove.
6659 (__arm_vmlaldavaq_u32): Remove.
6660 (__arm_vmlaldavaq_p_s32): Remove.
6661 (__arm_vmlaldavaq_p_s16): Remove.
6662 (__arm_vmlaldavaq_p_u32): Remove.
6663 (__arm_vmlaldavaq_p_u16): Remove.
6664 (__arm_vmlaldavaxq_p_s32): Remove.
6665 (__arm_vmlaldavaxq_p_s16): Remove.
6666 (__arm_vmlsldavaq_p_s32): Remove.
6667 (__arm_vmlsldavaq_p_s16): Remove.
6668 (__arm_vmlsldavaxq_p_s32): Remove.
6669 (__arm_vmlsldavaxq_p_s16): Remove.
6670 (__arm_vmlaldavaq): Remove.
6671 (__arm_vmlaldavaxq): Remove.
6672 (__arm_vmlsldavaq): Remove.
6673 (__arm_vmlsldavaxq): Remove.
6674 (__arm_vmlaldavaq_p): Remove.
6675 (__arm_vmlaldavaxq_p): Remove.
6676 (__arm_vmlsldavaq_p): Remove.
6677 (__arm_vmlsldavaxq_p): Remove.
6679 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6681 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
6683 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
6684 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
6685 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
6686 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
6687 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
6688 (mve_vmlaldavaxq_s<mode>): Merge into ...
6689 (@mve_<mve_insn>q_<supf><mode>): ... this.
6690 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
6691 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
6693 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6695 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6697 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
6698 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
6700 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6702 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
6703 (vrmlsldavhq, vrmlsldavhxq): New.
6704 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
6705 (vrmlsldavhq, vrmlsldavhxq): New.
6706 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
6707 (vrmlsldavhq, vrmlsldavhxq): New.
6708 * config/arm/arm-mve-builtins-functions.h
6709 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
6710 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
6711 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
6712 (vrmlsldavhxq): Remove.
6713 (vrmlsldavhq): Remove.
6714 (vrmlaldavhxq): Remove.
6715 (vrmlaldavhq_p): Remove.
6716 (vrmlaldavhxq_p): Remove.
6717 (vrmlsldavhq_p): Remove.
6718 (vrmlsldavhxq_p): Remove.
6719 (vrmlaldavhq_u32): Remove.
6720 (vrmlsldavhxq_s32): Remove.
6721 (vrmlsldavhq_s32): Remove.
6722 (vrmlaldavhxq_s32): Remove.
6723 (vrmlaldavhq_s32): Remove.
6724 (vrmlaldavhq_p_s32): Remove.
6725 (vrmlaldavhxq_p_s32): Remove.
6726 (vrmlsldavhq_p_s32): Remove.
6727 (vrmlsldavhxq_p_s32): Remove.
6728 (vrmlaldavhq_p_u32): Remove.
6729 (__arm_vrmlaldavhq_u32): Remove.
6730 (__arm_vrmlsldavhxq_s32): Remove.
6731 (__arm_vrmlsldavhq_s32): Remove.
6732 (__arm_vrmlaldavhxq_s32): Remove.
6733 (__arm_vrmlaldavhq_s32): Remove.
6734 (__arm_vrmlaldavhq_p_s32): Remove.
6735 (__arm_vrmlaldavhxq_p_s32): Remove.
6736 (__arm_vrmlsldavhq_p_s32): Remove.
6737 (__arm_vrmlsldavhxq_p_s32): Remove.
6738 (__arm_vrmlaldavhq_p_u32): Remove.
6739 (__arm_vrmlaldavhq): Remove.
6740 (__arm_vrmlsldavhxq): Remove.
6741 (__arm_vrmlsldavhq): Remove.
6742 (__arm_vrmlaldavhxq): Remove.
6743 (__arm_vrmlaldavhq_p): Remove.
6744 (__arm_vrmlaldavhxq_p): Remove.
6745 (__arm_vrmlsldavhq_p): Remove.
6746 (__arm_vrmlsldavhxq_p): Remove.
6748 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6750 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
6752 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
6753 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
6754 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
6755 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
6756 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
6757 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
6758 (@mve_<mve_insn>q_<supf>v4si): ... this.
6759 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
6760 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
6762 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
6764 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6766 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
6767 (vmlsldavq, vmlsldavxq): New.
6768 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
6769 (vmlsldavq, vmlsldavxq): New.
6770 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
6771 (vmlsldavq, vmlsldavxq): New.
6772 * config/arm/arm_mve.h (vmlaldavq): Remove.
6773 (vmlsldavxq): Remove.
6774 (vmlsldavq): Remove.
6775 (vmlaldavxq): Remove.
6776 (vmlaldavq_p): Remove.
6777 (vmlaldavxq_p): Remove.
6778 (vmlsldavq_p): Remove.
6779 (vmlsldavxq_p): Remove.
6780 (vmlaldavq_u16): Remove.
6781 (vmlsldavxq_s16): Remove.
6782 (vmlsldavq_s16): Remove.
6783 (vmlaldavxq_s16): Remove.
6784 (vmlaldavq_s16): Remove.
6785 (vmlaldavq_u32): Remove.
6786 (vmlsldavxq_s32): Remove.
6787 (vmlsldavq_s32): Remove.
6788 (vmlaldavxq_s32): Remove.
6789 (vmlaldavq_s32): Remove.
6790 (vmlaldavq_p_s16): Remove.
6791 (vmlaldavxq_p_s16): Remove.
6792 (vmlsldavq_p_s16): Remove.
6793 (vmlsldavxq_p_s16): Remove.
6794 (vmlaldavq_p_u16): Remove.
6795 (vmlaldavq_p_s32): Remove.
6796 (vmlaldavxq_p_s32): Remove.
6797 (vmlsldavq_p_s32): Remove.
6798 (vmlsldavxq_p_s32): Remove.
6799 (vmlaldavq_p_u32): Remove.
6800 (__arm_vmlaldavq_u16): Remove.
6801 (__arm_vmlsldavxq_s16): Remove.
6802 (__arm_vmlsldavq_s16): Remove.
6803 (__arm_vmlaldavxq_s16): Remove.
6804 (__arm_vmlaldavq_s16): Remove.
6805 (__arm_vmlaldavq_u32): Remove.
6806 (__arm_vmlsldavxq_s32): Remove.
6807 (__arm_vmlsldavq_s32): Remove.
6808 (__arm_vmlaldavxq_s32): Remove.
6809 (__arm_vmlaldavq_s32): Remove.
6810 (__arm_vmlaldavq_p_s16): Remove.
6811 (__arm_vmlaldavxq_p_s16): Remove.
6812 (__arm_vmlsldavq_p_s16): Remove.
6813 (__arm_vmlsldavxq_p_s16): Remove.
6814 (__arm_vmlaldavq_p_u16): Remove.
6815 (__arm_vmlaldavq_p_s32): Remove.
6816 (__arm_vmlaldavxq_p_s32): Remove.
6817 (__arm_vmlsldavq_p_s32): Remove.
6818 (__arm_vmlsldavxq_p_s32): Remove.
6819 (__arm_vmlaldavq_p_u32): Remove.
6820 (__arm_vmlaldavq): Remove.
6821 (__arm_vmlsldavxq): Remove.
6822 (__arm_vmlsldavq): Remove.
6823 (__arm_vmlaldavxq): Remove.
6824 (__arm_vmlaldavq_p): Remove.
6825 (__arm_vmlaldavxq_p): Remove.
6826 (__arm_vmlsldavq_p): Remove.
6827 (__arm_vmlsldavxq_p): Remove.
6829 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6831 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
6832 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
6833 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
6834 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
6835 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
6836 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
6837 (mve_vmlsldavxq_s<mode>): Merge into ...
6838 (@mve_<mve_insn>q_<supf><mode>): ... this.
6839 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
6840 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
6842 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6844 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6846 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
6847 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
6849 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6851 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
6852 * config/arm/arm-mve-builtins-base.def (vabavq): New.
6853 * config/arm/arm-mve-builtins-base.h (vabavq): New.
6854 * config/arm/arm_mve.h (vabavq): Remove.
6856 (vabavq_s8): Remove.
6857 (vabavq_s16): Remove.
6858 (vabavq_s32): Remove.
6859 (vabavq_u8): Remove.
6860 (vabavq_u16): Remove.
6861 (vabavq_u32): Remove.
6862 (vabavq_p_s8): Remove.
6863 (vabavq_p_u8): Remove.
6864 (vabavq_p_s16): Remove.
6865 (vabavq_p_u16): Remove.
6866 (vabavq_p_s32): Remove.
6867 (vabavq_p_u32): Remove.
6868 (__arm_vabavq_s8): Remove.
6869 (__arm_vabavq_s16): Remove.
6870 (__arm_vabavq_s32): Remove.
6871 (__arm_vabavq_u8): Remove.
6872 (__arm_vabavq_u16): Remove.
6873 (__arm_vabavq_u32): Remove.
6874 (__arm_vabavq_p_s8): Remove.
6875 (__arm_vabavq_p_u8): Remove.
6876 (__arm_vabavq_p_s16): Remove.
6877 (__arm_vabavq_p_u16): Remove.
6878 (__arm_vabavq_p_s32): Remove.
6879 (__arm_vabavq_p_u32): Remove.
6880 (__arm_vabavq): Remove.
6881 (__arm_vabavq_p): Remove.
6883 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6885 * config/arm/iterators.md (mve_insn): Add vabav.
6886 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
6887 (@mve_<mve_insn>q_<supf><mode>): ... this,.
6888 (mve_vabavq_p_<supf><mode>): Rename into ...
6889 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
6891 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6893 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
6894 (vmlsdavaq, vmlsdavaxq): New.
6895 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
6896 (vmlsdavaq, vmlsdavaxq): New.
6897 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
6898 (vmlsdavaq, vmlsdavaxq): New.
6899 * config/arm/arm_mve.h (vmladavaq): Remove.
6900 (vmlsdavaxq): Remove.
6901 (vmlsdavaq): Remove.
6902 (vmladavaxq): Remove.
6903 (vmladavaq_p): Remove.
6904 (vmladavaxq_p): Remove.
6905 (vmlsdavaq_p): Remove.
6906 (vmlsdavaxq_p): Remove.
6907 (vmladavaq_u8): Remove.
6908 (vmlsdavaxq_s8): Remove.
6909 (vmlsdavaq_s8): Remove.
6910 (vmladavaxq_s8): Remove.
6911 (vmladavaq_s8): Remove.
6912 (vmladavaq_u16): Remove.
6913 (vmlsdavaxq_s16): Remove.
6914 (vmlsdavaq_s16): Remove.
6915 (vmladavaxq_s16): Remove.
6916 (vmladavaq_s16): Remove.
6917 (vmladavaq_u32): Remove.
6918 (vmlsdavaxq_s32): Remove.
6919 (vmlsdavaq_s32): Remove.
6920 (vmladavaxq_s32): Remove.
6921 (vmladavaq_s32): Remove.
6922 (vmladavaq_p_s8): Remove.
6923 (vmladavaq_p_s32): Remove.
6924 (vmladavaq_p_s16): Remove.
6925 (vmladavaq_p_u8): Remove.
6926 (vmladavaq_p_u32): Remove.
6927 (vmladavaq_p_u16): Remove.
6928 (vmladavaxq_p_s8): Remove.
6929 (vmladavaxq_p_s32): Remove.
6930 (vmladavaxq_p_s16): Remove.
6931 (vmlsdavaq_p_s8): Remove.
6932 (vmlsdavaq_p_s32): Remove.
6933 (vmlsdavaq_p_s16): Remove.
6934 (vmlsdavaxq_p_s8): Remove.
6935 (vmlsdavaxq_p_s32): Remove.
6936 (vmlsdavaxq_p_s16): Remove.
6937 (__arm_vmladavaq_u8): Remove.
6938 (__arm_vmlsdavaxq_s8): Remove.
6939 (__arm_vmlsdavaq_s8): Remove.
6940 (__arm_vmladavaxq_s8): Remove.
6941 (__arm_vmladavaq_s8): Remove.
6942 (__arm_vmladavaq_u16): Remove.
6943 (__arm_vmlsdavaxq_s16): Remove.
6944 (__arm_vmlsdavaq_s16): Remove.
6945 (__arm_vmladavaxq_s16): Remove.
6946 (__arm_vmladavaq_s16): Remove.
6947 (__arm_vmladavaq_u32): Remove.
6948 (__arm_vmlsdavaxq_s32): Remove.
6949 (__arm_vmlsdavaq_s32): Remove.
6950 (__arm_vmladavaxq_s32): Remove.
6951 (__arm_vmladavaq_s32): Remove.
6952 (__arm_vmladavaq_p_s8): Remove.
6953 (__arm_vmladavaq_p_s32): Remove.
6954 (__arm_vmladavaq_p_s16): Remove.
6955 (__arm_vmladavaq_p_u8): Remove.
6956 (__arm_vmladavaq_p_u32): Remove.
6957 (__arm_vmladavaq_p_u16): Remove.
6958 (__arm_vmladavaxq_p_s8): Remove.
6959 (__arm_vmladavaxq_p_s32): Remove.
6960 (__arm_vmladavaxq_p_s16): Remove.
6961 (__arm_vmlsdavaq_p_s8): Remove.
6962 (__arm_vmlsdavaq_p_s32): Remove.
6963 (__arm_vmlsdavaq_p_s16): Remove.
6964 (__arm_vmlsdavaxq_p_s8): Remove.
6965 (__arm_vmlsdavaxq_p_s32): Remove.
6966 (__arm_vmlsdavaxq_p_s16): Remove.
6967 (__arm_vmladavaq): Remove.
6968 (__arm_vmlsdavaxq): Remove.
6969 (__arm_vmlsdavaq): Remove.
6970 (__arm_vmladavaxq): Remove.
6971 (__arm_vmladavaq_p): Remove.
6972 (__arm_vmladavaxq_p): Remove.
6973 (__arm_vmlsdavaq_p): Remove.
6974 (__arm_vmlsdavaxq_p): Remove.
6976 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6978 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
6979 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
6981 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6983 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
6984 (vmlsdavq, vmlsdavxq): New.
6985 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
6986 (vmlsdavq, vmlsdavxq): New.
6987 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
6988 (vmlsdavq, vmlsdavxq): New.
6989 * config/arm/arm_mve.h (vmladavq): Remove.
6990 (vmlsdavxq): Remove.
6992 (vmladavxq): Remove.
6993 (vmladavq_p): Remove.
6994 (vmlsdavxq_p): Remove.
6995 (vmlsdavq_p): Remove.
6996 (vmladavxq_p): Remove.
6997 (vmladavq_u8): Remove.
6998 (vmlsdavxq_s8): Remove.
6999 (vmlsdavq_s8): Remove.
7000 (vmladavxq_s8): Remove.
7001 (vmladavq_s8): Remove.
7002 (vmladavq_u16): Remove.
7003 (vmlsdavxq_s16): Remove.
7004 (vmlsdavq_s16): Remove.
7005 (vmladavxq_s16): Remove.
7006 (vmladavq_s16): Remove.
7007 (vmladavq_u32): Remove.
7008 (vmlsdavxq_s32): Remove.
7009 (vmlsdavq_s32): Remove.
7010 (vmladavxq_s32): Remove.
7011 (vmladavq_s32): Remove.
7012 (vmladavq_p_u8): Remove.
7013 (vmlsdavxq_p_s8): Remove.
7014 (vmlsdavq_p_s8): Remove.
7015 (vmladavxq_p_s8): Remove.
7016 (vmladavq_p_s8): Remove.
7017 (vmladavq_p_u16): Remove.
7018 (vmlsdavxq_p_s16): Remove.
7019 (vmlsdavq_p_s16): Remove.
7020 (vmladavxq_p_s16): Remove.
7021 (vmladavq_p_s16): Remove.
7022 (vmladavq_p_u32): Remove.
7023 (vmlsdavxq_p_s32): Remove.
7024 (vmlsdavq_p_s32): Remove.
7025 (vmladavxq_p_s32): Remove.
7026 (vmladavq_p_s32): Remove.
7027 (__arm_vmladavq_u8): Remove.
7028 (__arm_vmlsdavxq_s8): Remove.
7029 (__arm_vmlsdavq_s8): Remove.
7030 (__arm_vmladavxq_s8): Remove.
7031 (__arm_vmladavq_s8): Remove.
7032 (__arm_vmladavq_u16): Remove.
7033 (__arm_vmlsdavxq_s16): Remove.
7034 (__arm_vmlsdavq_s16): Remove.
7035 (__arm_vmladavxq_s16): Remove.
7036 (__arm_vmladavq_s16): Remove.
7037 (__arm_vmladavq_u32): Remove.
7038 (__arm_vmlsdavxq_s32): Remove.
7039 (__arm_vmlsdavq_s32): Remove.
7040 (__arm_vmladavxq_s32): Remove.
7041 (__arm_vmladavq_s32): Remove.
7042 (__arm_vmladavq_p_u8): Remove.
7043 (__arm_vmlsdavxq_p_s8): Remove.
7044 (__arm_vmlsdavq_p_s8): Remove.
7045 (__arm_vmladavxq_p_s8): Remove.
7046 (__arm_vmladavq_p_s8): Remove.
7047 (__arm_vmladavq_p_u16): Remove.
7048 (__arm_vmlsdavxq_p_s16): Remove.
7049 (__arm_vmlsdavq_p_s16): Remove.
7050 (__arm_vmladavxq_p_s16): Remove.
7051 (__arm_vmladavq_p_s16): Remove.
7052 (__arm_vmladavq_p_u32): Remove.
7053 (__arm_vmlsdavxq_p_s32): Remove.
7054 (__arm_vmlsdavq_p_s32): Remove.
7055 (__arm_vmladavxq_p_s32): Remove.
7056 (__arm_vmladavq_p_s32): Remove.
7057 (__arm_vmladavq): Remove.
7058 (__arm_vmlsdavxq): Remove.
7059 (__arm_vmlsdavq): Remove.
7060 (__arm_vmladavxq): Remove.
7061 (__arm_vmladavq_p): Remove.
7062 (__arm_vmlsdavxq_p): Remove.
7063 (__arm_vmlsdavq_p): Remove.
7064 (__arm_vmladavxq_p): Remove.
7066 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7068 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
7069 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
7070 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
7071 vmlsdavax, vmlsdav, vmlsdavx.
7072 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
7073 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
7074 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
7076 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
7077 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
7078 (mve_vmlsdavxq_s<mode>): Merge into ...
7079 (@mve_<mve_insn>q_<supf><mode>): ... this.
7080 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
7081 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
7083 (@mve_<mve_insn>q_<supf><mode>): ... this.
7084 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
7085 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
7086 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7087 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
7088 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
7090 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7092 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7094 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
7095 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
7097 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7099 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
7100 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
7101 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
7102 * config/arm/arm_mve.h (vaddlvaq): Remove.
7103 (vaddlvaq_p): Remove.
7104 (vaddlvaq_u32): Remove.
7105 (vaddlvaq_s32): Remove.
7106 (vaddlvaq_p_s32): Remove.
7107 (vaddlvaq_p_u32): Remove.
7108 (__arm_vaddlvaq_u32): Remove.
7109 (__arm_vaddlvaq_s32): Remove.
7110 (__arm_vaddlvaq_p_s32): Remove.
7111 (__arm_vaddlvaq_p_u32): Remove.
7112 (__arm_vaddlvaq): Remove.
7113 (__arm_vaddlvaq_p): Remove.
7115 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7117 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
7118 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
7120 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7122 * config/arm/iterators.md (mve_insn): Add vaddlva.
7123 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
7124 (@mve_<mve_insn>q_<supf>v4si): ... this.
7125 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
7126 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
7128 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
7131 * config/i386/i386.cc (ix86_widen_mult_cost):
7132 Handle V4HImode and V2SImode.
7134 2023-05-11 Andrew Pinski <apinski@marvell.com>
7136 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
7137 defined by a phi node with more than one uses, allow for the
7138 only uses are in that same defining statement.
7140 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7142 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
7145 2023-05-11 Pan Li <pan2.li@intel.com>
7147 * config/riscv/vector.md: Add comments for simplifying to vmset.
7149 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7151 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
7153 (v<optab><mode>3): Add vector shift pattern.
7154 * config/riscv/vector-iterators.md: New iterator.
7156 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7158 * config/riscv/autovec.md: Use renamed functions.
7159 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
7160 (emit_vlmax_reg_op): To this.
7161 (emit_nonvlmax_op): Rename.
7162 (emit_len_op): To this.
7163 (emit_nonvlmax_binop): Rename.
7164 (emit_len_binop): To this.
7165 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
7166 (emit_pred_binop): Remove vlmax_p.
7167 (emit_vlmax_op): Rename.
7168 (emit_vlmax_reg_op): To this.
7169 (emit_nonvlmax_op): Rename.
7170 (emit_len_op): To this.
7171 (emit_nonvlmax_binop): Rename.
7172 (emit_len_binop): To this.
7173 (sew64_scalar_helper): Use renamed functions.
7174 (expand_tuple_move): Use renamed functions.
7175 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
7177 * config/riscv/vector.md: Use renamed functions.
7179 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7180 Michael Collison <collison@rivosinc.com>
7182 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
7183 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
7184 * config/riscv/riscv-v.cc (emit_pred_op): New function.
7185 (set_expander_dest_and_mask): New function.
7186 (emit_pred_binop): New function.
7187 (emit_nonvlmax_binop): New function.
7189 2023-05-11 Pan Li <pan2.li@intel.com>
7191 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
7192 * gimple-loop-interchange.cc
7193 (tree_loop_interchange::map_inductions_to_loop): Ditto.
7194 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
7195 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
7196 * tree-ssa-loop-manip.cc (create_iv): Ditto.
7197 (tree_transform_and_unroll_loop): Ditto.
7198 (canonicalize_loop_ivs): Ditto.
7199 * tree-ssa-loop-manip.h (create_iv): Ditto.
7200 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
7201 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
7203 (vect_set_loop_condition_normal): Ditto.
7204 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
7205 * tree-vect-stmts.cc (vectorizable_store): Ditto.
7206 (vectorizable_load): Ditto.
7208 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7210 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
7211 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
7212 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
7213 * config/arm/arm_mve.h (vmovlbq): Remove.
7215 (vmovlbq_m): Remove.
7216 (vmovltq_m): Remove.
7217 (vmovlbq_x): Remove.
7218 (vmovltq_x): Remove.
7219 (vmovlbq_s8): Remove.
7220 (vmovlbq_s16): Remove.
7221 (vmovltq_s8): Remove.
7222 (vmovltq_s16): Remove.
7223 (vmovltq_u8): Remove.
7224 (vmovltq_u16): Remove.
7225 (vmovlbq_u8): Remove.
7226 (vmovlbq_u16): Remove.
7227 (vmovlbq_m_s8): Remove.
7228 (vmovltq_m_s8): Remove.
7229 (vmovlbq_m_u8): Remove.
7230 (vmovltq_m_u8): Remove.
7231 (vmovlbq_m_s16): Remove.
7232 (vmovltq_m_s16): Remove.
7233 (vmovlbq_m_u16): Remove.
7234 (vmovltq_m_u16): Remove.
7235 (vmovlbq_x_s8): Remove.
7236 (vmovlbq_x_s16): Remove.
7237 (vmovlbq_x_u8): Remove.
7238 (vmovlbq_x_u16): Remove.
7239 (vmovltq_x_s8): Remove.
7240 (vmovltq_x_s16): Remove.
7241 (vmovltq_x_u8): Remove.
7242 (vmovltq_x_u16): Remove.
7243 (__arm_vmovlbq_s8): Remove.
7244 (__arm_vmovlbq_s16): Remove.
7245 (__arm_vmovltq_s8): Remove.
7246 (__arm_vmovltq_s16): Remove.
7247 (__arm_vmovltq_u8): Remove.
7248 (__arm_vmovltq_u16): Remove.
7249 (__arm_vmovlbq_u8): Remove.
7250 (__arm_vmovlbq_u16): Remove.
7251 (__arm_vmovlbq_m_s8): Remove.
7252 (__arm_vmovltq_m_s8): Remove.
7253 (__arm_vmovlbq_m_u8): Remove.
7254 (__arm_vmovltq_m_u8): Remove.
7255 (__arm_vmovlbq_m_s16): Remove.
7256 (__arm_vmovltq_m_s16): Remove.
7257 (__arm_vmovlbq_m_u16): Remove.
7258 (__arm_vmovltq_m_u16): Remove.
7259 (__arm_vmovlbq_x_s8): Remove.
7260 (__arm_vmovlbq_x_s16): Remove.
7261 (__arm_vmovlbq_x_u8): Remove.
7262 (__arm_vmovlbq_x_u16): Remove.
7263 (__arm_vmovltq_x_s8): Remove.
7264 (__arm_vmovltq_x_s16): Remove.
7265 (__arm_vmovltq_x_u8): Remove.
7266 (__arm_vmovltq_x_u16): Remove.
7267 (__arm_vmovlbq): Remove.
7268 (__arm_vmovltq): Remove.
7269 (__arm_vmovlbq_m): Remove.
7270 (__arm_vmovltq_m): Remove.
7271 (__arm_vmovlbq_x): Remove.
7272 (__arm_vmovltq_x): Remove.
7274 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7276 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
7277 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
7279 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7281 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
7282 (VMOVLBQ, VMOVLTQ): Merge into ...
7283 (VMOVLxQ): ... this.
7284 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
7285 (VMOVLxQ_M): ... this.
7286 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
7287 (mve_vmovlbq_<supf><mode>): Merge into ...
7288 (@mve_<mve_insn>q_<supf><mode>): ... this.
7289 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
7291 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7293 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7295 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
7296 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
7297 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
7298 * config/arm/arm-mve-builtins-functions.h
7299 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
7300 * config/arm/arm_mve.h (vaddlvq): Remove.
7301 (vaddlvq_p): Remove.
7302 (vaddlvq_s32): Remove.
7303 (vaddlvq_u32): Remove.
7304 (vaddlvq_p_s32): Remove.
7305 (vaddlvq_p_u32): Remove.
7306 (__arm_vaddlvq_s32): Remove.
7307 (__arm_vaddlvq_u32): Remove.
7308 (__arm_vaddlvq_p_s32): Remove.
7309 (__arm_vaddlvq_p_u32): Remove.
7310 (__arm_vaddlvq): Remove.
7311 (__arm_vaddlvq_p): Remove.
7313 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7315 * config/arm/iterators.md (mve_insn): Add vaddlv.
7316 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
7317 (@mve_<mve_insn>q_<supf>v4si): ... this.
7318 (mve_vaddlvq_p_<supf>v4si): Rename into ...
7319 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
7321 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7323 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
7324 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
7326 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7328 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
7329 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
7330 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
7331 * config/arm/arm_mve.h (vaddvaq): Remove.
7332 (vaddvaq_p): Remove.
7333 (vaddvaq_u8): Remove.
7334 (vaddvaq_s8): Remove.
7335 (vaddvaq_u16): Remove.
7336 (vaddvaq_s16): Remove.
7337 (vaddvaq_u32): Remove.
7338 (vaddvaq_s32): Remove.
7339 (vaddvaq_p_u8): Remove.
7340 (vaddvaq_p_s8): Remove.
7341 (vaddvaq_p_u16): Remove.
7342 (vaddvaq_p_s16): Remove.
7343 (vaddvaq_p_u32): Remove.
7344 (vaddvaq_p_s32): Remove.
7345 (__arm_vaddvaq_u8): Remove.
7346 (__arm_vaddvaq_s8): Remove.
7347 (__arm_vaddvaq_u16): Remove.
7348 (__arm_vaddvaq_s16): Remove.
7349 (__arm_vaddvaq_u32): Remove.
7350 (__arm_vaddvaq_s32): Remove.
7351 (__arm_vaddvaq_p_u8): Remove.
7352 (__arm_vaddvaq_p_s8): Remove.
7353 (__arm_vaddvaq_p_u16): Remove.
7354 (__arm_vaddvaq_p_s16): Remove.
7355 (__arm_vaddvaq_p_u32): Remove.
7356 (__arm_vaddvaq_p_s32): Remove.
7357 (__arm_vaddvaq): Remove.
7358 (__arm_vaddvaq_p): Remove.
7360 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7362 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
7363 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
7365 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7367 * config/arm/iterators.md (mve_insn): Add vaddva.
7368 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
7369 (@mve_<mve_insn>q_<supf><mode>): ... this.
7370 (mve_vaddvaq_p_<supf><mode>): Rename into ...
7371 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7373 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7375 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
7376 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
7377 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
7378 * config/arm/arm_mve.h (vaddvq): Remove.
7380 (vaddvq_s8): Remove.
7381 (vaddvq_s16): Remove.
7382 (vaddvq_s32): Remove.
7383 (vaddvq_u8): Remove.
7384 (vaddvq_u16): Remove.
7385 (vaddvq_u32): Remove.
7386 (vaddvq_p_u8): Remove.
7387 (vaddvq_p_s8): Remove.
7388 (vaddvq_p_u16): Remove.
7389 (vaddvq_p_s16): Remove.
7390 (vaddvq_p_u32): Remove.
7391 (vaddvq_p_s32): Remove.
7392 (__arm_vaddvq_s8): Remove.
7393 (__arm_vaddvq_s16): Remove.
7394 (__arm_vaddvq_s32): Remove.
7395 (__arm_vaddvq_u8): Remove.
7396 (__arm_vaddvq_u16): Remove.
7397 (__arm_vaddvq_u32): Remove.
7398 (__arm_vaddvq_p_u8): Remove.
7399 (__arm_vaddvq_p_s8): Remove.
7400 (__arm_vaddvq_p_u16): Remove.
7401 (__arm_vaddvq_p_s16): Remove.
7402 (__arm_vaddvq_p_u32): Remove.
7403 (__arm_vaddvq_p_s32): Remove.
7404 (__arm_vaddvq): Remove.
7405 (__arm_vaddvq_p): Remove.
7407 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7409 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
7410 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
7412 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7414 * config/arm/iterators.md (mve_insn): Add vaddv.
7415 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
7416 (@mve_<mve_insn>q_<supf><mode>): ... this.
7417 (mve_vaddvq_p_<supf><mode>): Rename into ...
7418 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7419 * config/arm/vec-common.md: Use gen_mve_q instead of
7422 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7424 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
7426 * config/arm/arm-mve-builtins-base.def (vdupq): New.
7427 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
7428 * config/arm/arm_mve.h (vdupq_n): Remove.
7430 (vdupq_n_f16): Remove.
7431 (vdupq_n_f32): Remove.
7432 (vdupq_n_s8): Remove.
7433 (vdupq_n_s16): Remove.
7434 (vdupq_n_s32): Remove.
7435 (vdupq_n_u8): Remove.
7436 (vdupq_n_u16): Remove.
7437 (vdupq_n_u32): Remove.
7438 (vdupq_m_n_u8): Remove.
7439 (vdupq_m_n_s8): Remove.
7440 (vdupq_m_n_u16): Remove.
7441 (vdupq_m_n_s16): Remove.
7442 (vdupq_m_n_u32): Remove.
7443 (vdupq_m_n_s32): Remove.
7444 (vdupq_m_n_f16): Remove.
7445 (vdupq_m_n_f32): Remove.
7446 (vdupq_x_n_s8): Remove.
7447 (vdupq_x_n_s16): Remove.
7448 (vdupq_x_n_s32): Remove.
7449 (vdupq_x_n_u8): Remove.
7450 (vdupq_x_n_u16): Remove.
7451 (vdupq_x_n_u32): Remove.
7452 (vdupq_x_n_f16): Remove.
7453 (vdupq_x_n_f32): Remove.
7454 (__arm_vdupq_n_s8): Remove.
7455 (__arm_vdupq_n_s16): Remove.
7456 (__arm_vdupq_n_s32): Remove.
7457 (__arm_vdupq_n_u8): Remove.
7458 (__arm_vdupq_n_u16): Remove.
7459 (__arm_vdupq_n_u32): Remove.
7460 (__arm_vdupq_m_n_u8): Remove.
7461 (__arm_vdupq_m_n_s8): Remove.
7462 (__arm_vdupq_m_n_u16): Remove.
7463 (__arm_vdupq_m_n_s16): Remove.
7464 (__arm_vdupq_m_n_u32): Remove.
7465 (__arm_vdupq_m_n_s32): Remove.
7466 (__arm_vdupq_x_n_s8): Remove.
7467 (__arm_vdupq_x_n_s16): Remove.
7468 (__arm_vdupq_x_n_s32): Remove.
7469 (__arm_vdupq_x_n_u8): Remove.
7470 (__arm_vdupq_x_n_u16): Remove.
7471 (__arm_vdupq_x_n_u32): Remove.
7472 (__arm_vdupq_n_f16): Remove.
7473 (__arm_vdupq_n_f32): Remove.
7474 (__arm_vdupq_m_n_f16): Remove.
7475 (__arm_vdupq_m_n_f32): Remove.
7476 (__arm_vdupq_x_n_f16): Remove.
7477 (__arm_vdupq_x_n_f32): Remove.
7478 (__arm_vdupq_n): Remove.
7479 (__arm_vdupq_m): Remove.
7481 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7483 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
7484 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
7486 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7488 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
7489 (MVE_FP_N_VDUPQ_ONLY): New.
7490 (mve_insn): Add vdupq.
7491 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
7492 (@mve_<mve_insn>q_n_f<mode>): ... this.
7493 (mve_vdupq_n_<supf><mode>): Rename into ...
7494 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7495 (mve_vdupq_m_n_<supf><mode>): Rename into ...
7496 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7497 (mve_vdupq_m_n_f<mode>): Rename into ...
7498 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
7500 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7502 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
7504 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
7506 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
7508 * config/arm/arm_mve.h (vrev16q): Remove.
7511 (vrev64q_m): Remove.
7512 (vrev16q_m): Remove.
7513 (vrev32q_m): Remove.
7514 (vrev16q_x): Remove.
7515 (vrev32q_x): Remove.
7516 (vrev64q_x): Remove.
7517 (vrev64q_f16): Remove.
7518 (vrev64q_f32): Remove.
7519 (vrev32q_f16): Remove.
7520 (vrev16q_s8): Remove.
7521 (vrev32q_s8): Remove.
7522 (vrev32q_s16): Remove.
7523 (vrev64q_s8): Remove.
7524 (vrev64q_s16): Remove.
7525 (vrev64q_s32): Remove.
7526 (vrev64q_u8): Remove.
7527 (vrev64q_u16): Remove.
7528 (vrev64q_u32): Remove.
7529 (vrev32q_u8): Remove.
7530 (vrev32q_u16): Remove.
7531 (vrev16q_u8): Remove.
7532 (vrev64q_m_u8): Remove.
7533 (vrev64q_m_s8): Remove.
7534 (vrev64q_m_u16): Remove.
7535 (vrev64q_m_s16): Remove.
7536 (vrev64q_m_u32): Remove.
7537 (vrev64q_m_s32): Remove.
7538 (vrev16q_m_s8): Remove.
7539 (vrev32q_m_f16): Remove.
7540 (vrev16q_m_u8): Remove.
7541 (vrev32q_m_s8): Remove.
7542 (vrev64q_m_f16): Remove.
7543 (vrev32q_m_u8): Remove.
7544 (vrev32q_m_s16): Remove.
7545 (vrev64q_m_f32): Remove.
7546 (vrev32q_m_u16): Remove.
7547 (vrev16q_x_s8): Remove.
7548 (vrev16q_x_u8): Remove.
7549 (vrev32q_x_s8): Remove.
7550 (vrev32q_x_s16): Remove.
7551 (vrev32q_x_u8): Remove.
7552 (vrev32q_x_u16): Remove.
7553 (vrev64q_x_s8): Remove.
7554 (vrev64q_x_s16): Remove.
7555 (vrev64q_x_s32): Remove.
7556 (vrev64q_x_u8): Remove.
7557 (vrev64q_x_u16): Remove.
7558 (vrev64q_x_u32): Remove.
7559 (vrev32q_x_f16): Remove.
7560 (vrev64q_x_f16): Remove.
7561 (vrev64q_x_f32): Remove.
7562 (__arm_vrev16q_s8): Remove.
7563 (__arm_vrev32q_s8): Remove.
7564 (__arm_vrev32q_s16): Remove.
7565 (__arm_vrev64q_s8): Remove.
7566 (__arm_vrev64q_s16): Remove.
7567 (__arm_vrev64q_s32): Remove.
7568 (__arm_vrev64q_u8): Remove.
7569 (__arm_vrev64q_u16): Remove.
7570 (__arm_vrev64q_u32): Remove.
7571 (__arm_vrev32q_u8): Remove.
7572 (__arm_vrev32q_u16): Remove.
7573 (__arm_vrev16q_u8): Remove.
7574 (__arm_vrev64q_m_u8): Remove.
7575 (__arm_vrev64q_m_s8): Remove.
7576 (__arm_vrev64q_m_u16): Remove.
7577 (__arm_vrev64q_m_s16): Remove.
7578 (__arm_vrev64q_m_u32): Remove.
7579 (__arm_vrev64q_m_s32): Remove.
7580 (__arm_vrev16q_m_s8): Remove.
7581 (__arm_vrev16q_m_u8): Remove.
7582 (__arm_vrev32q_m_s8): Remove.
7583 (__arm_vrev32q_m_u8): Remove.
7584 (__arm_vrev32q_m_s16): Remove.
7585 (__arm_vrev32q_m_u16): Remove.
7586 (__arm_vrev16q_x_s8): Remove.
7587 (__arm_vrev16q_x_u8): Remove.
7588 (__arm_vrev32q_x_s8): Remove.
7589 (__arm_vrev32q_x_s16): Remove.
7590 (__arm_vrev32q_x_u8): Remove.
7591 (__arm_vrev32q_x_u16): Remove.
7592 (__arm_vrev64q_x_s8): Remove.
7593 (__arm_vrev64q_x_s16): Remove.
7594 (__arm_vrev64q_x_s32): Remove.
7595 (__arm_vrev64q_x_u8): Remove.
7596 (__arm_vrev64q_x_u16): Remove.
7597 (__arm_vrev64q_x_u32): Remove.
7598 (__arm_vrev64q_f16): Remove.
7599 (__arm_vrev64q_f32): Remove.
7600 (__arm_vrev32q_f16): Remove.
7601 (__arm_vrev32q_m_f16): Remove.
7602 (__arm_vrev64q_m_f16): Remove.
7603 (__arm_vrev64q_m_f32): Remove.
7604 (__arm_vrev32q_x_f16): Remove.
7605 (__arm_vrev64q_x_f16): Remove.
7606 (__arm_vrev64q_x_f32): Remove.
7607 (__arm_vrev16q): Remove.
7608 (__arm_vrev32q): Remove.
7609 (__arm_vrev64q): Remove.
7610 (__arm_vrev64q_m): Remove.
7611 (__arm_vrev16q_m): Remove.
7612 (__arm_vrev32q_m): Remove.
7613 (__arm_vrev16q_x): Remove.
7614 (__arm_vrev32q_x): Remove.
7615 (__arm_vrev64q_x): Remove.
7617 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7619 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
7620 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
7621 (MVE_FP_M_VREV32Q_ONLY): New iterators.
7622 (mve_insn): Add vrev16q, vrev32q, vrev64q.
7623 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
7624 (@mve_<mve_insn>q_f<mode>): ... this
7625 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
7626 (mve_vrev64q_<supf><mode>): Rename into ...
7627 (@mve_<mve_insn>q_<supf><mode>): ... this.
7628 (mve_vrev32q_<supf><mode>): Rename into
7629 @mve_<mve_insn>q_<supf><mode>.
7630 (mve_vrev16q_<supf>v16qi): Rename into
7631 @mve_<mve_insn>q_<supf><mode>.
7632 (mve_vrev64q_m_<supf><mode>): Rename into
7633 @mve_<mve_insn>q_m_<supf><mode>.
7634 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
7635 (mve_vrev32q_m_<supf><mode>): Rename into
7636 @mve_<mve_insn>q_m_<supf><mode>.
7637 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
7638 (mve_vrev16q_m_<supf>v16qi): Rename into
7639 @mve_<mve_insn>q_m_<supf><mode>.
7641 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7643 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
7644 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
7645 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
7646 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
7647 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
7648 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
7649 * config/arm/arm-mve-builtins-functions.h (class
7650 unspec_based_mve_function_exact_insn_vcmp): New.
7651 * config/arm/arm-mve-builtins.cc
7652 (function_instance::has_inactive_argument): Handle vcmp.
7653 * config/arm/arm_mve.h (vcmpneq): Remove.
7661 (vcmpneq_m): Remove.
7662 (vcmphiq_m): Remove.
7663 (vcmpeqq_m): Remove.
7664 (vcmpcsq_m): Remove.
7665 (vcmpcsq_m_n): Remove.
7666 (vcmpltq_m): Remove.
7667 (vcmpleq_m): Remove.
7668 (vcmpgtq_m): Remove.
7669 (vcmpgeq_m): Remove.
7670 (vcmpneq_s8): Remove.
7671 (vcmpneq_s16): Remove.
7672 (vcmpneq_s32): Remove.
7673 (vcmpneq_u8): Remove.
7674 (vcmpneq_u16): Remove.
7675 (vcmpneq_u32): Remove.
7676 (vcmpneq_n_u8): Remove.
7677 (vcmphiq_u8): Remove.
7678 (vcmphiq_n_u8): Remove.
7679 (vcmpeqq_u8): Remove.
7680 (vcmpeqq_n_u8): Remove.
7681 (vcmpcsq_u8): Remove.
7682 (vcmpcsq_n_u8): Remove.
7683 (vcmpneq_n_s8): Remove.
7684 (vcmpltq_s8): Remove.
7685 (vcmpltq_n_s8): Remove.
7686 (vcmpleq_s8): Remove.
7687 (vcmpleq_n_s8): Remove.
7688 (vcmpgtq_s8): Remove.
7689 (vcmpgtq_n_s8): Remove.
7690 (vcmpgeq_s8): Remove.
7691 (vcmpgeq_n_s8): Remove.
7692 (vcmpeqq_s8): Remove.
7693 (vcmpeqq_n_s8): Remove.
7694 (vcmpneq_n_u16): Remove.
7695 (vcmphiq_u16): Remove.
7696 (vcmphiq_n_u16): Remove.
7697 (vcmpeqq_u16): Remove.
7698 (vcmpeqq_n_u16): Remove.
7699 (vcmpcsq_u16): Remove.
7700 (vcmpcsq_n_u16): Remove.
7701 (vcmpneq_n_s16): Remove.
7702 (vcmpltq_s16): Remove.
7703 (vcmpltq_n_s16): Remove.
7704 (vcmpleq_s16): Remove.
7705 (vcmpleq_n_s16): Remove.
7706 (vcmpgtq_s16): Remove.
7707 (vcmpgtq_n_s16): Remove.
7708 (vcmpgeq_s16): Remove.
7709 (vcmpgeq_n_s16): Remove.
7710 (vcmpeqq_s16): Remove.
7711 (vcmpeqq_n_s16): Remove.
7712 (vcmpneq_n_u32): Remove.
7713 (vcmphiq_u32): Remove.
7714 (vcmphiq_n_u32): Remove.
7715 (vcmpeqq_u32): Remove.
7716 (vcmpeqq_n_u32): Remove.
7717 (vcmpcsq_u32): Remove.
7718 (vcmpcsq_n_u32): Remove.
7719 (vcmpneq_n_s32): Remove.
7720 (vcmpltq_s32): Remove.
7721 (vcmpltq_n_s32): Remove.
7722 (vcmpleq_s32): Remove.
7723 (vcmpleq_n_s32): Remove.
7724 (vcmpgtq_s32): Remove.
7725 (vcmpgtq_n_s32): Remove.
7726 (vcmpgeq_s32): Remove.
7727 (vcmpgeq_n_s32): Remove.
7728 (vcmpeqq_s32): Remove.
7729 (vcmpeqq_n_s32): Remove.
7730 (vcmpneq_n_f16): Remove.
7731 (vcmpneq_f16): Remove.
7732 (vcmpltq_n_f16): Remove.
7733 (vcmpltq_f16): Remove.
7734 (vcmpleq_n_f16): Remove.
7735 (vcmpleq_f16): Remove.
7736 (vcmpgtq_n_f16): Remove.
7737 (vcmpgtq_f16): Remove.
7738 (vcmpgeq_n_f16): Remove.
7739 (vcmpgeq_f16): Remove.
7740 (vcmpeqq_n_f16): Remove.
7741 (vcmpeqq_f16): Remove.
7742 (vcmpneq_n_f32): Remove.
7743 (vcmpneq_f32): Remove.
7744 (vcmpltq_n_f32): Remove.
7745 (vcmpltq_f32): Remove.
7746 (vcmpleq_n_f32): Remove.
7747 (vcmpleq_f32): Remove.
7748 (vcmpgtq_n_f32): Remove.
7749 (vcmpgtq_f32): Remove.
7750 (vcmpgeq_n_f32): Remove.
7751 (vcmpgeq_f32): Remove.
7752 (vcmpeqq_n_f32): Remove.
7753 (vcmpeqq_f32): Remove.
7754 (vcmpeqq_m_f16): Remove.
7755 (vcmpeqq_m_f32): Remove.
7756 (vcmpneq_m_u8): Remove.
7757 (vcmpneq_m_n_u8): Remove.
7758 (vcmphiq_m_u8): Remove.
7759 (vcmphiq_m_n_u8): Remove.
7760 (vcmpeqq_m_u8): Remove.
7761 (vcmpeqq_m_n_u8): Remove.
7762 (vcmpcsq_m_u8): Remove.
7763 (vcmpcsq_m_n_u8): Remove.
7764 (vcmpneq_m_s8): Remove.
7765 (vcmpneq_m_n_s8): Remove.
7766 (vcmpltq_m_s8): Remove.
7767 (vcmpltq_m_n_s8): Remove.
7768 (vcmpleq_m_s8): Remove.
7769 (vcmpleq_m_n_s8): Remove.
7770 (vcmpgtq_m_s8): Remove.
7771 (vcmpgtq_m_n_s8): Remove.
7772 (vcmpgeq_m_s8): Remove.
7773 (vcmpgeq_m_n_s8): Remove.
7774 (vcmpeqq_m_s8): Remove.
7775 (vcmpeqq_m_n_s8): Remove.
7776 (vcmpneq_m_u16): Remove.
7777 (vcmpneq_m_n_u16): Remove.
7778 (vcmphiq_m_u16): Remove.
7779 (vcmphiq_m_n_u16): Remove.
7780 (vcmpeqq_m_u16): Remove.
7781 (vcmpeqq_m_n_u16): Remove.
7782 (vcmpcsq_m_u16): Remove.
7783 (vcmpcsq_m_n_u16): Remove.
7784 (vcmpneq_m_s16): Remove.
7785 (vcmpneq_m_n_s16): Remove.
7786 (vcmpltq_m_s16): Remove.
7787 (vcmpltq_m_n_s16): Remove.
7788 (vcmpleq_m_s16): Remove.
7789 (vcmpleq_m_n_s16): Remove.
7790 (vcmpgtq_m_s16): Remove.
7791 (vcmpgtq_m_n_s16): Remove.
7792 (vcmpgeq_m_s16): Remove.
7793 (vcmpgeq_m_n_s16): Remove.
7794 (vcmpeqq_m_s16): Remove.
7795 (vcmpeqq_m_n_s16): Remove.
7796 (vcmpneq_m_u32): Remove.
7797 (vcmpneq_m_n_u32): Remove.
7798 (vcmphiq_m_u32): Remove.
7799 (vcmphiq_m_n_u32): Remove.
7800 (vcmpeqq_m_u32): Remove.
7801 (vcmpeqq_m_n_u32): Remove.
7802 (vcmpcsq_m_u32): Remove.
7803 (vcmpcsq_m_n_u32): Remove.
7804 (vcmpneq_m_s32): Remove.
7805 (vcmpneq_m_n_s32): Remove.
7806 (vcmpltq_m_s32): Remove.
7807 (vcmpltq_m_n_s32): Remove.
7808 (vcmpleq_m_s32): Remove.
7809 (vcmpleq_m_n_s32): Remove.
7810 (vcmpgtq_m_s32): Remove.
7811 (vcmpgtq_m_n_s32): Remove.
7812 (vcmpgeq_m_s32): Remove.
7813 (vcmpgeq_m_n_s32): Remove.
7814 (vcmpeqq_m_s32): Remove.
7815 (vcmpeqq_m_n_s32): Remove.
7816 (vcmpeqq_m_n_f16): Remove.
7817 (vcmpgeq_m_f16): Remove.
7818 (vcmpgeq_m_n_f16): Remove.
7819 (vcmpgtq_m_f16): Remove.
7820 (vcmpgtq_m_n_f16): Remove.
7821 (vcmpleq_m_f16): Remove.
7822 (vcmpleq_m_n_f16): Remove.
7823 (vcmpltq_m_f16): Remove.
7824 (vcmpltq_m_n_f16): Remove.
7825 (vcmpneq_m_f16): Remove.
7826 (vcmpneq_m_n_f16): Remove.
7827 (vcmpeqq_m_n_f32): Remove.
7828 (vcmpgeq_m_f32): Remove.
7829 (vcmpgeq_m_n_f32): Remove.
7830 (vcmpgtq_m_f32): Remove.
7831 (vcmpgtq_m_n_f32): Remove.
7832 (vcmpleq_m_f32): Remove.
7833 (vcmpleq_m_n_f32): Remove.
7834 (vcmpltq_m_f32): Remove.
7835 (vcmpltq_m_n_f32): Remove.
7836 (vcmpneq_m_f32): Remove.
7837 (vcmpneq_m_n_f32): Remove.
7838 (__arm_vcmpneq_s8): Remove.
7839 (__arm_vcmpneq_s16): Remove.
7840 (__arm_vcmpneq_s32): Remove.
7841 (__arm_vcmpneq_u8): Remove.
7842 (__arm_vcmpneq_u16): Remove.
7843 (__arm_vcmpneq_u32): Remove.
7844 (__arm_vcmpneq_n_u8): Remove.
7845 (__arm_vcmphiq_u8): Remove.
7846 (__arm_vcmphiq_n_u8): Remove.
7847 (__arm_vcmpeqq_u8): Remove.
7848 (__arm_vcmpeqq_n_u8): Remove.
7849 (__arm_vcmpcsq_u8): Remove.
7850 (__arm_vcmpcsq_n_u8): Remove.
7851 (__arm_vcmpneq_n_s8): Remove.
7852 (__arm_vcmpltq_s8): Remove.
7853 (__arm_vcmpltq_n_s8): Remove.
7854 (__arm_vcmpleq_s8): Remove.
7855 (__arm_vcmpleq_n_s8): Remove.
7856 (__arm_vcmpgtq_s8): Remove.
7857 (__arm_vcmpgtq_n_s8): Remove.
7858 (__arm_vcmpgeq_s8): Remove.
7859 (__arm_vcmpgeq_n_s8): Remove.
7860 (__arm_vcmpeqq_s8): Remove.
7861 (__arm_vcmpeqq_n_s8): Remove.
7862 (__arm_vcmpneq_n_u16): Remove.
7863 (__arm_vcmphiq_u16): Remove.
7864 (__arm_vcmphiq_n_u16): Remove.
7865 (__arm_vcmpeqq_u16): Remove.
7866 (__arm_vcmpeqq_n_u16): Remove.
7867 (__arm_vcmpcsq_u16): Remove.
7868 (__arm_vcmpcsq_n_u16): Remove.
7869 (__arm_vcmpneq_n_s16): Remove.
7870 (__arm_vcmpltq_s16): Remove.
7871 (__arm_vcmpltq_n_s16): Remove.
7872 (__arm_vcmpleq_s16): Remove.
7873 (__arm_vcmpleq_n_s16): Remove.
7874 (__arm_vcmpgtq_s16): Remove.
7875 (__arm_vcmpgtq_n_s16): Remove.
7876 (__arm_vcmpgeq_s16): Remove.
7877 (__arm_vcmpgeq_n_s16): Remove.
7878 (__arm_vcmpeqq_s16): Remove.
7879 (__arm_vcmpeqq_n_s16): Remove.
7880 (__arm_vcmpneq_n_u32): Remove.
7881 (__arm_vcmphiq_u32): Remove.
7882 (__arm_vcmphiq_n_u32): Remove.
7883 (__arm_vcmpeqq_u32): Remove.
7884 (__arm_vcmpeqq_n_u32): Remove.
7885 (__arm_vcmpcsq_u32): Remove.
7886 (__arm_vcmpcsq_n_u32): Remove.
7887 (__arm_vcmpneq_n_s32): Remove.
7888 (__arm_vcmpltq_s32): Remove.
7889 (__arm_vcmpltq_n_s32): Remove.
7890 (__arm_vcmpleq_s32): Remove.
7891 (__arm_vcmpleq_n_s32): Remove.
7892 (__arm_vcmpgtq_s32): Remove.
7893 (__arm_vcmpgtq_n_s32): Remove.
7894 (__arm_vcmpgeq_s32): Remove.
7895 (__arm_vcmpgeq_n_s32): Remove.
7896 (__arm_vcmpeqq_s32): Remove.
7897 (__arm_vcmpeqq_n_s32): Remove.
7898 (__arm_vcmpneq_m_u8): Remove.
7899 (__arm_vcmpneq_m_n_u8): Remove.
7900 (__arm_vcmphiq_m_u8): Remove.
7901 (__arm_vcmphiq_m_n_u8): Remove.
7902 (__arm_vcmpeqq_m_u8): Remove.
7903 (__arm_vcmpeqq_m_n_u8): Remove.
7904 (__arm_vcmpcsq_m_u8): Remove.
7905 (__arm_vcmpcsq_m_n_u8): Remove.
7906 (__arm_vcmpneq_m_s8): Remove.
7907 (__arm_vcmpneq_m_n_s8): Remove.
7908 (__arm_vcmpltq_m_s8): Remove.
7909 (__arm_vcmpltq_m_n_s8): Remove.
7910 (__arm_vcmpleq_m_s8): Remove.
7911 (__arm_vcmpleq_m_n_s8): Remove.
7912 (__arm_vcmpgtq_m_s8): Remove.
7913 (__arm_vcmpgtq_m_n_s8): Remove.
7914 (__arm_vcmpgeq_m_s8): Remove.
7915 (__arm_vcmpgeq_m_n_s8): Remove.
7916 (__arm_vcmpeqq_m_s8): Remove.
7917 (__arm_vcmpeqq_m_n_s8): Remove.
7918 (__arm_vcmpneq_m_u16): Remove.
7919 (__arm_vcmpneq_m_n_u16): Remove.
7920 (__arm_vcmphiq_m_u16): Remove.
7921 (__arm_vcmphiq_m_n_u16): Remove.
7922 (__arm_vcmpeqq_m_u16): Remove.
7923 (__arm_vcmpeqq_m_n_u16): Remove.
7924 (__arm_vcmpcsq_m_u16): Remove.
7925 (__arm_vcmpcsq_m_n_u16): Remove.
7926 (__arm_vcmpneq_m_s16): Remove.
7927 (__arm_vcmpneq_m_n_s16): Remove.
7928 (__arm_vcmpltq_m_s16): Remove.
7929 (__arm_vcmpltq_m_n_s16): Remove.
7930 (__arm_vcmpleq_m_s16): Remove.
7931 (__arm_vcmpleq_m_n_s16): Remove.
7932 (__arm_vcmpgtq_m_s16): Remove.
7933 (__arm_vcmpgtq_m_n_s16): Remove.
7934 (__arm_vcmpgeq_m_s16): Remove.
7935 (__arm_vcmpgeq_m_n_s16): Remove.
7936 (__arm_vcmpeqq_m_s16): Remove.
7937 (__arm_vcmpeqq_m_n_s16): Remove.
7938 (__arm_vcmpneq_m_u32): Remove.
7939 (__arm_vcmpneq_m_n_u32): Remove.
7940 (__arm_vcmphiq_m_u32): Remove.
7941 (__arm_vcmphiq_m_n_u32): Remove.
7942 (__arm_vcmpeqq_m_u32): Remove.
7943 (__arm_vcmpeqq_m_n_u32): Remove.
7944 (__arm_vcmpcsq_m_u32): Remove.
7945 (__arm_vcmpcsq_m_n_u32): Remove.
7946 (__arm_vcmpneq_m_s32): Remove.
7947 (__arm_vcmpneq_m_n_s32): Remove.
7948 (__arm_vcmpltq_m_s32): Remove.
7949 (__arm_vcmpltq_m_n_s32): Remove.
7950 (__arm_vcmpleq_m_s32): Remove.
7951 (__arm_vcmpleq_m_n_s32): Remove.
7952 (__arm_vcmpgtq_m_s32): Remove.
7953 (__arm_vcmpgtq_m_n_s32): Remove.
7954 (__arm_vcmpgeq_m_s32): Remove.
7955 (__arm_vcmpgeq_m_n_s32): Remove.
7956 (__arm_vcmpeqq_m_s32): Remove.
7957 (__arm_vcmpeqq_m_n_s32): Remove.
7958 (__arm_vcmpneq_n_f16): Remove.
7959 (__arm_vcmpneq_f16): Remove.
7960 (__arm_vcmpltq_n_f16): Remove.
7961 (__arm_vcmpltq_f16): Remove.
7962 (__arm_vcmpleq_n_f16): Remove.
7963 (__arm_vcmpleq_f16): Remove.
7964 (__arm_vcmpgtq_n_f16): Remove.
7965 (__arm_vcmpgtq_f16): Remove.
7966 (__arm_vcmpgeq_n_f16): Remove.
7967 (__arm_vcmpgeq_f16): Remove.
7968 (__arm_vcmpeqq_n_f16): Remove.
7969 (__arm_vcmpeqq_f16): Remove.
7970 (__arm_vcmpneq_n_f32): Remove.
7971 (__arm_vcmpneq_f32): Remove.
7972 (__arm_vcmpltq_n_f32): Remove.
7973 (__arm_vcmpltq_f32): Remove.
7974 (__arm_vcmpleq_n_f32): Remove.
7975 (__arm_vcmpleq_f32): Remove.
7976 (__arm_vcmpgtq_n_f32): Remove.
7977 (__arm_vcmpgtq_f32): Remove.
7978 (__arm_vcmpgeq_n_f32): Remove.
7979 (__arm_vcmpgeq_f32): Remove.
7980 (__arm_vcmpeqq_n_f32): Remove.
7981 (__arm_vcmpeqq_f32): Remove.
7982 (__arm_vcmpeqq_m_f16): Remove.
7983 (__arm_vcmpeqq_m_f32): Remove.
7984 (__arm_vcmpeqq_m_n_f16): Remove.
7985 (__arm_vcmpgeq_m_f16): Remove.
7986 (__arm_vcmpgeq_m_n_f16): Remove.
7987 (__arm_vcmpgtq_m_f16): Remove.
7988 (__arm_vcmpgtq_m_n_f16): Remove.
7989 (__arm_vcmpleq_m_f16): Remove.
7990 (__arm_vcmpleq_m_n_f16): Remove.
7991 (__arm_vcmpltq_m_f16): Remove.
7992 (__arm_vcmpltq_m_n_f16): Remove.
7993 (__arm_vcmpneq_m_f16): Remove.
7994 (__arm_vcmpneq_m_n_f16): Remove.
7995 (__arm_vcmpeqq_m_n_f32): Remove.
7996 (__arm_vcmpgeq_m_f32): Remove.
7997 (__arm_vcmpgeq_m_n_f32): Remove.
7998 (__arm_vcmpgtq_m_f32): Remove.
7999 (__arm_vcmpgtq_m_n_f32): Remove.
8000 (__arm_vcmpleq_m_f32): Remove.
8001 (__arm_vcmpleq_m_n_f32): Remove.
8002 (__arm_vcmpltq_m_f32): Remove.
8003 (__arm_vcmpltq_m_n_f32): Remove.
8004 (__arm_vcmpneq_m_f32): Remove.
8005 (__arm_vcmpneq_m_n_f32): Remove.
8006 (__arm_vcmpneq): Remove.
8007 (__arm_vcmphiq): Remove.
8008 (__arm_vcmpeqq): Remove.
8009 (__arm_vcmpcsq): Remove.
8010 (__arm_vcmpltq): Remove.
8011 (__arm_vcmpleq): Remove.
8012 (__arm_vcmpgtq): Remove.
8013 (__arm_vcmpgeq): Remove.
8014 (__arm_vcmpneq_m): Remove.
8015 (__arm_vcmphiq_m): Remove.
8016 (__arm_vcmpeqq_m): Remove.
8017 (__arm_vcmpcsq_m): Remove.
8018 (__arm_vcmpltq_m): Remove.
8019 (__arm_vcmpleq_m): Remove.
8020 (__arm_vcmpgtq_m): Remove.
8021 (__arm_vcmpgeq_m): Remove.
8023 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
8025 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
8026 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
8028 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
8030 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
8031 (MVE_CMP_M_N_F, mve_cmp_op1): New.
8034 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
8035 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
8036 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
8037 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
8038 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
8039 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
8040 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
8041 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
8042 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
8043 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
8045 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
8046 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
8047 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
8048 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
8049 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
8051 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
8052 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
8053 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
8054 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
8055 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
8057 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
8059 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
8060 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
8061 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
8064 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
8066 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
8067 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
8068 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
8069 Simplify parity(rotate(x,y)) as parity(x).
8071 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8073 * config/riscv/autovec.md (@vec_series<mode>): New pattern
8074 * config/riscv/riscv-protos.h (expand_vec_series): New function.
8075 * config/riscv/riscv-v.cc (emit_binop): Ditto.
8076 (emit_index_op): Ditto.
8077 (expand_vec_series): Ditto.
8078 (expand_const_vector): Add series vector handling.
8079 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
8081 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
8083 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
8084 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
8085 (*concat<mode><dwi>3_2): Likewise.
8086 (*concat<mode><dwi>3_3): Likewise.
8087 (*concat<mode><dwi>3_4): Likewise.
8088 (*concat<mode><dwi>3_5): Likewise.
8089 (*concat<mode><dwi>3_6): Likewise.
8090 (*concat<mode><dwi>3_7): Likewise.
8092 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
8095 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
8096 (<insn>v4qiv4hi2): New expander.
8097 (<insn>v2hiv2si2): Ditto.
8098 (<insn>v2qiv2si2): Ditto.
8099 (<insn>v2qiv2hi2): Ditto.
8101 2023-05-10 Jeff Law <jlaw@ventanamicro>
8103 * config/h8300/constraints.md (Q): Make this a special memory
8107 2023-05-10 Jakub Jelinek <jakub@redhat.com>
8110 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
8111 if t is void_list_node.
8113 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8115 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
8116 (aarch64_sqmovun<mode>_insn_be): Delete.
8117 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
8118 (aarch64_sqmovun<mode>): Delete expander.
8120 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8123 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
8125 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
8126 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
8127 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
8129 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8132 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
8134 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
8135 (aarch64_<sur>qadd<mode>): Rename to...
8136 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
8138 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8140 * config/aarch64/aarch64-simd.md
8141 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
8142 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
8143 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
8144 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
8146 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8149 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
8150 (aarch64_xtn<mode>_insn_be): Likewise.
8151 (trunc<mode><Vnarrowq>2): Rename to...
8152 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
8153 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
8154 (aarch64_<su>qmovn<mode>): Likewise.
8155 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
8156 (aarch64_<su>qmovn<mode>_insn_le): Delete.
8157 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
8159 2023-05-10 Li Xu <xuli1@eswincomputing.com>
8161 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
8162 intruction replace null avl with (const_int 0).
8164 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8166 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
8169 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8172 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
8173 (source_equal_p): Fix dead loop in vsetvl avl checking.
8175 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
8177 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
8178 of modeadjusted_dccr.
8180 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8182 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
8183 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
8184 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
8185 * config/arm/arm-mve-builtins.cc
8186 (function_instance::has_inactive_argument): Handle vmaxaq and
8188 * config/arm/arm_mve.h (vminaq): Remove.
8192 (vminaq_s8): Remove.
8193 (vmaxaq_s8): Remove.
8194 (vminaq_s16): Remove.
8195 (vmaxaq_s16): Remove.
8196 (vminaq_s32): Remove.
8197 (vmaxaq_s32): Remove.
8198 (vminaq_m_s8): Remove.
8199 (vmaxaq_m_s8): Remove.
8200 (vminaq_m_s16): Remove.
8201 (vmaxaq_m_s16): Remove.
8202 (vminaq_m_s32): Remove.
8203 (vmaxaq_m_s32): Remove.
8204 (__arm_vminaq_s8): Remove.
8205 (__arm_vmaxaq_s8): Remove.
8206 (__arm_vminaq_s16): Remove.
8207 (__arm_vmaxaq_s16): Remove.
8208 (__arm_vminaq_s32): Remove.
8209 (__arm_vmaxaq_s32): Remove.
8210 (__arm_vminaq_m_s8): Remove.
8211 (__arm_vmaxaq_m_s8): Remove.
8212 (__arm_vminaq_m_s16): Remove.
8213 (__arm_vmaxaq_m_s16): Remove.
8214 (__arm_vminaq_m_s32): Remove.
8215 (__arm_vmaxaq_m_s32): Remove.
8216 (__arm_vminaq): Remove.
8217 (__arm_vmaxaq): Remove.
8218 (__arm_vminaq_m): Remove.
8219 (__arm_vmaxaq_m): Remove.
8221 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8223 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
8225 (mve_insn): Add vmaxa, vmina.
8226 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
8227 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
8229 (@mve_<mve_insn>q_<supf><mode>): ... this.
8230 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
8231 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8233 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8235 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
8236 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
8238 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8240 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
8241 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
8242 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
8243 * config/arm/arm-mve-builtins.cc
8244 (function_instance::has_inactive_argument): Handle vmaxnmaq and
8246 * config/arm/arm_mve.h (vminnmaq): Remove.
8248 (vmaxnmaq_m): Remove.
8249 (vminnmaq_m): Remove.
8250 (vminnmaq_f16): Remove.
8251 (vmaxnmaq_f16): Remove.
8252 (vminnmaq_f32): Remove.
8253 (vmaxnmaq_f32): Remove.
8254 (vmaxnmaq_m_f16): Remove.
8255 (vminnmaq_m_f16): Remove.
8256 (vmaxnmaq_m_f32): Remove.
8257 (vminnmaq_m_f32): Remove.
8258 (__arm_vminnmaq_f16): Remove.
8259 (__arm_vmaxnmaq_f16): Remove.
8260 (__arm_vminnmaq_f32): Remove.
8261 (__arm_vmaxnmaq_f32): Remove.
8262 (__arm_vmaxnmaq_m_f16): Remove.
8263 (__arm_vminnmaq_m_f16): Remove.
8264 (__arm_vmaxnmaq_m_f32): Remove.
8265 (__arm_vminnmaq_m_f32): Remove.
8266 (__arm_vminnmaq): Remove.
8267 (__arm_vmaxnmaq): Remove.
8268 (__arm_vmaxnmaq_m): Remove.
8269 (__arm_vminnmaq_m): Remove.
8271 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8273 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
8274 (MVE_VMAXNMA_VMINNMAQ_M): New.
8275 (mve_insn): Add vmaxnma, vminnma.
8276 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
8278 (@mve_<mve_insn>q_f<mode>): ... this.
8279 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
8280 (@mve_<mve_insn>q_m_f<mode>): ... this.
8282 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8284 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
8285 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
8286 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
8287 (vminnmavq, vminnmvq): New.
8288 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
8289 (vminnmavq, vminnmvq): New.
8290 * config/arm/arm_mve.h (vminnmvq): Remove.
8291 (vminnmavq): Remove.
8293 (vmaxnmavq): Remove.
8294 (vmaxnmavq_p): Remove.
8295 (vmaxnmvq_p): Remove.
8296 (vminnmavq_p): Remove.
8297 (vminnmvq_p): Remove.
8298 (vminnmvq_f16): Remove.
8299 (vminnmavq_f16): Remove.
8300 (vmaxnmvq_f16): Remove.
8301 (vmaxnmavq_f16): Remove.
8302 (vminnmvq_f32): Remove.
8303 (vminnmavq_f32): Remove.
8304 (vmaxnmvq_f32): Remove.
8305 (vmaxnmavq_f32): Remove.
8306 (vmaxnmavq_p_f16): Remove.
8307 (vmaxnmvq_p_f16): Remove.
8308 (vminnmavq_p_f16): Remove.
8309 (vminnmvq_p_f16): Remove.
8310 (vmaxnmavq_p_f32): Remove.
8311 (vmaxnmvq_p_f32): Remove.
8312 (vminnmavq_p_f32): Remove.
8313 (vminnmvq_p_f32): Remove.
8314 (__arm_vminnmvq_f16): Remove.
8315 (__arm_vminnmavq_f16): Remove.
8316 (__arm_vmaxnmvq_f16): Remove.
8317 (__arm_vmaxnmavq_f16): Remove.
8318 (__arm_vminnmvq_f32): Remove.
8319 (__arm_vminnmavq_f32): Remove.
8320 (__arm_vmaxnmvq_f32): Remove.
8321 (__arm_vmaxnmavq_f32): Remove.
8322 (__arm_vmaxnmavq_p_f16): Remove.
8323 (__arm_vmaxnmvq_p_f16): Remove.
8324 (__arm_vminnmavq_p_f16): Remove.
8325 (__arm_vminnmvq_p_f16): Remove.
8326 (__arm_vmaxnmavq_p_f32): Remove.
8327 (__arm_vmaxnmvq_p_f32): Remove.
8328 (__arm_vminnmavq_p_f32): Remove.
8329 (__arm_vminnmvq_p_f32): Remove.
8330 (__arm_vminnmvq): Remove.
8331 (__arm_vminnmavq): Remove.
8332 (__arm_vmaxnmvq): Remove.
8333 (__arm_vmaxnmavq): Remove.
8334 (__arm_vmaxnmavq_p): Remove.
8335 (__arm_vmaxnmvq_p): Remove.
8336 (__arm_vminnmavq_p): Remove.
8337 (__arm_vminnmvq_p): Remove.
8338 (__arm_vmaxnmavq_m): Remove.
8339 (__arm_vmaxnmvq_m): Remove.
8341 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8343 * config/arm/arm-mve-builtins-functions.h
8344 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
8346 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8348 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
8349 (MVE_VMAXNMxV_MINNMxVQ_P): New.
8350 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
8351 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
8352 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
8353 (@mve_<mve_insn>q_f<mode>): ... this.
8354 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
8355 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
8356 (@mve_<mve_insn>q_p_f<mode>): ... this.
8358 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8360 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
8361 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
8362 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
8363 * config/arm/arm_mve.h (vminnmq): Remove.
8365 (vmaxnmq_m): Remove.
8366 (vminnmq_m): Remove.
8367 (vminnmq_x): Remove.
8368 (vmaxnmq_x): Remove.
8369 (vminnmq_f16): Remove.
8370 (vmaxnmq_f16): Remove.
8371 (vminnmq_f32): Remove.
8372 (vmaxnmq_f32): Remove.
8373 (vmaxnmq_m_f32): Remove.
8374 (vmaxnmq_m_f16): Remove.
8375 (vminnmq_m_f32): Remove.
8376 (vminnmq_m_f16): Remove.
8377 (vminnmq_x_f16): Remove.
8378 (vminnmq_x_f32): Remove.
8379 (vmaxnmq_x_f16): Remove.
8380 (vmaxnmq_x_f32): Remove.
8381 (__arm_vminnmq_f16): Remove.
8382 (__arm_vmaxnmq_f16): Remove.
8383 (__arm_vminnmq_f32): Remove.
8384 (__arm_vmaxnmq_f32): Remove.
8385 (__arm_vmaxnmq_m_f32): Remove.
8386 (__arm_vmaxnmq_m_f16): Remove.
8387 (__arm_vminnmq_m_f32): Remove.
8388 (__arm_vminnmq_m_f16): Remove.
8389 (__arm_vminnmq_x_f16): Remove.
8390 (__arm_vminnmq_x_f32): Remove.
8391 (__arm_vmaxnmq_x_f16): Remove.
8392 (__arm_vmaxnmq_x_f32): Remove.
8393 (__arm_vminnmq): Remove.
8394 (__arm_vmaxnmq): Remove.
8395 (__arm_vmaxnmq_m): Remove.
8396 (__arm_vminnmq_m): Remove.
8397 (__arm_vminnmq_x): Remove.
8398 (__arm_vmaxnmq_x): Remove.
8400 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8402 * config/arm/iterators.md (MAX_MIN_F): New.
8403 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
8404 (mve_insn): Add vmaxnm, vminnm.
8405 (max_min_f_str): New.
8406 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
8408 (@mve_<max_min_f_str>q_f<mode>): ... this.
8409 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
8410 (@mve_<mve_insn>q_m_f<mode>): ... this.
8412 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8414 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
8415 (smax<mode>3): Likewise.
8417 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8419 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
8420 (FUNCTION_PRED_P_S): New.
8421 (vmaxavq, vminavq, vmaxvq, vminvq): New.
8422 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
8424 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
8426 * config/arm/arm_mve.h (vminvq): Remove.
8430 (vminvq_u8): Remove.
8431 (vmaxvq_u8): Remove.
8432 (vminvq_s8): Remove.
8433 (vmaxvq_s8): Remove.
8434 (vminvq_u16): Remove.
8435 (vmaxvq_u16): Remove.
8436 (vminvq_s16): Remove.
8437 (vmaxvq_s16): Remove.
8438 (vminvq_u32): Remove.
8439 (vmaxvq_u32): Remove.
8440 (vminvq_s32): Remove.
8441 (vmaxvq_s32): Remove.
8442 (vminvq_p_u8): Remove.
8443 (vmaxvq_p_u8): Remove.
8444 (vminvq_p_s8): Remove.
8445 (vmaxvq_p_s8): Remove.
8446 (vminvq_p_u16): Remove.
8447 (vmaxvq_p_u16): Remove.
8448 (vminvq_p_s16): Remove.
8449 (vmaxvq_p_s16): Remove.
8450 (vminvq_p_u32): Remove.
8451 (vmaxvq_p_u32): Remove.
8452 (vminvq_p_s32): Remove.
8453 (vmaxvq_p_s32): Remove.
8454 (__arm_vminvq_u8): Remove.
8455 (__arm_vmaxvq_u8): Remove.
8456 (__arm_vminvq_s8): Remove.
8457 (__arm_vmaxvq_s8): Remove.
8458 (__arm_vminvq_u16): Remove.
8459 (__arm_vmaxvq_u16): Remove.
8460 (__arm_vminvq_s16): Remove.
8461 (__arm_vmaxvq_s16): Remove.
8462 (__arm_vminvq_u32): Remove.
8463 (__arm_vmaxvq_u32): Remove.
8464 (__arm_vminvq_s32): Remove.
8465 (__arm_vmaxvq_s32): Remove.
8466 (__arm_vminvq_p_u8): Remove.
8467 (__arm_vmaxvq_p_u8): Remove.
8468 (__arm_vminvq_p_s8): Remove.
8469 (__arm_vmaxvq_p_s8): Remove.
8470 (__arm_vminvq_p_u16): Remove.
8471 (__arm_vmaxvq_p_u16): Remove.
8472 (__arm_vminvq_p_s16): Remove.
8473 (__arm_vmaxvq_p_s16): Remove.
8474 (__arm_vminvq_p_u32): Remove.
8475 (__arm_vmaxvq_p_u32): Remove.
8476 (__arm_vminvq_p_s32): Remove.
8477 (__arm_vmaxvq_p_s32): Remove.
8478 (__arm_vminvq): Remove.
8479 (__arm_vmaxvq): Remove.
8480 (__arm_vminvq_p): Remove.
8481 (__arm_vmaxvq_p): Remove.
8484 (vminavq_p): Remove.
8485 (vmaxavq_p): Remove.
8486 (vminavq_s8): Remove.
8487 (vmaxavq_s8): Remove.
8488 (vminavq_s16): Remove.
8489 (vmaxavq_s16): Remove.
8490 (vminavq_s32): Remove.
8491 (vmaxavq_s32): Remove.
8492 (vminavq_p_s8): Remove.
8493 (vmaxavq_p_s8): Remove.
8494 (vminavq_p_s16): Remove.
8495 (vmaxavq_p_s16): Remove.
8496 (vminavq_p_s32): Remove.
8497 (vmaxavq_p_s32): Remove.
8498 (__arm_vminavq_s8): Remove.
8499 (__arm_vmaxavq_s8): Remove.
8500 (__arm_vminavq_s16): Remove.
8501 (__arm_vmaxavq_s16): Remove.
8502 (__arm_vminavq_s32): Remove.
8503 (__arm_vmaxavq_s32): Remove.
8504 (__arm_vminavq_p_s8): Remove.
8505 (__arm_vmaxavq_p_s8): Remove.
8506 (__arm_vminavq_p_s16): Remove.
8507 (__arm_vmaxavq_p_s16): Remove.
8508 (__arm_vminavq_p_s32): Remove.
8509 (__arm_vmaxavq_p_s32): Remove.
8510 (__arm_vminavq): Remove.
8511 (__arm_vmaxavq): Remove.
8512 (__arm_vminavq_p): Remove.
8513 (__arm_vmaxavq_p): Remove.
8515 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8517 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
8518 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
8519 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
8520 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
8521 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
8522 (@mve_<mve_insn>q_<supf><mode>): ... this.
8523 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
8524 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
8525 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
8527 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8529 * config/arm/arm-mve-builtins-functions.h (class
8530 unspec_mve_function_exact_insn_pred_p): New.
8532 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8534 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
8535 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
8537 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8539 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
8540 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
8542 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
8544 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
8546 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
8547 (ADJUST_REG_ALLOC_ORDER): Likewise.
8548 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
8550 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
8551 Upa rather than Upl for unpredicated movprfx alternatives.
8553 2023-05-09 Jeff Law <jlaw@ventanamicro>
8555 * config/h8300/testcompare.md: Add peephole2 which uses a memory
8556 load to set flags, thus eliminating a compare against zero.
8558 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8560 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
8561 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
8562 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
8563 * config/arm/arm_mve.h (vshlltq): Remove.
8565 (vshllbq_m): Remove.
8566 (vshlltq_m): Remove.
8567 (vshllbq_x): Remove.
8568 (vshlltq_x): Remove.
8569 (vshlltq_n_u8): Remove.
8570 (vshllbq_n_u8): Remove.
8571 (vshlltq_n_s8): Remove.
8572 (vshllbq_n_s8): Remove.
8573 (vshlltq_n_u16): Remove.
8574 (vshllbq_n_u16): Remove.
8575 (vshlltq_n_s16): Remove.
8576 (vshllbq_n_s16): Remove.
8577 (vshllbq_m_n_s8): Remove.
8578 (vshllbq_m_n_s16): Remove.
8579 (vshllbq_m_n_u8): Remove.
8580 (vshllbq_m_n_u16): Remove.
8581 (vshlltq_m_n_s8): Remove.
8582 (vshlltq_m_n_s16): Remove.
8583 (vshlltq_m_n_u8): Remove.
8584 (vshlltq_m_n_u16): Remove.
8585 (vshllbq_x_n_s8): Remove.
8586 (vshllbq_x_n_s16): Remove.
8587 (vshllbq_x_n_u8): Remove.
8588 (vshllbq_x_n_u16): Remove.
8589 (vshlltq_x_n_s8): Remove.
8590 (vshlltq_x_n_s16): Remove.
8591 (vshlltq_x_n_u8): Remove.
8592 (vshlltq_x_n_u16): Remove.
8593 (__arm_vshlltq_n_u8): Remove.
8594 (__arm_vshllbq_n_u8): Remove.
8595 (__arm_vshlltq_n_s8): Remove.
8596 (__arm_vshllbq_n_s8): Remove.
8597 (__arm_vshlltq_n_u16): Remove.
8598 (__arm_vshllbq_n_u16): Remove.
8599 (__arm_vshlltq_n_s16): Remove.
8600 (__arm_vshllbq_n_s16): Remove.
8601 (__arm_vshllbq_m_n_s8): Remove.
8602 (__arm_vshllbq_m_n_s16): Remove.
8603 (__arm_vshllbq_m_n_u8): Remove.
8604 (__arm_vshllbq_m_n_u16): Remove.
8605 (__arm_vshlltq_m_n_s8): Remove.
8606 (__arm_vshlltq_m_n_s16): Remove.
8607 (__arm_vshlltq_m_n_u8): Remove.
8608 (__arm_vshlltq_m_n_u16): Remove.
8609 (__arm_vshllbq_x_n_s8): Remove.
8610 (__arm_vshllbq_x_n_s16): Remove.
8611 (__arm_vshllbq_x_n_u8): Remove.
8612 (__arm_vshllbq_x_n_u16): Remove.
8613 (__arm_vshlltq_x_n_s8): Remove.
8614 (__arm_vshlltq_x_n_s16): Remove.
8615 (__arm_vshlltq_x_n_u8): Remove.
8616 (__arm_vshlltq_x_n_u16): Remove.
8617 (__arm_vshlltq): Remove.
8618 (__arm_vshllbq): Remove.
8619 (__arm_vshllbq_m): Remove.
8620 (__arm_vshlltq_m): Remove.
8621 (__arm_vshllbq_x): Remove.
8622 (__arm_vshlltq_x): Remove.
8624 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8626 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
8627 (VSHLLBQ_N, VSHLLTQ_N): Remove.
8629 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
8631 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
8632 (mve_vshlltq_n_<supf><mode>): Merge into ...
8633 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8634 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
8636 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8638 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8640 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
8641 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
8643 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8645 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
8646 (vqmovntq, vqmovunbq, vqmovuntq): New.
8647 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
8648 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
8649 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
8650 (vqmovntq, vqmovunbq, vqmovuntq): New.
8651 * config/arm/arm-mve-builtins.cc
8652 (function_instance::has_inactive_argument): Handle vmovnbq,
8653 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
8654 * config/arm/arm_mve.h (vqmovntq): Remove.
8656 (vqmovnbq_m): Remove.
8657 (vqmovntq_m): Remove.
8658 (vqmovntq_u16): Remove.
8659 (vqmovnbq_u16): Remove.
8660 (vqmovntq_s16): Remove.
8661 (vqmovnbq_s16): Remove.
8662 (vqmovntq_u32): Remove.
8663 (vqmovnbq_u32): Remove.
8664 (vqmovntq_s32): Remove.
8665 (vqmovnbq_s32): Remove.
8666 (vqmovnbq_m_s16): Remove.
8667 (vqmovntq_m_s16): Remove.
8668 (vqmovnbq_m_u16): Remove.
8669 (vqmovntq_m_u16): Remove.
8670 (vqmovnbq_m_s32): Remove.
8671 (vqmovntq_m_s32): Remove.
8672 (vqmovnbq_m_u32): Remove.
8673 (vqmovntq_m_u32): Remove.
8674 (__arm_vqmovntq_u16): Remove.
8675 (__arm_vqmovnbq_u16): Remove.
8676 (__arm_vqmovntq_s16): Remove.
8677 (__arm_vqmovnbq_s16): Remove.
8678 (__arm_vqmovntq_u32): Remove.
8679 (__arm_vqmovnbq_u32): Remove.
8680 (__arm_vqmovntq_s32): Remove.
8681 (__arm_vqmovnbq_s32): Remove.
8682 (__arm_vqmovnbq_m_s16): Remove.
8683 (__arm_vqmovntq_m_s16): Remove.
8684 (__arm_vqmovnbq_m_u16): Remove.
8685 (__arm_vqmovntq_m_u16): Remove.
8686 (__arm_vqmovnbq_m_s32): Remove.
8687 (__arm_vqmovntq_m_s32): Remove.
8688 (__arm_vqmovnbq_m_u32): Remove.
8689 (__arm_vqmovntq_m_u32): Remove.
8690 (__arm_vqmovntq): Remove.
8691 (__arm_vqmovnbq): Remove.
8692 (__arm_vqmovnbq_m): Remove.
8693 (__arm_vqmovntq_m): Remove.
8696 (vmovnbq_m): Remove.
8697 (vmovntq_m): Remove.
8698 (vmovntq_u16): Remove.
8699 (vmovnbq_u16): Remove.
8700 (vmovntq_s16): Remove.
8701 (vmovnbq_s16): Remove.
8702 (vmovntq_u32): Remove.
8703 (vmovnbq_u32): Remove.
8704 (vmovntq_s32): Remove.
8705 (vmovnbq_s32): Remove.
8706 (vmovnbq_m_s16): Remove.
8707 (vmovntq_m_s16): Remove.
8708 (vmovnbq_m_u16): Remove.
8709 (vmovntq_m_u16): Remove.
8710 (vmovnbq_m_s32): Remove.
8711 (vmovntq_m_s32): Remove.
8712 (vmovnbq_m_u32): Remove.
8713 (vmovntq_m_u32): Remove.
8714 (__arm_vmovntq_u16): Remove.
8715 (__arm_vmovnbq_u16): Remove.
8716 (__arm_vmovntq_s16): Remove.
8717 (__arm_vmovnbq_s16): Remove.
8718 (__arm_vmovntq_u32): Remove.
8719 (__arm_vmovnbq_u32): Remove.
8720 (__arm_vmovntq_s32): Remove.
8721 (__arm_vmovnbq_s32): Remove.
8722 (__arm_vmovnbq_m_s16): Remove.
8723 (__arm_vmovntq_m_s16): Remove.
8724 (__arm_vmovnbq_m_u16): Remove.
8725 (__arm_vmovntq_m_u16): Remove.
8726 (__arm_vmovnbq_m_s32): Remove.
8727 (__arm_vmovntq_m_s32): Remove.
8728 (__arm_vmovnbq_m_u32): Remove.
8729 (__arm_vmovntq_m_u32): Remove.
8730 (__arm_vmovntq): Remove.
8731 (__arm_vmovnbq): Remove.
8732 (__arm_vmovnbq_m): Remove.
8733 (__arm_vmovntq_m): Remove.
8734 (vqmovuntq): Remove.
8735 (vqmovunbq): Remove.
8736 (vqmovunbq_m): Remove.
8737 (vqmovuntq_m): Remove.
8738 (vqmovuntq_s16): Remove.
8739 (vqmovunbq_s16): Remove.
8740 (vqmovuntq_s32): Remove.
8741 (vqmovunbq_s32): Remove.
8742 (vqmovunbq_m_s16): Remove.
8743 (vqmovuntq_m_s16): Remove.
8744 (vqmovunbq_m_s32): Remove.
8745 (vqmovuntq_m_s32): Remove.
8746 (__arm_vqmovuntq_s16): Remove.
8747 (__arm_vqmovunbq_s16): Remove.
8748 (__arm_vqmovuntq_s32): Remove.
8749 (__arm_vqmovunbq_s32): Remove.
8750 (__arm_vqmovunbq_m_s16): Remove.
8751 (__arm_vqmovuntq_m_s16): Remove.
8752 (__arm_vqmovunbq_m_s32): Remove.
8753 (__arm_vqmovuntq_m_s32): Remove.
8754 (__arm_vqmovuntq): Remove.
8755 (__arm_vqmovunbq): Remove.
8756 (__arm_vqmovunbq_m): Remove.
8757 (__arm_vqmovuntq_m): Remove.
8759 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8761 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
8762 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
8765 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
8767 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
8768 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
8769 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
8770 (mve_vqmovuntq_s<mode>): Merge into ...
8771 (@mve_<mve_insn>q_<supf><mode>): ... this.
8772 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
8773 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
8774 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
8775 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8777 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8779 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
8780 (binary_move_narrow_unsigned): New.
8781 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
8782 (binary_move_narrow_unsigned): New.
8784 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8786 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
8787 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
8788 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
8789 (vrndpq, vrndq, vrndxq): New.
8790 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
8791 (vrndpq, vrndq, vrndxq): New.
8792 * config/arm/arm_mve.h (vrndxq): Remove.
8810 (vrndxq_f16): Remove.
8811 (vrndxq_f32): Remove.
8812 (vrndq_f16): Remove.
8813 (vrndq_f32): Remove.
8814 (vrndpq_f16): Remove.
8815 (vrndpq_f32): Remove.
8816 (vrndnq_f16): Remove.
8817 (vrndnq_f32): Remove.
8818 (vrndmq_f16): Remove.
8819 (vrndmq_f32): Remove.
8820 (vrndaq_f16): Remove.
8821 (vrndaq_f32): Remove.
8822 (vrndaq_m_f16): Remove.
8823 (vrndmq_m_f16): Remove.
8824 (vrndnq_m_f16): Remove.
8825 (vrndpq_m_f16): Remove.
8826 (vrndq_m_f16): Remove.
8827 (vrndxq_m_f16): Remove.
8828 (vrndaq_m_f32): Remove.
8829 (vrndmq_m_f32): Remove.
8830 (vrndnq_m_f32): Remove.
8831 (vrndpq_m_f32): Remove.
8832 (vrndq_m_f32): Remove.
8833 (vrndxq_m_f32): Remove.
8834 (vrndq_x_f16): Remove.
8835 (vrndq_x_f32): Remove.
8836 (vrndnq_x_f16): Remove.
8837 (vrndnq_x_f32): Remove.
8838 (vrndmq_x_f16): Remove.
8839 (vrndmq_x_f32): Remove.
8840 (vrndpq_x_f16): Remove.
8841 (vrndpq_x_f32): Remove.
8842 (vrndaq_x_f16): Remove.
8843 (vrndaq_x_f32): Remove.
8844 (vrndxq_x_f16): Remove.
8845 (vrndxq_x_f32): Remove.
8846 (__arm_vrndxq_f16): Remove.
8847 (__arm_vrndxq_f32): Remove.
8848 (__arm_vrndq_f16): Remove.
8849 (__arm_vrndq_f32): Remove.
8850 (__arm_vrndpq_f16): Remove.
8851 (__arm_vrndpq_f32): Remove.
8852 (__arm_vrndnq_f16): Remove.
8853 (__arm_vrndnq_f32): Remove.
8854 (__arm_vrndmq_f16): Remove.
8855 (__arm_vrndmq_f32): Remove.
8856 (__arm_vrndaq_f16): Remove.
8857 (__arm_vrndaq_f32): Remove.
8858 (__arm_vrndaq_m_f16): Remove.
8859 (__arm_vrndmq_m_f16): Remove.
8860 (__arm_vrndnq_m_f16): Remove.
8861 (__arm_vrndpq_m_f16): Remove.
8862 (__arm_vrndq_m_f16): Remove.
8863 (__arm_vrndxq_m_f16): Remove.
8864 (__arm_vrndaq_m_f32): Remove.
8865 (__arm_vrndmq_m_f32): Remove.
8866 (__arm_vrndnq_m_f32): Remove.
8867 (__arm_vrndpq_m_f32): Remove.
8868 (__arm_vrndq_m_f32): Remove.
8869 (__arm_vrndxq_m_f32): Remove.
8870 (__arm_vrndq_x_f16): Remove.
8871 (__arm_vrndq_x_f32): Remove.
8872 (__arm_vrndnq_x_f16): Remove.
8873 (__arm_vrndnq_x_f32): Remove.
8874 (__arm_vrndmq_x_f16): Remove.
8875 (__arm_vrndmq_x_f32): Remove.
8876 (__arm_vrndpq_x_f16): Remove.
8877 (__arm_vrndpq_x_f32): Remove.
8878 (__arm_vrndaq_x_f16): Remove.
8879 (__arm_vrndaq_x_f32): Remove.
8880 (__arm_vrndxq_x_f16): Remove.
8881 (__arm_vrndxq_x_f32): Remove.
8882 (__arm_vrndxq): Remove.
8883 (__arm_vrndq): Remove.
8884 (__arm_vrndpq): Remove.
8885 (__arm_vrndnq): Remove.
8886 (__arm_vrndmq): Remove.
8887 (__arm_vrndaq): Remove.
8888 (__arm_vrndaq_m): Remove.
8889 (__arm_vrndmq_m): Remove.
8890 (__arm_vrndnq_m): Remove.
8891 (__arm_vrndpq_m): Remove.
8892 (__arm_vrndq_m): Remove.
8893 (__arm_vrndxq_m): Remove.
8894 (__arm_vrndq_x): Remove.
8895 (__arm_vrndnq_x): Remove.
8896 (__arm_vrndmq_x): Remove.
8897 (__arm_vrndpq_x): Remove.
8898 (__arm_vrndaq_x): Remove.
8899 (__arm_vrndxq_x): Remove.
8901 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8903 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
8904 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
8905 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
8906 (vclzq, vqabsq, vqnegq): New.
8907 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
8908 (vqabsq, vqnegq): New.
8909 * config/arm/arm_mve.h (vabsq): Remove.
8912 (vabsq_f16): Remove.
8913 (vabsq_f32): Remove.
8915 (vabsq_s16): Remove.
8916 (vabsq_s32): Remove.
8917 (vabsq_m_s8): Remove.
8918 (vabsq_m_s16): Remove.
8919 (vabsq_m_s32): Remove.
8920 (vabsq_m_f16): Remove.
8921 (vabsq_m_f32): Remove.
8922 (vabsq_x_s8): Remove.
8923 (vabsq_x_s16): Remove.
8924 (vabsq_x_s32): Remove.
8925 (vabsq_x_f16): Remove.
8926 (vabsq_x_f32): Remove.
8927 (__arm_vabsq_s8): Remove.
8928 (__arm_vabsq_s16): Remove.
8929 (__arm_vabsq_s32): Remove.
8930 (__arm_vabsq_m_s8): Remove.
8931 (__arm_vabsq_m_s16): Remove.
8932 (__arm_vabsq_m_s32): Remove.
8933 (__arm_vabsq_x_s8): Remove.
8934 (__arm_vabsq_x_s16): Remove.
8935 (__arm_vabsq_x_s32): Remove.
8936 (__arm_vabsq_f16): Remove.
8937 (__arm_vabsq_f32): Remove.
8938 (__arm_vabsq_m_f16): Remove.
8939 (__arm_vabsq_m_f32): Remove.
8940 (__arm_vabsq_x_f16): Remove.
8941 (__arm_vabsq_x_f32): Remove.
8942 (__arm_vabsq): Remove.
8943 (__arm_vabsq_m): Remove.
8944 (__arm_vabsq_x): Remove.
8948 (vnegq_f16): Remove.
8949 (vnegq_f32): Remove.
8951 (vnegq_s16): Remove.
8952 (vnegq_s32): Remove.
8953 (vnegq_m_s8): Remove.
8954 (vnegq_m_s16): Remove.
8955 (vnegq_m_s32): Remove.
8956 (vnegq_m_f16): Remove.
8957 (vnegq_m_f32): Remove.
8958 (vnegq_x_s8): Remove.
8959 (vnegq_x_s16): Remove.
8960 (vnegq_x_s32): Remove.
8961 (vnegq_x_f16): Remove.
8962 (vnegq_x_f32): Remove.
8963 (__arm_vnegq_s8): Remove.
8964 (__arm_vnegq_s16): Remove.
8965 (__arm_vnegq_s32): Remove.
8966 (__arm_vnegq_m_s8): Remove.
8967 (__arm_vnegq_m_s16): Remove.
8968 (__arm_vnegq_m_s32): Remove.
8969 (__arm_vnegq_x_s8): Remove.
8970 (__arm_vnegq_x_s16): Remove.
8971 (__arm_vnegq_x_s32): Remove.
8972 (__arm_vnegq_f16): Remove.
8973 (__arm_vnegq_f32): Remove.
8974 (__arm_vnegq_m_f16): Remove.
8975 (__arm_vnegq_m_f32): Remove.
8976 (__arm_vnegq_x_f16): Remove.
8977 (__arm_vnegq_x_f32): Remove.
8978 (__arm_vnegq): Remove.
8979 (__arm_vnegq_m): Remove.
8980 (__arm_vnegq_x): Remove.
8985 (vclsq_s16): Remove.
8986 (vclsq_s32): Remove.
8987 (vclsq_m_s8): Remove.
8988 (vclsq_m_s16): Remove.
8989 (vclsq_m_s32): Remove.
8990 (vclsq_x_s8): Remove.
8991 (vclsq_x_s16): Remove.
8992 (vclsq_x_s32): Remove.
8993 (__arm_vclsq_s8): Remove.
8994 (__arm_vclsq_s16): Remove.
8995 (__arm_vclsq_s32): Remove.
8996 (__arm_vclsq_m_s8): Remove.
8997 (__arm_vclsq_m_s16): Remove.
8998 (__arm_vclsq_m_s32): Remove.
8999 (__arm_vclsq_x_s8): Remove.
9000 (__arm_vclsq_x_s16): Remove.
9001 (__arm_vclsq_x_s32): Remove.
9002 (__arm_vclsq): Remove.
9003 (__arm_vclsq_m): Remove.
9004 (__arm_vclsq_x): Remove.
9009 (vclzq_s16): Remove.
9010 (vclzq_s32): Remove.
9012 (vclzq_u16): Remove.
9013 (vclzq_u32): Remove.
9014 (vclzq_m_u8): Remove.
9015 (vclzq_m_s8): Remove.
9016 (vclzq_m_u16): Remove.
9017 (vclzq_m_s16): Remove.
9018 (vclzq_m_u32): Remove.
9019 (vclzq_m_s32): Remove.
9020 (vclzq_x_s8): Remove.
9021 (vclzq_x_s16): Remove.
9022 (vclzq_x_s32): Remove.
9023 (vclzq_x_u8): Remove.
9024 (vclzq_x_u16): Remove.
9025 (vclzq_x_u32): Remove.
9026 (__arm_vclzq_s8): Remove.
9027 (__arm_vclzq_s16): Remove.
9028 (__arm_vclzq_s32): Remove.
9029 (__arm_vclzq_u8): Remove.
9030 (__arm_vclzq_u16): Remove.
9031 (__arm_vclzq_u32): Remove.
9032 (__arm_vclzq_m_u8): Remove.
9033 (__arm_vclzq_m_s8): Remove.
9034 (__arm_vclzq_m_u16): Remove.
9035 (__arm_vclzq_m_s16): Remove.
9036 (__arm_vclzq_m_u32): Remove.
9037 (__arm_vclzq_m_s32): Remove.
9038 (__arm_vclzq_x_s8): Remove.
9039 (__arm_vclzq_x_s16): Remove.
9040 (__arm_vclzq_x_s32): Remove.
9041 (__arm_vclzq_x_u8): Remove.
9042 (__arm_vclzq_x_u16): Remove.
9043 (__arm_vclzq_x_u32): Remove.
9044 (__arm_vclzq): Remove.
9045 (__arm_vclzq_m): Remove.
9046 (__arm_vclzq_x): Remove.
9051 (vqabsq_s8): Remove.
9052 (vqabsq_s16): Remove.
9053 (vqabsq_s32): Remove.
9054 (vqnegq_s8): Remove.
9055 (vqnegq_s16): Remove.
9056 (vqnegq_s32): Remove.
9057 (vqnegq_m_s8): Remove.
9058 (vqabsq_m_s8): Remove.
9059 (vqnegq_m_s16): Remove.
9060 (vqabsq_m_s16): Remove.
9061 (vqnegq_m_s32): Remove.
9062 (vqabsq_m_s32): Remove.
9063 (__arm_vqabsq_s8): Remove.
9064 (__arm_vqabsq_s16): Remove.
9065 (__arm_vqabsq_s32): Remove.
9066 (__arm_vqnegq_s8): Remove.
9067 (__arm_vqnegq_s16): Remove.
9068 (__arm_vqnegq_s32): Remove.
9069 (__arm_vqnegq_m_s8): Remove.
9070 (__arm_vqabsq_m_s8): Remove.
9071 (__arm_vqnegq_m_s16): Remove.
9072 (__arm_vqabsq_m_s16): Remove.
9073 (__arm_vqnegq_m_s32): Remove.
9074 (__arm_vqabsq_m_s32): Remove.
9075 (__arm_vqabsq): Remove.
9076 (__arm_vqnegq): Remove.
9077 (__arm_vqnegq_m): Remove.
9078 (__arm_vqabsq_m): Remove.
9080 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
9082 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
9083 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
9084 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
9085 vrndm, vrndn, vrndp, vrnd, vrndx.
9086 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
9087 VQABSQ_M_S, VQNEGQ_M_S.
9089 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
9090 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
9091 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
9092 (@mve_<mve_insn>q_f<mode>): ... this.
9093 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
9094 (mve_v<absneg_str>q_f<mode>): ... this.
9095 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
9096 (mve_v<absneg_str>q_s<mode>): ... this.
9097 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
9098 (@mve_<mve_insn>q_<supf><mode>): ... this.
9099 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
9100 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
9101 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
9102 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9103 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
9104 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
9105 (mve_vrndxq_m_f<mode>): Merge into ...
9106 (@mve_<mve_insn>q_m_f<mode>): ... this.
9108 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
9110 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
9111 * config/arm/arm-mve-builtins-shapes.h (unary): New.
9113 2023-05-09 Jakub Jelinek <jakub@redhat.com>
9115 * mux-utils.h: Fix comment typo, avoides -> avoids.
9117 2023-05-09 Jakub Jelinek <jakub@redhat.com>
9119 PR tree-optimization/109778
9120 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
9121 wi::zext (x, width) rather than x if width != precision, rather
9122 than using wi::zext (right, width) after the shift.
9123 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
9124 of wi::lrotate or wi::rrotate.
9126 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
9128 * genmatch.cc (get_out_file): Make static and rename to ...
9129 (choose_output): ... this. Reimplement. Update all uses ...
9130 (decision_tree::gen): ... here and ...
9133 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
9135 * genmatch.cc (showUsage): Reimplement as ...
9136 (usage): ...this. Adjust all uses.
9137 (main): Print usage when no arguments. Add missing 'return 1'.
9139 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
9141 * genmatch.cc (header_file): Make static.
9142 (emit_func): Rename to...
9143 (fp_decl): ... this. Adjust all uses.
9144 (fp_decl_done): New function. Use it...
9145 (decision_tree::gen): ... here and...
9146 (write_predicate): ... here.
9149 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
9151 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
9154 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
9155 Uros Bizjak <ubizjak@gmail.com>
9157 * config/i386/i386.md (any_or_plus): Move definition earlier.
9158 (*insvti_highpart_1): New define_insn_and_split to overwrite
9159 (insv) the highpart of a TImode register/memory.
9161 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
9163 * auto-profile.cc (auto_profile): Check todo from early_inline
9164 to see if cleanup_tree_vfg needs to be called.
9165 (early_inline): Return todo from early_inliner.
9167 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
9169 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
9171 (pass_vsetvl::get_block_info): New.
9172 (pass_vsetvl::update_vector_info): New.
9173 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
9174 (pass_vsetvl::compute_local_backward_infos): Ditto.
9175 (pass_vsetvl::transfer_before): Ditto.
9176 (pass_vsetvl::transfer_after): Ditto.
9177 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
9178 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
9179 (pass_vsetvl::cleanup_insns): Ditto.
9180 (pass_vsetvl::compute_local_backward_infos): Use
9183 2023-05-08 Jeff Law <jlaw@ventanamicro>
9185 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
9187 2023-05-08 Richard Biener <rguenther@suse.de>
9188 Michael Meissner <meissner@linux.ibm.com>
9190 PR middle-end/108623
9191 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
9192 Align bit fields > 1 bit to at least an 8-bit boundary.
9194 2023-05-08 Andrew Pinski <apinski@marvell.com>
9196 PR tree-optimization/109424
9197 PR tree-optimization/59424
9198 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
9199 (factor_out_conditional_operation): This and add support for all unary
9201 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
9202 to call factor_out_conditional_operation instead.
9204 2023-05-08 Andrew Pinski <apinski@marvell.com>
9206 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
9207 over factor_out_conditional_conversion.
9209 2023-05-08 Andrew Pinski <apinski@marvell.com>
9211 PR tree-optimization/49959
9212 PR tree-optimization/103771
9213 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
9214 Diamond shapped bb form for factor_out_conditional_conversion.
9216 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9218 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
9219 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
9220 (riscv_vector_get_mask_mode): Ditto.
9221 (get_mask_policy_no_pred): Ditto.
9222 (get_tail_policy_no_pred): Ditto.
9223 (get_mask_mode): New function.
9224 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
9225 (get_tail_policy_no_pred): Ditto.
9226 (riscv_vector_mask_mode_p): Ditto.
9227 (riscv_vector_get_mask_mode): Ditto.
9228 (get_mask_mode): New function.
9229 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
9231 (get_tail_policy_for_pred): Ditto.
9232 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
9233 (get_mask_policy_for_pred): Ditto
9234 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
9236 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
9238 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
9239 (riscv_select_multilib): New.
9240 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
9241 also handle select_by_abi.
9242 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
9243 to select_by_abi_arch_cmodel from 1.
9244 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
9245 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
9247 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
9249 * Makefile.in: (gimple-match-head.o-warn): Remove.
9250 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
9251 gimple-match-exports.cc.
9252 (gimple-match-auto.h): Only depend on s-gimple-match.
9253 (generic-match-auto.h): Likewise.
9255 2023-05-08 Andrew Pinski <apinski@marvell.com>
9257 PR tree-optimization/109691
9258 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
9260 If the removed statement can throw, have need_eh_cleanup
9261 include the bb of that statement.
9262 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
9263 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
9265 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
9266 Initialize dceworklist instead of stmts_to_remove.
9267 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
9268 Destore dceworklist instead of stmts_to_remove.
9269 (substitute_and_fold_dom_walker::before_dom_children):
9270 Set dceworklist instead of adding to stmts_to_remove.
9271 (substitute_and_fold_engine::substitute_and_fold):
9272 Call simple_dce_from_worklist instead of poping
9274 Don't update the stat on removal statements.
9276 2023-05-07 Andrew Pinski <apinski@marvell.com>
9279 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
9280 Change argument type to aarch64_feature_flags.
9281 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
9282 constructor argument type to aarch64_feature_flags.
9283 Change m_old_asm_isa_flags to be aarch64_feature_flags.
9285 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
9287 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
9288 more parallel code if can_create_pseudo_p.
9290 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
9293 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
9294 immediately before moving a multi-word register by parts.
9296 2023-05-06 Jeff Law <jlaw@ventanamicro>
9298 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
9300 2023-05-06 Michael Collison <collison@rivosinc.com>
9302 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
9303 Check that GET_MODE_NUNITS is a multiple of 2.
9305 2023-05-06 Michael Collison <collison@rivosinc.com>
9307 * config/riscv/riscv.cc
9308 (riscv_estimated_poly_value): Implement
9309 TARGET_ESTIMATED_POLY_VALUE.
9310 (riscv_preferred_simd_mode): Implement
9311 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
9312 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
9313 (riscv_empty_mask_is_expensive): Implement
9314 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
9315 (riscv_vectorize_create_costs): Implement
9316 TARGET_VECTORIZE_CREATE_COSTS.
9317 (riscv_support_vector_misalignment): Implement
9318 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
9319 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
9320 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
9321 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
9322 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
9324 2023-05-06 Jeff Law <jlaw@ventanamicro>
9326 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
9327 duplicate definition.
9329 2023-05-06 Michael Collison <collison@rivosinc.com>
9331 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
9332 (riscv_vector_preferred_simd_mode): Ditto.
9333 (get_mask_policy_no_pred): Ditto.
9334 (get_tail_policy_no_pred): Ditto.
9335 (riscv_vector_mask_mode_p): Ditto.
9336 (riscv_vector_get_mask_mode): Ditto.
9338 2023-05-06 Michael Collison <collison@rivosinc.com>
9340 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
9341 Remove static declaration to to make externally visible.
9342 (get_mask_policy_for_pred): Ditto.
9343 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
9344 New external declaration.
9345 (get_mask_policy_for_pred): Ditto.
9347 2023-05-06 Michael Collison <collison@rivosinc.com>
9349 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
9350 (riscv_vector_get_mask_mode): Ditto.
9351 (get_mask_policy_no_pred): Ditto.
9352 (get_tail_policy_no_pred): Ditto.
9354 2023-05-06 Xi Ruoyao <xry111@xry111.site>
9356 * config/loongarch/loongarch.h (struct machine_function): Add
9357 reg_is_wrapped_separately array for register wrapping
9359 * config/loongarch/loongarch.cc
9360 (loongarch_get_separate_components): New function.
9361 (loongarch_components_for_bb): Likewise.
9362 (loongarch_disqualify_components): Likewise.
9363 (loongarch_process_components): Likewise.
9364 (loongarch_emit_prologue_components): Likewise.
9365 (loongarch_emit_epilogue_components): Likewise.
9366 (loongarch_set_handled_components): Likewise.
9367 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
9368 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
9369 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
9370 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
9371 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
9372 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
9373 (loongarch_for_each_saved_reg): Skip registers that are wrapped
9376 2023-05-06 Xi Ruoyao <xry111@xry111.site>
9379 * Makefile.in (s-macro_list): Pass -nostdinc to
9382 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9384 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
9385 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
9386 (preferred_simd_mode): Ditto.
9387 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
9388 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
9389 (riscv_preferred_simd_mode): New function.
9390 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
9391 * config/riscv/vector.md: Add autovec.md.
9392 * config/riscv/autovec.md: New file.
9394 2023-05-06 Jakub Jelinek <jakub@redhat.com>
9396 * real.h (dconst_pi): Define.
9397 (dconst_e_ptr): Formatting fix.
9398 (dconst_pi_ptr): Declare.
9399 * real.cc (dconst_pi_ptr): New function.
9400 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
9401 boundaries range with range computed from sin/cos of the particular
9402 bounds if the argument range is shorter than 2*pi.
9403 (cfn_sincos::op1_range): Take bulps into account when determining
9404 which result ranges are always invalid or behave like known NAN.
9406 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
9408 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
9409 pass type to vrange_storage::equal_p.
9410 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
9411 (irange_storage::equal_p): Same.
9412 (frange_storage::equal_p): Same.
9413 * value-range-storage.h (class frange_storage): Same.
9415 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9418 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
9419 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
9421 2023-05-06 liuhongt <hongtao.liu@intel.com>
9423 * combine.cc (maybe_swap_commutative_operands): Canonicalize
9424 vec_merge when mask is constant.
9425 * doc/md.texi: Document vec_merge canonicalization.
9427 2023-05-06 Jakub Jelinek <jakub@redhat.com>
9429 * value-range.h (frange_arithmetic): Declare.
9430 * range-op-float.cc (frange_arithmetic): No longer static.
9431 * gimple-range-op.cc (frange_mpfr_arg1): New function.
9432 (cfn_sqrt::fold_range): Intersect the generic boundaries range
9433 with range computed from sqrt of the particular bounds.
9434 (cfn_sqrt::op1_range): Intersect the generic boundaries range
9435 with range computed from squared particular bounds.
9437 2023-05-06 Jakub Jelinek <jakub@redhat.com>
9439 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
9440 earlier with helper variables also renamed.
9441 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
9442 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
9443 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
9445 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
9447 * config/cris/cris.md (splitop): Add PLUS.
9448 * config/cris/cris.cc (cris_split_constant): Also handle
9449 PLUS when a split into two insns may be useful.
9451 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
9453 * config/cris/cris.md (movandsplit1): New define_peephole2.
9455 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
9457 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
9459 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
9461 * doc/md.texi (define_peephole2): Document order of scanning.
9463 2023-05-05 Pan Li <pan2.li@intel.com>
9464 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9466 * config/riscv/vector.md: Allow const as the operand of RVV
9469 2023-05-05 Pan Li <pan2.li@intel.com>
9471 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
9472 consumed by simplify_rtx.
9474 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9476 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
9477 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
9478 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
9479 * config/arm/arm_mve.h (vshrq): Remove.
9485 (vshrq_n_s8): Remove.
9486 (vshrq_n_s16): Remove.
9487 (vshrq_n_s32): Remove.
9488 (vshrq_n_u8): Remove.
9489 (vshrq_n_u16): Remove.
9490 (vshrq_n_u32): Remove.
9491 (vrshrq_n_u8): Remove.
9492 (vrshrq_n_s8): Remove.
9493 (vrshrq_n_u16): Remove.
9494 (vrshrq_n_s16): Remove.
9495 (vrshrq_n_u32): Remove.
9496 (vrshrq_n_s32): Remove.
9497 (vrshrq_m_n_s8): Remove.
9498 (vrshrq_m_n_s32): Remove.
9499 (vrshrq_m_n_s16): Remove.
9500 (vrshrq_m_n_u8): Remove.
9501 (vrshrq_m_n_u32): Remove.
9502 (vrshrq_m_n_u16): Remove.
9503 (vshrq_m_n_s8): Remove.
9504 (vshrq_m_n_s32): Remove.
9505 (vshrq_m_n_s16): Remove.
9506 (vshrq_m_n_u8): Remove.
9507 (vshrq_m_n_u32): Remove.
9508 (vshrq_m_n_u16): Remove.
9509 (vrshrq_x_n_s8): Remove.
9510 (vrshrq_x_n_s16): Remove.
9511 (vrshrq_x_n_s32): Remove.
9512 (vrshrq_x_n_u8): Remove.
9513 (vrshrq_x_n_u16): Remove.
9514 (vrshrq_x_n_u32): Remove.
9515 (vshrq_x_n_s8): Remove.
9516 (vshrq_x_n_s16): Remove.
9517 (vshrq_x_n_s32): Remove.
9518 (vshrq_x_n_u8): Remove.
9519 (vshrq_x_n_u16): Remove.
9520 (vshrq_x_n_u32): Remove.
9521 (__arm_vshrq_n_s8): Remove.
9522 (__arm_vshrq_n_s16): Remove.
9523 (__arm_vshrq_n_s32): Remove.
9524 (__arm_vshrq_n_u8): Remove.
9525 (__arm_vshrq_n_u16): Remove.
9526 (__arm_vshrq_n_u32): Remove.
9527 (__arm_vrshrq_n_u8): Remove.
9528 (__arm_vrshrq_n_s8): Remove.
9529 (__arm_vrshrq_n_u16): Remove.
9530 (__arm_vrshrq_n_s16): Remove.
9531 (__arm_vrshrq_n_u32): Remove.
9532 (__arm_vrshrq_n_s32): Remove.
9533 (__arm_vrshrq_m_n_s8): Remove.
9534 (__arm_vrshrq_m_n_s32): Remove.
9535 (__arm_vrshrq_m_n_s16): Remove.
9536 (__arm_vrshrq_m_n_u8): Remove.
9537 (__arm_vrshrq_m_n_u32): Remove.
9538 (__arm_vrshrq_m_n_u16): Remove.
9539 (__arm_vshrq_m_n_s8): Remove.
9540 (__arm_vshrq_m_n_s32): Remove.
9541 (__arm_vshrq_m_n_s16): Remove.
9542 (__arm_vshrq_m_n_u8): Remove.
9543 (__arm_vshrq_m_n_u32): Remove.
9544 (__arm_vshrq_m_n_u16): Remove.
9545 (__arm_vrshrq_x_n_s8): Remove.
9546 (__arm_vrshrq_x_n_s16): Remove.
9547 (__arm_vrshrq_x_n_s32): Remove.
9548 (__arm_vrshrq_x_n_u8): Remove.
9549 (__arm_vrshrq_x_n_u16): Remove.
9550 (__arm_vrshrq_x_n_u32): Remove.
9551 (__arm_vshrq_x_n_s8): Remove.
9552 (__arm_vshrq_x_n_s16): Remove.
9553 (__arm_vshrq_x_n_s32): Remove.
9554 (__arm_vshrq_x_n_u8): Remove.
9555 (__arm_vshrq_x_n_u16): Remove.
9556 (__arm_vshrq_x_n_u32): Remove.
9557 (__arm_vshrq): Remove.
9558 (__arm_vrshrq): Remove.
9559 (__arm_vrshrq_m): Remove.
9560 (__arm_vshrq_m): Remove.
9561 (__arm_vrshrq_x): Remove.
9562 (__arm_vshrq_x): Remove.
9564 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9566 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
9567 (mve_insn): Add vrshr, vshr.
9568 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
9569 (mve_vrshrq_n_<supf><mode>): Merge into ...
9570 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9571 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
9573 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9575 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9577 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
9578 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
9580 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9582 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
9583 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
9584 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
9585 (vqrshrunbq, vqrshruntq): New.
9586 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
9587 (vqrshrunbq, vqrshruntq): New.
9588 * config/arm/arm-mve-builtins.cc
9589 (function_instance::has_inactive_argument): Handle vqshrunbq,
9590 vqshruntq, vqrshrunbq, vqrshruntq.
9591 * config/arm/arm_mve.h (vqrshrunbq): Remove.
9592 (vqrshruntq): Remove.
9593 (vqrshrunbq_m): Remove.
9594 (vqrshruntq_m): Remove.
9595 (vqrshrunbq_n_s16): Remove.
9596 (vqrshrunbq_n_s32): Remove.
9597 (vqrshruntq_n_s16): Remove.
9598 (vqrshruntq_n_s32): Remove.
9599 (vqrshrunbq_m_n_s32): Remove.
9600 (vqrshrunbq_m_n_s16): Remove.
9601 (vqrshruntq_m_n_s32): Remove.
9602 (vqrshruntq_m_n_s16): Remove.
9603 (__arm_vqrshrunbq_n_s16): Remove.
9604 (__arm_vqrshrunbq_n_s32): Remove.
9605 (__arm_vqrshruntq_n_s16): Remove.
9606 (__arm_vqrshruntq_n_s32): Remove.
9607 (__arm_vqrshrunbq_m_n_s32): Remove.
9608 (__arm_vqrshrunbq_m_n_s16): Remove.
9609 (__arm_vqrshruntq_m_n_s32): Remove.
9610 (__arm_vqrshruntq_m_n_s16): Remove.
9611 (__arm_vqrshrunbq): Remove.
9612 (__arm_vqrshruntq): Remove.
9613 (__arm_vqrshrunbq_m): Remove.
9614 (__arm_vqrshruntq_m): Remove.
9615 (vqshrunbq): Remove.
9616 (vqshruntq): Remove.
9617 (vqshrunbq_m): Remove.
9618 (vqshruntq_m): Remove.
9619 (vqshrunbq_n_s16): Remove.
9620 (vqshruntq_n_s16): Remove.
9621 (vqshrunbq_n_s32): Remove.
9622 (vqshruntq_n_s32): Remove.
9623 (vqshrunbq_m_n_s32): Remove.
9624 (vqshrunbq_m_n_s16): Remove.
9625 (vqshruntq_m_n_s32): Remove.
9626 (vqshruntq_m_n_s16): Remove.
9627 (__arm_vqshrunbq_n_s16): Remove.
9628 (__arm_vqshruntq_n_s16): Remove.
9629 (__arm_vqshrunbq_n_s32): Remove.
9630 (__arm_vqshruntq_n_s32): Remove.
9631 (__arm_vqshrunbq_m_n_s32): Remove.
9632 (__arm_vqshrunbq_m_n_s16): Remove.
9633 (__arm_vqshruntq_m_n_s32): Remove.
9634 (__arm_vqshruntq_m_n_s16): Remove.
9635 (__arm_vqshrunbq): Remove.
9636 (__arm_vqshruntq): Remove.
9637 (__arm_vqshrunbq_m): Remove.
9638 (__arm_vqshruntq_m): Remove.
9640 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9642 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
9643 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
9644 (MVE_SHRN_M_N): Likewise.
9645 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
9646 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
9648 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
9649 (mve_vqrshruntq_n_s<mode>): Remove.
9650 (mve_vqshrunbq_n_s<mode>): Remove.
9651 (mve_vqshruntq_n_s<mode>): Remove.
9652 (mve_vqrshrunbq_m_n_s<mode>): Remove.
9653 (mve_vqrshruntq_m_n_s<mode>): Remove.
9654 (mve_vqshrunbq_m_n_s<mode>): Remove.
9655 (mve_vqshruntq_m_n_s<mode>): Remove.
9657 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9659 * config/arm/arm-mve-builtins-shapes.cc
9660 (binary_rshift_narrow_unsigned): New.
9661 * config/arm/arm-mve-builtins-shapes.h
9662 (binary_rshift_narrow_unsigned): New.
9664 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9666 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
9667 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
9668 (vqrshrnbq, vqrshrntq): New.
9669 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
9670 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
9672 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
9673 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
9674 * config/arm/arm-mve-builtins.cc
9675 (function_instance::has_inactive_argument): Handle vshrnbq,
9676 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
9678 * config/arm/arm_mve.h (vshrnbq): Remove.
9680 (vshrnbq_m): Remove.
9681 (vshrntq_m): Remove.
9682 (vshrnbq_n_s16): Remove.
9683 (vshrntq_n_s16): Remove.
9684 (vshrnbq_n_u16): Remove.
9685 (vshrntq_n_u16): Remove.
9686 (vshrnbq_n_s32): Remove.
9687 (vshrntq_n_s32): Remove.
9688 (vshrnbq_n_u32): Remove.
9689 (vshrntq_n_u32): Remove.
9690 (vshrnbq_m_n_s32): Remove.
9691 (vshrnbq_m_n_s16): Remove.
9692 (vshrnbq_m_n_u32): Remove.
9693 (vshrnbq_m_n_u16): Remove.
9694 (vshrntq_m_n_s32): Remove.
9695 (vshrntq_m_n_s16): Remove.
9696 (vshrntq_m_n_u32): Remove.
9697 (vshrntq_m_n_u16): Remove.
9698 (__arm_vshrnbq_n_s16): Remove.
9699 (__arm_vshrntq_n_s16): Remove.
9700 (__arm_vshrnbq_n_u16): Remove.
9701 (__arm_vshrntq_n_u16): Remove.
9702 (__arm_vshrnbq_n_s32): Remove.
9703 (__arm_vshrntq_n_s32): Remove.
9704 (__arm_vshrnbq_n_u32): Remove.
9705 (__arm_vshrntq_n_u32): Remove.
9706 (__arm_vshrnbq_m_n_s32): Remove.
9707 (__arm_vshrnbq_m_n_s16): Remove.
9708 (__arm_vshrnbq_m_n_u32): Remove.
9709 (__arm_vshrnbq_m_n_u16): Remove.
9710 (__arm_vshrntq_m_n_s32): Remove.
9711 (__arm_vshrntq_m_n_s16): Remove.
9712 (__arm_vshrntq_m_n_u32): Remove.
9713 (__arm_vshrntq_m_n_u16): Remove.
9714 (__arm_vshrnbq): Remove.
9715 (__arm_vshrntq): Remove.
9716 (__arm_vshrnbq_m): Remove.
9717 (__arm_vshrntq_m): Remove.
9720 (vrshrnbq_m): Remove.
9721 (vrshrntq_m): Remove.
9722 (vrshrnbq_n_s16): Remove.
9723 (vrshrntq_n_s16): Remove.
9724 (vrshrnbq_n_u16): Remove.
9725 (vrshrntq_n_u16): Remove.
9726 (vrshrnbq_n_s32): Remove.
9727 (vrshrntq_n_s32): Remove.
9728 (vrshrnbq_n_u32): Remove.
9729 (vrshrntq_n_u32): Remove.
9730 (vrshrnbq_m_n_s32): Remove.
9731 (vrshrnbq_m_n_s16): Remove.
9732 (vrshrnbq_m_n_u32): Remove.
9733 (vrshrnbq_m_n_u16): Remove.
9734 (vrshrntq_m_n_s32): Remove.
9735 (vrshrntq_m_n_s16): Remove.
9736 (vrshrntq_m_n_u32): Remove.
9737 (vrshrntq_m_n_u16): Remove.
9738 (__arm_vrshrnbq_n_s16): Remove.
9739 (__arm_vrshrntq_n_s16): Remove.
9740 (__arm_vrshrnbq_n_u16): Remove.
9741 (__arm_vrshrntq_n_u16): Remove.
9742 (__arm_vrshrnbq_n_s32): Remove.
9743 (__arm_vrshrntq_n_s32): Remove.
9744 (__arm_vrshrnbq_n_u32): Remove.
9745 (__arm_vrshrntq_n_u32): Remove.
9746 (__arm_vrshrnbq_m_n_s32): Remove.
9747 (__arm_vrshrnbq_m_n_s16): Remove.
9748 (__arm_vrshrnbq_m_n_u32): Remove.
9749 (__arm_vrshrnbq_m_n_u16): Remove.
9750 (__arm_vrshrntq_m_n_s32): Remove.
9751 (__arm_vrshrntq_m_n_s16): Remove.
9752 (__arm_vrshrntq_m_n_u32): Remove.
9753 (__arm_vrshrntq_m_n_u16): Remove.
9754 (__arm_vrshrnbq): Remove.
9755 (__arm_vrshrntq): Remove.
9756 (__arm_vrshrnbq_m): Remove.
9757 (__arm_vrshrntq_m): Remove.
9760 (vqshrnbq_m): Remove.
9761 (vqshrntq_m): Remove.
9762 (vqshrnbq_n_s16): Remove.
9763 (vqshrntq_n_s16): Remove.
9764 (vqshrnbq_n_u16): Remove.
9765 (vqshrntq_n_u16): Remove.
9766 (vqshrnbq_n_s32): Remove.
9767 (vqshrntq_n_s32): Remove.
9768 (vqshrnbq_n_u32): Remove.
9769 (vqshrntq_n_u32): Remove.
9770 (vqshrnbq_m_n_s32): Remove.
9771 (vqshrnbq_m_n_s16): Remove.
9772 (vqshrnbq_m_n_u32): Remove.
9773 (vqshrnbq_m_n_u16): Remove.
9774 (vqshrntq_m_n_s32): Remove.
9775 (vqshrntq_m_n_s16): Remove.
9776 (vqshrntq_m_n_u32): Remove.
9777 (vqshrntq_m_n_u16): Remove.
9778 (__arm_vqshrnbq_n_s16): Remove.
9779 (__arm_vqshrntq_n_s16): Remove.
9780 (__arm_vqshrnbq_n_u16): Remove.
9781 (__arm_vqshrntq_n_u16): Remove.
9782 (__arm_vqshrnbq_n_s32): Remove.
9783 (__arm_vqshrntq_n_s32): Remove.
9784 (__arm_vqshrnbq_n_u32): Remove.
9785 (__arm_vqshrntq_n_u32): Remove.
9786 (__arm_vqshrnbq_m_n_s32): Remove.
9787 (__arm_vqshrnbq_m_n_s16): Remove.
9788 (__arm_vqshrnbq_m_n_u32): Remove.
9789 (__arm_vqshrnbq_m_n_u16): Remove.
9790 (__arm_vqshrntq_m_n_s32): Remove.
9791 (__arm_vqshrntq_m_n_s16): Remove.
9792 (__arm_vqshrntq_m_n_u32): Remove.
9793 (__arm_vqshrntq_m_n_u16): Remove.
9794 (__arm_vqshrnbq): Remove.
9795 (__arm_vqshrntq): Remove.
9796 (__arm_vqshrnbq_m): Remove.
9797 (__arm_vqshrntq_m): Remove.
9798 (vqrshrnbq): Remove.
9799 (vqrshrntq): Remove.
9800 (vqrshrnbq_m): Remove.
9801 (vqrshrntq_m): Remove.
9802 (vqrshrnbq_n_s16): Remove.
9803 (vqrshrnbq_n_u16): Remove.
9804 (vqrshrnbq_n_s32): Remove.
9805 (vqrshrnbq_n_u32): Remove.
9806 (vqrshrntq_n_s16): Remove.
9807 (vqrshrntq_n_u16): Remove.
9808 (vqrshrntq_n_s32): Remove.
9809 (vqrshrntq_n_u32): Remove.
9810 (vqrshrnbq_m_n_s32): Remove.
9811 (vqrshrnbq_m_n_s16): Remove.
9812 (vqrshrnbq_m_n_u32): Remove.
9813 (vqrshrnbq_m_n_u16): Remove.
9814 (vqrshrntq_m_n_s32): Remove.
9815 (vqrshrntq_m_n_s16): Remove.
9816 (vqrshrntq_m_n_u32): Remove.
9817 (vqrshrntq_m_n_u16): Remove.
9818 (__arm_vqrshrnbq_n_s16): Remove.
9819 (__arm_vqrshrnbq_n_u16): Remove.
9820 (__arm_vqrshrnbq_n_s32): Remove.
9821 (__arm_vqrshrnbq_n_u32): Remove.
9822 (__arm_vqrshrntq_n_s16): Remove.
9823 (__arm_vqrshrntq_n_u16): Remove.
9824 (__arm_vqrshrntq_n_s32): Remove.
9825 (__arm_vqrshrntq_n_u32): Remove.
9826 (__arm_vqrshrnbq_m_n_s32): Remove.
9827 (__arm_vqrshrnbq_m_n_s16): Remove.
9828 (__arm_vqrshrnbq_m_n_u32): Remove.
9829 (__arm_vqrshrnbq_m_n_u16): Remove.
9830 (__arm_vqrshrntq_m_n_s32): Remove.
9831 (__arm_vqrshrntq_m_n_s16): Remove.
9832 (__arm_vqrshrntq_m_n_u32): Remove.
9833 (__arm_vqrshrntq_m_n_u16): Remove.
9834 (__arm_vqrshrnbq): Remove.
9835 (__arm_vqrshrntq): Remove.
9836 (__arm_vqrshrnbq_m): Remove.
9837 (__arm_vqrshrntq_m): Remove.
9839 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9841 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
9842 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
9843 vrshrnt, vshrnb, vshrnt.
9845 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
9846 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
9847 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
9848 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
9849 (mve_vshrntq_n_<supf><mode>): Merge into ...
9850 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9851 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
9852 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
9853 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
9854 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
9856 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9858 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9860 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
9862 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
9864 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9866 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
9867 (vmaxq, vminq): New.
9868 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
9869 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
9870 * config/arm/arm_mve.h (vminq): Remove.
9880 (vminq_u16): Remove.
9881 (vmaxq_u16): Remove.
9882 (vminq_s16): Remove.
9883 (vmaxq_s16): Remove.
9884 (vminq_u32): Remove.
9885 (vmaxq_u32): Remove.
9886 (vminq_s32): Remove.
9887 (vmaxq_s32): Remove.
9888 (vmaxq_m_s8): Remove.
9889 (vmaxq_m_s32): Remove.
9890 (vmaxq_m_s16): Remove.
9891 (vmaxq_m_u8): Remove.
9892 (vmaxq_m_u32): Remove.
9893 (vmaxq_m_u16): Remove.
9894 (vminq_m_s8): Remove.
9895 (vminq_m_s32): Remove.
9896 (vminq_m_s16): Remove.
9897 (vminq_m_u8): Remove.
9898 (vminq_m_u32): Remove.
9899 (vminq_m_u16): Remove.
9900 (vminq_x_s8): Remove.
9901 (vminq_x_s16): Remove.
9902 (vminq_x_s32): Remove.
9903 (vminq_x_u8): Remove.
9904 (vminq_x_u16): Remove.
9905 (vminq_x_u32): Remove.
9906 (vmaxq_x_s8): Remove.
9907 (vmaxq_x_s16): Remove.
9908 (vmaxq_x_s32): Remove.
9909 (vmaxq_x_u8): Remove.
9910 (vmaxq_x_u16): Remove.
9911 (vmaxq_x_u32): Remove.
9912 (__arm_vminq_u8): Remove.
9913 (__arm_vmaxq_u8): Remove.
9914 (__arm_vminq_s8): Remove.
9915 (__arm_vmaxq_s8): Remove.
9916 (__arm_vminq_u16): Remove.
9917 (__arm_vmaxq_u16): Remove.
9918 (__arm_vminq_s16): Remove.
9919 (__arm_vmaxq_s16): Remove.
9920 (__arm_vminq_u32): Remove.
9921 (__arm_vmaxq_u32): Remove.
9922 (__arm_vminq_s32): Remove.
9923 (__arm_vmaxq_s32): Remove.
9924 (__arm_vmaxq_m_s8): Remove.
9925 (__arm_vmaxq_m_s32): Remove.
9926 (__arm_vmaxq_m_s16): Remove.
9927 (__arm_vmaxq_m_u8): Remove.
9928 (__arm_vmaxq_m_u32): Remove.
9929 (__arm_vmaxq_m_u16): Remove.
9930 (__arm_vminq_m_s8): Remove.
9931 (__arm_vminq_m_s32): Remove.
9932 (__arm_vminq_m_s16): Remove.
9933 (__arm_vminq_m_u8): Remove.
9934 (__arm_vminq_m_u32): Remove.
9935 (__arm_vminq_m_u16): Remove.
9936 (__arm_vminq_x_s8): Remove.
9937 (__arm_vminq_x_s16): Remove.
9938 (__arm_vminq_x_s32): Remove.
9939 (__arm_vminq_x_u8): Remove.
9940 (__arm_vminq_x_u16): Remove.
9941 (__arm_vminq_x_u32): Remove.
9942 (__arm_vmaxq_x_s8): Remove.
9943 (__arm_vmaxq_x_s16): Remove.
9944 (__arm_vmaxq_x_s32): Remove.
9945 (__arm_vmaxq_x_u8): Remove.
9946 (__arm_vmaxq_x_u16): Remove.
9947 (__arm_vmaxq_x_u32): Remove.
9948 (__arm_vminq): Remove.
9949 (__arm_vmaxq): Remove.
9950 (__arm_vmaxq_m): Remove.
9951 (__arm_vminq_m): Remove.
9952 (__arm_vminq_x): Remove.
9953 (__arm_vmaxq_x): Remove.
9955 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9957 * config/arm/iterators.md (MAX_MIN_SU): New.
9958 (max_min_su_str): New.
9959 (max_min_supf): New.
9960 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
9961 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
9962 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
9964 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9966 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
9967 (vqshlq, vshlq): New.
9968 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
9969 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
9970 * config/arm/arm_mve.h (vshlq): Remove.
9973 (vshlq_m_r): Remove.
9975 (vshlq_m_n): Remove.
9977 (vshlq_x_n): Remove.
9979 (vshlq_s16): Remove.
9980 (vshlq_s32): Remove.
9982 (vshlq_u16): Remove.
9983 (vshlq_u32): Remove.
9984 (vshlq_r_u8): Remove.
9985 (vshlq_n_u8): Remove.
9986 (vshlq_r_s8): Remove.
9987 (vshlq_n_s8): Remove.
9988 (vshlq_r_u16): Remove.
9989 (vshlq_n_u16): Remove.
9990 (vshlq_r_s16): Remove.
9991 (vshlq_n_s16): Remove.
9992 (vshlq_r_u32): Remove.
9993 (vshlq_n_u32): Remove.
9994 (vshlq_r_s32): Remove.
9995 (vshlq_n_s32): Remove.
9996 (vshlq_m_r_u8): Remove.
9997 (vshlq_m_r_s8): Remove.
9998 (vshlq_m_r_u16): Remove.
9999 (vshlq_m_r_s16): Remove.
10000 (vshlq_m_r_u32): Remove.
10001 (vshlq_m_r_s32): Remove.
10002 (vshlq_m_u8): Remove.
10003 (vshlq_m_s8): Remove.
10004 (vshlq_m_u16): Remove.
10005 (vshlq_m_s16): Remove.
10006 (vshlq_m_u32): Remove.
10007 (vshlq_m_s32): Remove.
10008 (vshlq_m_n_s8): Remove.
10009 (vshlq_m_n_s32): Remove.
10010 (vshlq_m_n_s16): Remove.
10011 (vshlq_m_n_u8): Remove.
10012 (vshlq_m_n_u32): Remove.
10013 (vshlq_m_n_u16): Remove.
10014 (vshlq_x_s8): Remove.
10015 (vshlq_x_s16): Remove.
10016 (vshlq_x_s32): Remove.
10017 (vshlq_x_u8): Remove.
10018 (vshlq_x_u16): Remove.
10019 (vshlq_x_u32): Remove.
10020 (vshlq_x_n_s8): Remove.
10021 (vshlq_x_n_s16): Remove.
10022 (vshlq_x_n_s32): Remove.
10023 (vshlq_x_n_u8): Remove.
10024 (vshlq_x_n_u16): Remove.
10025 (vshlq_x_n_u32): Remove.
10026 (__arm_vshlq_s8): Remove.
10027 (__arm_vshlq_s16): Remove.
10028 (__arm_vshlq_s32): Remove.
10029 (__arm_vshlq_u8): Remove.
10030 (__arm_vshlq_u16): Remove.
10031 (__arm_vshlq_u32): Remove.
10032 (__arm_vshlq_r_u8): Remove.
10033 (__arm_vshlq_n_u8): Remove.
10034 (__arm_vshlq_r_s8): Remove.
10035 (__arm_vshlq_n_s8): Remove.
10036 (__arm_vshlq_r_u16): Remove.
10037 (__arm_vshlq_n_u16): Remove.
10038 (__arm_vshlq_r_s16): Remove.
10039 (__arm_vshlq_n_s16): Remove.
10040 (__arm_vshlq_r_u32): Remove.
10041 (__arm_vshlq_n_u32): Remove.
10042 (__arm_vshlq_r_s32): Remove.
10043 (__arm_vshlq_n_s32): Remove.
10044 (__arm_vshlq_m_r_u8): Remove.
10045 (__arm_vshlq_m_r_s8): Remove.
10046 (__arm_vshlq_m_r_u16): Remove.
10047 (__arm_vshlq_m_r_s16): Remove.
10048 (__arm_vshlq_m_r_u32): Remove.
10049 (__arm_vshlq_m_r_s32): Remove.
10050 (__arm_vshlq_m_u8): Remove.
10051 (__arm_vshlq_m_s8): Remove.
10052 (__arm_vshlq_m_u16): Remove.
10053 (__arm_vshlq_m_s16): Remove.
10054 (__arm_vshlq_m_u32): Remove.
10055 (__arm_vshlq_m_s32): Remove.
10056 (__arm_vshlq_m_n_s8): Remove.
10057 (__arm_vshlq_m_n_s32): Remove.
10058 (__arm_vshlq_m_n_s16): Remove.
10059 (__arm_vshlq_m_n_u8): Remove.
10060 (__arm_vshlq_m_n_u32): Remove.
10061 (__arm_vshlq_m_n_u16): Remove.
10062 (__arm_vshlq_x_s8): Remove.
10063 (__arm_vshlq_x_s16): Remove.
10064 (__arm_vshlq_x_s32): Remove.
10065 (__arm_vshlq_x_u8): Remove.
10066 (__arm_vshlq_x_u16): Remove.
10067 (__arm_vshlq_x_u32): Remove.
10068 (__arm_vshlq_x_n_s8): Remove.
10069 (__arm_vshlq_x_n_s16): Remove.
10070 (__arm_vshlq_x_n_s32): Remove.
10071 (__arm_vshlq_x_n_u8): Remove.
10072 (__arm_vshlq_x_n_u16): Remove.
10073 (__arm_vshlq_x_n_u32): Remove.
10074 (__arm_vshlq): Remove.
10075 (__arm_vshlq_r): Remove.
10076 (__arm_vshlq_n): Remove.
10077 (__arm_vshlq_m_r): Remove.
10078 (__arm_vshlq_m): Remove.
10079 (__arm_vshlq_m_n): Remove.
10080 (__arm_vshlq_x): Remove.
10081 (__arm_vshlq_x_n): Remove.
10083 (vqshlq_r): Remove.
10084 (vqshlq_n): Remove.
10085 (vqshlq_m_r): Remove.
10086 (vqshlq_m_n): Remove.
10087 (vqshlq_m): Remove.
10088 (vqshlq_u8): Remove.
10089 (vqshlq_r_u8): Remove.
10090 (vqshlq_n_u8): Remove.
10091 (vqshlq_s8): Remove.
10092 (vqshlq_r_s8): Remove.
10093 (vqshlq_n_s8): Remove.
10094 (vqshlq_u16): Remove.
10095 (vqshlq_r_u16): Remove.
10096 (vqshlq_n_u16): Remove.
10097 (vqshlq_s16): Remove.
10098 (vqshlq_r_s16): Remove.
10099 (vqshlq_n_s16): Remove.
10100 (vqshlq_u32): Remove.
10101 (vqshlq_r_u32): Remove.
10102 (vqshlq_n_u32): Remove.
10103 (vqshlq_s32): Remove.
10104 (vqshlq_r_s32): Remove.
10105 (vqshlq_n_s32): Remove.
10106 (vqshlq_m_r_u8): Remove.
10107 (vqshlq_m_r_s8): Remove.
10108 (vqshlq_m_r_u16): Remove.
10109 (vqshlq_m_r_s16): Remove.
10110 (vqshlq_m_r_u32): Remove.
10111 (vqshlq_m_r_s32): Remove.
10112 (vqshlq_m_n_s8): Remove.
10113 (vqshlq_m_n_s32): Remove.
10114 (vqshlq_m_n_s16): Remove.
10115 (vqshlq_m_n_u8): Remove.
10116 (vqshlq_m_n_u32): Remove.
10117 (vqshlq_m_n_u16): Remove.
10118 (vqshlq_m_s8): Remove.
10119 (vqshlq_m_s32): Remove.
10120 (vqshlq_m_s16): Remove.
10121 (vqshlq_m_u8): Remove.
10122 (vqshlq_m_u32): Remove.
10123 (vqshlq_m_u16): Remove.
10124 (__arm_vqshlq_u8): Remove.
10125 (__arm_vqshlq_r_u8): Remove.
10126 (__arm_vqshlq_n_u8): Remove.
10127 (__arm_vqshlq_s8): Remove.
10128 (__arm_vqshlq_r_s8): Remove.
10129 (__arm_vqshlq_n_s8): Remove.
10130 (__arm_vqshlq_u16): Remove.
10131 (__arm_vqshlq_r_u16): Remove.
10132 (__arm_vqshlq_n_u16): Remove.
10133 (__arm_vqshlq_s16): Remove.
10134 (__arm_vqshlq_r_s16): Remove.
10135 (__arm_vqshlq_n_s16): Remove.
10136 (__arm_vqshlq_u32): Remove.
10137 (__arm_vqshlq_r_u32): Remove.
10138 (__arm_vqshlq_n_u32): Remove.
10139 (__arm_vqshlq_s32): Remove.
10140 (__arm_vqshlq_r_s32): Remove.
10141 (__arm_vqshlq_n_s32): Remove.
10142 (__arm_vqshlq_m_r_u8): Remove.
10143 (__arm_vqshlq_m_r_s8): Remove.
10144 (__arm_vqshlq_m_r_u16): Remove.
10145 (__arm_vqshlq_m_r_s16): Remove.
10146 (__arm_vqshlq_m_r_u32): Remove.
10147 (__arm_vqshlq_m_r_s32): Remove.
10148 (__arm_vqshlq_m_n_s8): Remove.
10149 (__arm_vqshlq_m_n_s32): Remove.
10150 (__arm_vqshlq_m_n_s16): Remove.
10151 (__arm_vqshlq_m_n_u8): Remove.
10152 (__arm_vqshlq_m_n_u32): Remove.
10153 (__arm_vqshlq_m_n_u16): Remove.
10154 (__arm_vqshlq_m_s8): Remove.
10155 (__arm_vqshlq_m_s32): Remove.
10156 (__arm_vqshlq_m_s16): Remove.
10157 (__arm_vqshlq_m_u8): Remove.
10158 (__arm_vqshlq_m_u32): Remove.
10159 (__arm_vqshlq_m_u16): Remove.
10160 (__arm_vqshlq): Remove.
10161 (__arm_vqshlq_r): Remove.
10162 (__arm_vqshlq_n): Remove.
10163 (__arm_vqshlq_m_r): Remove.
10164 (__arm_vqshlq_m_n): Remove.
10165 (__arm_vqshlq_m): Remove.
10167 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10169 * config/arm/arm-mve-builtins-functions.h (class
10170 unspec_mve_function_exact_insn_vshl): New.
10172 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10174 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
10175 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
10177 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10179 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
10180 (finish_opt_n_resolution): Handle MODE_r.
10181 * config/arm/arm-mve-builtins.def (r): New mode.
10183 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10185 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
10186 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
10188 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10190 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
10192 * config/arm/arm-mve-builtins-base.def (vabdq): New.
10193 * config/arm/arm-mve-builtins-base.h (vabdq): New.
10194 * config/arm/arm_mve.h (vabdq): Remove.
10197 (vabdq_u8): Remove.
10198 (vabdq_s8): Remove.
10199 (vabdq_u16): Remove.
10200 (vabdq_s16): Remove.
10201 (vabdq_u32): Remove.
10202 (vabdq_s32): Remove.
10203 (vabdq_f16): Remove.
10204 (vabdq_f32): Remove.
10205 (vabdq_m_s8): Remove.
10206 (vabdq_m_s32): Remove.
10207 (vabdq_m_s16): Remove.
10208 (vabdq_m_u8): Remove.
10209 (vabdq_m_u32): Remove.
10210 (vabdq_m_u16): Remove.
10211 (vabdq_m_f32): Remove.
10212 (vabdq_m_f16): Remove.
10213 (vabdq_x_s8): Remove.
10214 (vabdq_x_s16): Remove.
10215 (vabdq_x_s32): Remove.
10216 (vabdq_x_u8): Remove.
10217 (vabdq_x_u16): Remove.
10218 (vabdq_x_u32): Remove.
10219 (vabdq_x_f16): Remove.
10220 (vabdq_x_f32): Remove.
10221 (__arm_vabdq_u8): Remove.
10222 (__arm_vabdq_s8): Remove.
10223 (__arm_vabdq_u16): Remove.
10224 (__arm_vabdq_s16): Remove.
10225 (__arm_vabdq_u32): Remove.
10226 (__arm_vabdq_s32): Remove.
10227 (__arm_vabdq_m_s8): Remove.
10228 (__arm_vabdq_m_s32): Remove.
10229 (__arm_vabdq_m_s16): Remove.
10230 (__arm_vabdq_m_u8): Remove.
10231 (__arm_vabdq_m_u32): Remove.
10232 (__arm_vabdq_m_u16): Remove.
10233 (__arm_vabdq_x_s8): Remove.
10234 (__arm_vabdq_x_s16): Remove.
10235 (__arm_vabdq_x_s32): Remove.
10236 (__arm_vabdq_x_u8): Remove.
10237 (__arm_vabdq_x_u16): Remove.
10238 (__arm_vabdq_x_u32): Remove.
10239 (__arm_vabdq_f16): Remove.
10240 (__arm_vabdq_f32): Remove.
10241 (__arm_vabdq_m_f32): Remove.
10242 (__arm_vabdq_m_f16): Remove.
10243 (__arm_vabdq_x_f16): Remove.
10244 (__arm_vabdq_x_f32): Remove.
10245 (__arm_vabdq): Remove.
10246 (__arm_vabdq_m): Remove.
10247 (__arm_vabdq_x): Remove.
10249 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10251 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
10252 (MVE_FP_VABDQ_ONLY): New.
10253 (mve_insn): Add vabd.
10254 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
10255 (@mve_<mve_insn>q_f<mode>): ... this.
10256 (mve_vabdq_m_f<mode>): Remove.
10258 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10260 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
10261 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
10262 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
10263 * config/arm/arm_mve.h (vqrdmulhq): Remove.
10264 (vqrdmulhq_m): Remove.
10265 (vqrdmulhq_s8): Remove.
10266 (vqrdmulhq_n_s8): Remove.
10267 (vqrdmulhq_s16): Remove.
10268 (vqrdmulhq_n_s16): Remove.
10269 (vqrdmulhq_s32): Remove.
10270 (vqrdmulhq_n_s32): Remove.
10271 (vqrdmulhq_m_n_s8): Remove.
10272 (vqrdmulhq_m_n_s32): Remove.
10273 (vqrdmulhq_m_n_s16): Remove.
10274 (vqrdmulhq_m_s8): Remove.
10275 (vqrdmulhq_m_s32): Remove.
10276 (vqrdmulhq_m_s16): Remove.
10277 (__arm_vqrdmulhq_s8): Remove.
10278 (__arm_vqrdmulhq_n_s8): Remove.
10279 (__arm_vqrdmulhq_s16): Remove.
10280 (__arm_vqrdmulhq_n_s16): Remove.
10281 (__arm_vqrdmulhq_s32): Remove.
10282 (__arm_vqrdmulhq_n_s32): Remove.
10283 (__arm_vqrdmulhq_m_n_s8): Remove.
10284 (__arm_vqrdmulhq_m_n_s32): Remove.
10285 (__arm_vqrdmulhq_m_n_s16): Remove.
10286 (__arm_vqrdmulhq_m_s8): Remove.
10287 (__arm_vqrdmulhq_m_s32): Remove.
10288 (__arm_vqrdmulhq_m_s16): Remove.
10289 (__arm_vqrdmulhq): Remove.
10290 (__arm_vqrdmulhq_m): Remove.
10292 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10294 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
10295 (MVE_SHIFT_N, MVE_SHIFT_R): New.
10296 (mve_insn): Add vqshl, vshl.
10297 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
10298 (mve_vshlq_n_<supf><mode>): Merge into ...
10299 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10300 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
10302 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
10303 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
10305 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
10306 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
10308 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10309 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
10311 (@mve_<mve_insn>q_<supf><mode>): ... this.
10313 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10315 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
10316 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
10317 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
10318 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
10320 * config/arm/arm_mve.h (vrshlq): Remove.
10321 (vrshlq_m_n): Remove.
10322 (vrshlq_m): Remove.
10323 (vrshlq_x): Remove.
10324 (vrshlq_u8): Remove.
10325 (vrshlq_n_u8): Remove.
10326 (vrshlq_s8): Remove.
10327 (vrshlq_n_s8): Remove.
10328 (vrshlq_u16): Remove.
10329 (vrshlq_n_u16): Remove.
10330 (vrshlq_s16): Remove.
10331 (vrshlq_n_s16): Remove.
10332 (vrshlq_u32): Remove.
10333 (vrshlq_n_u32): Remove.
10334 (vrshlq_s32): Remove.
10335 (vrshlq_n_s32): Remove.
10336 (vrshlq_m_n_u8): Remove.
10337 (vrshlq_m_n_s8): Remove.
10338 (vrshlq_m_n_u16): Remove.
10339 (vrshlq_m_n_s16): Remove.
10340 (vrshlq_m_n_u32): Remove.
10341 (vrshlq_m_n_s32): Remove.
10342 (vrshlq_m_s8): Remove.
10343 (vrshlq_m_s32): Remove.
10344 (vrshlq_m_s16): Remove.
10345 (vrshlq_m_u8): Remove.
10346 (vrshlq_m_u32): Remove.
10347 (vrshlq_m_u16): Remove.
10348 (vrshlq_x_s8): Remove.
10349 (vrshlq_x_s16): Remove.
10350 (vrshlq_x_s32): Remove.
10351 (vrshlq_x_u8): Remove.
10352 (vrshlq_x_u16): Remove.
10353 (vrshlq_x_u32): Remove.
10354 (__arm_vrshlq_u8): Remove.
10355 (__arm_vrshlq_n_u8): Remove.
10356 (__arm_vrshlq_s8): Remove.
10357 (__arm_vrshlq_n_s8): Remove.
10358 (__arm_vrshlq_u16): Remove.
10359 (__arm_vrshlq_n_u16): Remove.
10360 (__arm_vrshlq_s16): Remove.
10361 (__arm_vrshlq_n_s16): Remove.
10362 (__arm_vrshlq_u32): Remove.
10363 (__arm_vrshlq_n_u32): Remove.
10364 (__arm_vrshlq_s32): Remove.
10365 (__arm_vrshlq_n_s32): Remove.
10366 (__arm_vrshlq_m_n_u8): Remove.
10367 (__arm_vrshlq_m_n_s8): Remove.
10368 (__arm_vrshlq_m_n_u16): Remove.
10369 (__arm_vrshlq_m_n_s16): Remove.
10370 (__arm_vrshlq_m_n_u32): Remove.
10371 (__arm_vrshlq_m_n_s32): Remove.
10372 (__arm_vrshlq_m_s8): Remove.
10373 (__arm_vrshlq_m_s32): Remove.
10374 (__arm_vrshlq_m_s16): Remove.
10375 (__arm_vrshlq_m_u8): Remove.
10376 (__arm_vrshlq_m_u32): Remove.
10377 (__arm_vrshlq_m_u16): Remove.
10378 (__arm_vrshlq_x_s8): Remove.
10379 (__arm_vrshlq_x_s16): Remove.
10380 (__arm_vrshlq_x_s32): Remove.
10381 (__arm_vrshlq_x_u8): Remove.
10382 (__arm_vrshlq_x_u16): Remove.
10383 (__arm_vrshlq_x_u32): Remove.
10384 (__arm_vrshlq): Remove.
10385 (__arm_vrshlq_m_n): Remove.
10386 (__arm_vrshlq_m): Remove.
10387 (__arm_vrshlq_x): Remove.
10389 (vqrshlq_m_n): Remove.
10390 (vqrshlq_m): Remove.
10391 (vqrshlq_u8): Remove.
10392 (vqrshlq_n_u8): Remove.
10393 (vqrshlq_s8): Remove.
10394 (vqrshlq_n_s8): Remove.
10395 (vqrshlq_u16): Remove.
10396 (vqrshlq_n_u16): Remove.
10397 (vqrshlq_s16): Remove.
10398 (vqrshlq_n_s16): Remove.
10399 (vqrshlq_u32): Remove.
10400 (vqrshlq_n_u32): Remove.
10401 (vqrshlq_s32): Remove.
10402 (vqrshlq_n_s32): Remove.
10403 (vqrshlq_m_n_u8): Remove.
10404 (vqrshlq_m_n_s8): Remove.
10405 (vqrshlq_m_n_u16): Remove.
10406 (vqrshlq_m_n_s16): Remove.
10407 (vqrshlq_m_n_u32): Remove.
10408 (vqrshlq_m_n_s32): Remove.
10409 (vqrshlq_m_s8): Remove.
10410 (vqrshlq_m_s32): Remove.
10411 (vqrshlq_m_s16): Remove.
10412 (vqrshlq_m_u8): Remove.
10413 (vqrshlq_m_u32): Remove.
10414 (vqrshlq_m_u16): Remove.
10415 (__arm_vqrshlq_u8): Remove.
10416 (__arm_vqrshlq_n_u8): Remove.
10417 (__arm_vqrshlq_s8): Remove.
10418 (__arm_vqrshlq_n_s8): Remove.
10419 (__arm_vqrshlq_u16): Remove.
10420 (__arm_vqrshlq_n_u16): Remove.
10421 (__arm_vqrshlq_s16): Remove.
10422 (__arm_vqrshlq_n_s16): Remove.
10423 (__arm_vqrshlq_u32): Remove.
10424 (__arm_vqrshlq_n_u32): Remove.
10425 (__arm_vqrshlq_s32): Remove.
10426 (__arm_vqrshlq_n_s32): Remove.
10427 (__arm_vqrshlq_m_n_u8): Remove.
10428 (__arm_vqrshlq_m_n_s8): Remove.
10429 (__arm_vqrshlq_m_n_u16): Remove.
10430 (__arm_vqrshlq_m_n_s16): Remove.
10431 (__arm_vqrshlq_m_n_u32): Remove.
10432 (__arm_vqrshlq_m_n_s32): Remove.
10433 (__arm_vqrshlq_m_s8): Remove.
10434 (__arm_vqrshlq_m_s32): Remove.
10435 (__arm_vqrshlq_m_s16): Remove.
10436 (__arm_vqrshlq_m_u8): Remove.
10437 (__arm_vqrshlq_m_u32): Remove.
10438 (__arm_vqrshlq_m_u16): Remove.
10439 (__arm_vqrshlq): Remove.
10440 (__arm_vqrshlq_m_n): Remove.
10441 (__arm_vqrshlq_m): Remove.
10443 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10445 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
10446 (mve_insn): Add vqrshl, vrshl.
10447 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
10448 (mve_vrshlq_n_<supf><mode>): Merge into ...
10449 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10450 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
10452 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10454 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10456 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
10457 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
10459 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10462 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
10463 denegrate PHI optmization.
10465 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
10467 * config/i386/predicates.md (register_no_SP_operand):
10468 Rename from index_register_operand.
10469 (call_register_operand): Update for rename.
10470 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
10472 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10475 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
10476 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
10477 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
10478 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
10479 (s-match): Split into s-generic-match and s-gimple-match.
10480 * configure.ac (with-matchpd-partitions,
10481 DEFAULT_MATCHPD_PARTITIONS): New.
10482 * configure: Regenerate.
10484 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10487 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
10488 (decision_tree::gen): Accept list of files instead of single and update
10489 to write function definition to header and main file.
10490 (write_predicate): Likewise.
10491 (write_header): Emit pragmas and new includes.
10492 (main): Create file buffers and cleanup.
10493 (showUsage, write_header_includes): New.
10495 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10498 * Makefile.in (OBJS): Add gimple-match-exports.o.
10499 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
10500 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
10501 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
10502 gimple_resimplify5, constant_for_folding, convert_conditional_op,
10503 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
10504 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
10505 do_valueize, try_conditional_simplification, gimple_extract,
10506 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
10507 commutative_ternary_op_p, first_commutative_argument,
10508 associative_binary_op_p, directly_supported_p,
10509 get_conditional_internal_fn): Moved to gimple-match-exports.cc
10510 * gimple-match-exports.cc: New file.
10512 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10515 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
10517 (dt_simplify::gen_1): Use it.
10519 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10522 * genmatch.cc (output_line_directive): Only emit commented directive
10525 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10528 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
10530 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
10532 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
10533 unused in_mode/in_n variables.
10535 2023-05-05 Richard Biener <rguenther@suse.de>
10537 PR tree-optimization/109735
10538 * tree-vect-stmts.cc (vectorizable_operation): Perform
10539 conversion for POINTER_DIFF_EXPR unconditionally.
10541 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
10543 * config/i386/mmx.md (mulv2si3): New expander.
10544 (*mulv2si3): New insn pattern.
10546 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
10547 Thomas Schwinge <thomas@codesourcery.com>
10550 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
10551 alongside reverse-offload function table to prevent NULL values
10552 of the function addresses.
10554 2023-05-05 Jakub Jelinek <jakub@redhat.com>
10556 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
10558 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
10560 2023-05-05 Andrew Pinski <apinski@marvell.com>
10562 PR tree-optimization/109732
10563 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
10564 of the argtrue/argfalse.
10566 2023-05-05 Andrew Pinski <apinski@marvell.com>
10568 PR tree-optimization/109722
10569 * match.pd: Extend the `ABS<a> == 0` pattern
10570 to cover `ABSU<a> == 0` too.
10572 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
10575 * config/i386/predicates.md (index_reg_operand): New predicate.
10576 * config/i386/i386.md (ashift to lea spliter): Use
10577 general_reg_operand and index_reg_operand predicates.
10579 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10581 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
10582 Rename and reimplement with RTL codes to...
10583 (aarch64_<optab>hn2<mode>_insn_le): .. This.
10584 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
10585 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
10587 (aarch64_<optab>hn2<mode>_insn_be): ... This.
10588 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
10589 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
10590 (aarch64_<optab>hn2<mode>): ... This.
10591 (aarch64_r<optab>hn2<mode>): New expander.
10592 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
10593 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
10594 (ADDSUBHN): Delete.
10595 (sur): Remove handling of the above.
10596 (addsub): Likewise.
10598 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10600 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
10602 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
10603 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
10604 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
10605 (aarch64_<sur><addsub>hn<mode>): Delete.
10606 (aarch64_<optab>hn<mode>): New define_expand.
10607 (aarch64_r<optab>hn<mode>): Likewise.
10608 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
10611 2023-05-04 Andrew Pinski <apinski@marvell.com>
10613 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
10614 diamond form bb with forwarder only empty blocks better.
10616 2023-05-04 Andrew Pinski <apinski@marvell.com>
10618 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
10619 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
10620 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
10621 of an inline version of it.
10622 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
10623 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
10625 2023-05-04 Andrew Pinski <apinski@marvell.com>
10627 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
10628 the default argument value for dce_ssa_names to nullptr.
10629 Check to make sure dce_ssa_names is a non-nullptr before
10630 calling simple_dce_from_worklist.
10632 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
10634 * config/i386/predicates.md (index_register_operand): Reject
10635 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
10636 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
10637 (call_register_no_elim_operand): Rewrite as ...
10638 (call_register_operand): ... this.
10639 (call_insn_operand): Use call_register_operand predicate.
10641 2023-05-04 Richard Biener <rguenther@suse.de>
10643 PR tree-optimization/109721
10644 * tree-vect-stmts.cc (vectorizable_operation): Make sure
10645 to test word_mode for all !target_support_p operations.
10647 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10650 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
10651 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
10652 (aarch64_mla<mode>): Rename to...
10653 (aarch64_mla<mode><vczle><vczbe>): ... This.
10654 (*aarch64_mla_elt<mode>): Rename to...
10655 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
10656 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
10657 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
10658 (aarch64_mla_n<mode>): Rename to...
10659 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
10660 (aarch64_mls<mode>): Rename to...
10661 (aarch64_mls<mode><vczle><vczbe>): ... This.
10662 (*aarch64_mls_elt<mode>): Rename to...
10663 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
10664 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
10665 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
10666 (aarch64_mls_n<mode>): Rename to...
10667 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
10668 (fma<mode>4): Rename to...
10669 (fma<mode>4<vczle><vczbe>): ... This.
10670 (*aarch64_fma4_elt<mode>): Rename to...
10671 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
10672 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
10673 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
10674 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
10675 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
10676 (fnma<mode>4): Rename to...
10677 (fnma<mode>4<vczle><vczbe>): ... This.
10678 (*aarch64_fnma4_elt<mode>): Rename to...
10679 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
10680 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
10681 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
10682 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
10683 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
10684 (aarch64_simd_bsl<mode>_internal): Rename to...
10685 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
10686 (*aarch64_simd_bsl<mode>_alt): Rename to...
10687 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
10689 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10692 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
10693 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
10694 (fabd<mode>3): Rename to...
10695 (fabd<mode>3<vczle><vczbe>): ... This.
10696 (aarch64_<optab>p<mode>): Rename to...
10697 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
10698 (aarch64_faddp<mode>): Rename to...
10699 (aarch64_faddp<mode><vczle><vczbe>): ... This.
10701 2023-05-04 Martin Liska <mliska@suse.cz>
10703 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
10704 (print_version): Use it.
10705 (generate_results): Likewise.
10707 2023-05-04 Richard Biener <rguenther@suse.de>
10709 * tree-cfg.h (last_stmt): Rename to ...
10710 (last_nondebug_stmt): ... this.
10711 * tree-cfg.cc (last_stmt): Rename to ...
10712 (last_nondebug_stmt): ... this.
10713 (assign_discriminators): Adjust.
10714 (group_case_labels_stmt): Likewise.
10715 (gimple_can_duplicate_bb_p): Likewise.
10716 (execute_fixup_cfg): Likewise.
10717 * auto-profile.cc (afdo_propagate_circuit): Likewise.
10718 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
10719 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
10720 (determine_parallel_type): Likewise.
10721 (adjust_context_and_scope): Likewise.
10722 (expand_task_call): Likewise.
10723 (remove_exit_barrier): Likewise.
10724 (expand_omp_taskreg): Likewise.
10725 (expand_omp_for_init_counts): Likewise.
10726 (expand_omp_for_init_vars): Likewise.
10727 (expand_omp_for_static_chunk): Likewise.
10728 (expand_omp_simd): Likewise.
10729 (expand_oacc_for): Likewise.
10730 (expand_omp_for): Likewise.
10731 (expand_omp_sections): Likewise.
10732 (expand_omp_atomic_fetch_op): Likewise.
10733 (expand_omp_atomic_cas): Likewise.
10734 (expand_omp_atomic): Likewise.
10735 (expand_omp_target): Likewise.
10736 (expand_omp): Likewise.
10737 (omp_make_gimple_edges): Likewise.
10738 * trans-mem.cc (tm_region_init): Likewise.
10739 * tree-inline.cc (redirect_all_calls): Likewise.
10740 * tree-parloops.cc (gen_parallel_loop): Likewise.
10741 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
10742 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
10744 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
10745 (may_eliminate_iv): Likewise.
10746 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
10747 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
10749 (estimate_numbers_of_iterations): Likewise.
10750 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
10751 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
10752 (set_predicates_for_bb): Likewise.
10753 (init_loop_unswitch_info): Likewise.
10754 (hoist_guard): Likewise.
10755 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
10756 (minmax_replacement): Likewise.
10757 * tree-ssa-reassoc.cc (update_range_test): Likewise.
10758 (optimize_range_tests_to_bit_test): Likewise.
10759 (optimize_range_tests_var_bound): Likewise.
10760 (optimize_range_tests): Likewise.
10761 (no_side_effect_bb): Likewise.
10762 (suitable_cond_bb): Likewise.
10763 (maybe_optimize_range_tests): Likewise.
10764 (reassociate_bb): Likewise.
10765 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
10767 2023-05-04 Jakub Jelinek <jakub@redhat.com>
10770 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
10771 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
10772 for it only if it still has TImode. Don't decide whether to call
10773 fix_debug_reg_uses based on whether SRC is ever set or not.
10775 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
10777 * config/cris/cris.cc (cris_split_constant): New function.
10778 * config/cris/cris.md (splitop): New iterator.
10779 (opsplit1): New define_peephole2.
10780 * config/cris/cris-protos.h (cris_split_constant): Declare.
10781 (cris_splittable_constant_p): New macro.
10783 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
10785 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
10788 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
10790 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
10791 lra_in_progress, not reload_in_progress.
10792 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
10793 * config/cris/constraints.md ("Q"): Ditto.
10795 2023-05-03 Andrew Pinski <apinski@marvell.com>
10797 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
10798 stats on removed number of statements and phis.
10800 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
10802 PR tree-optimization/109711
10803 * value-range.cc (irange::verify_range): Allow types of
10806 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
10809 * calls.cc (can_implement_as_sibling_call_p): Reject calls
10810 to __sanitizer_cov_trace_pc.
10812 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
10815 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
10816 a new ABI break parameter for GCC 14. Set it to the alignment
10817 of enums that have an underlying type. Take the true alignment
10818 of such enums from the TYPE_ALIGN of the underlying type's
10820 (aarch64_function_arg_boundary): Update accordingly.
10821 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
10822 Warn about ABI differences.
10824 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
10827 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
10828 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
10829 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
10830 (aarch64_gimplify_va_arg_expr): Likewise.
10832 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10834 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
10835 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
10836 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
10838 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
10839 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
10840 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
10841 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
10842 * config/arm/arm_mve.h (vhsubq): Remove.
10844 (vhaddq_m): Remove.
10845 (vhsubq_m): Remove.
10846 (vhaddq_x): Remove.
10847 (vhsubq_x): Remove.
10848 (vhsubq_u8): Remove.
10849 (vhsubq_n_u8): Remove.
10850 (vhaddq_u8): Remove.
10851 (vhaddq_n_u8): Remove.
10852 (vhsubq_s8): Remove.
10853 (vhsubq_n_s8): Remove.
10854 (vhaddq_s8): Remove.
10855 (vhaddq_n_s8): Remove.
10856 (vhsubq_u16): Remove.
10857 (vhsubq_n_u16): Remove.
10858 (vhaddq_u16): Remove.
10859 (vhaddq_n_u16): Remove.
10860 (vhsubq_s16): Remove.
10861 (vhsubq_n_s16): Remove.
10862 (vhaddq_s16): Remove.
10863 (vhaddq_n_s16): Remove.
10864 (vhsubq_u32): Remove.
10865 (vhsubq_n_u32): Remove.
10866 (vhaddq_u32): Remove.
10867 (vhaddq_n_u32): Remove.
10868 (vhsubq_s32): Remove.
10869 (vhsubq_n_s32): Remove.
10870 (vhaddq_s32): Remove.
10871 (vhaddq_n_s32): Remove.
10872 (vhaddq_m_n_s8): Remove.
10873 (vhaddq_m_n_s32): Remove.
10874 (vhaddq_m_n_s16): Remove.
10875 (vhaddq_m_n_u8): Remove.
10876 (vhaddq_m_n_u32): Remove.
10877 (vhaddq_m_n_u16): Remove.
10878 (vhaddq_m_s8): Remove.
10879 (vhaddq_m_s32): Remove.
10880 (vhaddq_m_s16): Remove.
10881 (vhaddq_m_u8): Remove.
10882 (vhaddq_m_u32): Remove.
10883 (vhaddq_m_u16): Remove.
10884 (vhsubq_m_n_s8): Remove.
10885 (vhsubq_m_n_s32): Remove.
10886 (vhsubq_m_n_s16): Remove.
10887 (vhsubq_m_n_u8): Remove.
10888 (vhsubq_m_n_u32): Remove.
10889 (vhsubq_m_n_u16): Remove.
10890 (vhsubq_m_s8): Remove.
10891 (vhsubq_m_s32): Remove.
10892 (vhsubq_m_s16): Remove.
10893 (vhsubq_m_u8): Remove.
10894 (vhsubq_m_u32): Remove.
10895 (vhsubq_m_u16): Remove.
10896 (vhaddq_x_n_s8): Remove.
10897 (vhaddq_x_n_s16): Remove.
10898 (vhaddq_x_n_s32): Remove.
10899 (vhaddq_x_n_u8): Remove.
10900 (vhaddq_x_n_u16): Remove.
10901 (vhaddq_x_n_u32): Remove.
10902 (vhaddq_x_s8): Remove.
10903 (vhaddq_x_s16): Remove.
10904 (vhaddq_x_s32): Remove.
10905 (vhaddq_x_u8): Remove.
10906 (vhaddq_x_u16): Remove.
10907 (vhaddq_x_u32): Remove.
10908 (vhsubq_x_n_s8): Remove.
10909 (vhsubq_x_n_s16): Remove.
10910 (vhsubq_x_n_s32): Remove.
10911 (vhsubq_x_n_u8): Remove.
10912 (vhsubq_x_n_u16): Remove.
10913 (vhsubq_x_n_u32): Remove.
10914 (vhsubq_x_s8): Remove.
10915 (vhsubq_x_s16): Remove.
10916 (vhsubq_x_s32): Remove.
10917 (vhsubq_x_u8): Remove.
10918 (vhsubq_x_u16): Remove.
10919 (vhsubq_x_u32): Remove.
10920 (__arm_vhsubq_u8): Remove.
10921 (__arm_vhsubq_n_u8): Remove.
10922 (__arm_vhaddq_u8): Remove.
10923 (__arm_vhaddq_n_u8): Remove.
10924 (__arm_vhsubq_s8): Remove.
10925 (__arm_vhsubq_n_s8): Remove.
10926 (__arm_vhaddq_s8): Remove.
10927 (__arm_vhaddq_n_s8): Remove.
10928 (__arm_vhsubq_u16): Remove.
10929 (__arm_vhsubq_n_u16): Remove.
10930 (__arm_vhaddq_u16): Remove.
10931 (__arm_vhaddq_n_u16): Remove.
10932 (__arm_vhsubq_s16): Remove.
10933 (__arm_vhsubq_n_s16): Remove.
10934 (__arm_vhaddq_s16): Remove.
10935 (__arm_vhaddq_n_s16): Remove.
10936 (__arm_vhsubq_u32): Remove.
10937 (__arm_vhsubq_n_u32): Remove.
10938 (__arm_vhaddq_u32): Remove.
10939 (__arm_vhaddq_n_u32): Remove.
10940 (__arm_vhsubq_s32): Remove.
10941 (__arm_vhsubq_n_s32): Remove.
10942 (__arm_vhaddq_s32): Remove.
10943 (__arm_vhaddq_n_s32): Remove.
10944 (__arm_vhaddq_m_n_s8): Remove.
10945 (__arm_vhaddq_m_n_s32): Remove.
10946 (__arm_vhaddq_m_n_s16): Remove.
10947 (__arm_vhaddq_m_n_u8): Remove.
10948 (__arm_vhaddq_m_n_u32): Remove.
10949 (__arm_vhaddq_m_n_u16): Remove.
10950 (__arm_vhaddq_m_s8): Remove.
10951 (__arm_vhaddq_m_s32): Remove.
10952 (__arm_vhaddq_m_s16): Remove.
10953 (__arm_vhaddq_m_u8): Remove.
10954 (__arm_vhaddq_m_u32): Remove.
10955 (__arm_vhaddq_m_u16): Remove.
10956 (__arm_vhsubq_m_n_s8): Remove.
10957 (__arm_vhsubq_m_n_s32): Remove.
10958 (__arm_vhsubq_m_n_s16): Remove.
10959 (__arm_vhsubq_m_n_u8): Remove.
10960 (__arm_vhsubq_m_n_u32): Remove.
10961 (__arm_vhsubq_m_n_u16): Remove.
10962 (__arm_vhsubq_m_s8): Remove.
10963 (__arm_vhsubq_m_s32): Remove.
10964 (__arm_vhsubq_m_s16): Remove.
10965 (__arm_vhsubq_m_u8): Remove.
10966 (__arm_vhsubq_m_u32): Remove.
10967 (__arm_vhsubq_m_u16): Remove.
10968 (__arm_vhaddq_x_n_s8): Remove.
10969 (__arm_vhaddq_x_n_s16): Remove.
10970 (__arm_vhaddq_x_n_s32): Remove.
10971 (__arm_vhaddq_x_n_u8): Remove.
10972 (__arm_vhaddq_x_n_u16): Remove.
10973 (__arm_vhaddq_x_n_u32): Remove.
10974 (__arm_vhaddq_x_s8): Remove.
10975 (__arm_vhaddq_x_s16): Remove.
10976 (__arm_vhaddq_x_s32): Remove.
10977 (__arm_vhaddq_x_u8): Remove.
10978 (__arm_vhaddq_x_u16): Remove.
10979 (__arm_vhaddq_x_u32): Remove.
10980 (__arm_vhsubq_x_n_s8): Remove.
10981 (__arm_vhsubq_x_n_s16): Remove.
10982 (__arm_vhsubq_x_n_s32): Remove.
10983 (__arm_vhsubq_x_n_u8): Remove.
10984 (__arm_vhsubq_x_n_u16): Remove.
10985 (__arm_vhsubq_x_n_u32): Remove.
10986 (__arm_vhsubq_x_s8): Remove.
10987 (__arm_vhsubq_x_s16): Remove.
10988 (__arm_vhsubq_x_s32): Remove.
10989 (__arm_vhsubq_x_u8): Remove.
10990 (__arm_vhsubq_x_u16): Remove.
10991 (__arm_vhsubq_x_u32): Remove.
10992 (__arm_vhsubq): Remove.
10993 (__arm_vhaddq): Remove.
10994 (__arm_vhaddq_m): Remove.
10995 (__arm_vhsubq_m): Remove.
10996 (__arm_vhaddq_x): Remove.
10997 (__arm_vhsubq_x): Remove.
10999 (vmulhq_m): Remove.
11000 (vmulhq_x): Remove.
11001 (vmulhq_u8): Remove.
11002 (vmulhq_s8): Remove.
11003 (vmulhq_u16): Remove.
11004 (vmulhq_s16): Remove.
11005 (vmulhq_u32): Remove.
11006 (vmulhq_s32): Remove.
11007 (vmulhq_m_s8): Remove.
11008 (vmulhq_m_s32): Remove.
11009 (vmulhq_m_s16): Remove.
11010 (vmulhq_m_u8): Remove.
11011 (vmulhq_m_u32): Remove.
11012 (vmulhq_m_u16): Remove.
11013 (vmulhq_x_s8): Remove.
11014 (vmulhq_x_s16): Remove.
11015 (vmulhq_x_s32): Remove.
11016 (vmulhq_x_u8): Remove.
11017 (vmulhq_x_u16): Remove.
11018 (vmulhq_x_u32): Remove.
11019 (__arm_vmulhq_u8): Remove.
11020 (__arm_vmulhq_s8): Remove.
11021 (__arm_vmulhq_u16): Remove.
11022 (__arm_vmulhq_s16): Remove.
11023 (__arm_vmulhq_u32): Remove.
11024 (__arm_vmulhq_s32): Remove.
11025 (__arm_vmulhq_m_s8): Remove.
11026 (__arm_vmulhq_m_s32): Remove.
11027 (__arm_vmulhq_m_s16): Remove.
11028 (__arm_vmulhq_m_u8): Remove.
11029 (__arm_vmulhq_m_u32): Remove.
11030 (__arm_vmulhq_m_u16): Remove.
11031 (__arm_vmulhq_x_s8): Remove.
11032 (__arm_vmulhq_x_s16): Remove.
11033 (__arm_vmulhq_x_s32): Remove.
11034 (__arm_vmulhq_x_u8): Remove.
11035 (__arm_vmulhq_x_u16): Remove.
11036 (__arm_vmulhq_x_u32): Remove.
11037 (__arm_vmulhq): Remove.
11038 (__arm_vmulhq_m): Remove.
11039 (__arm_vmulhq_x): Remove.
11042 (vqaddq_m): Remove.
11043 (vqsubq_m): Remove.
11044 (vqsubq_u8): Remove.
11045 (vqsubq_n_u8): Remove.
11046 (vqaddq_u8): Remove.
11047 (vqaddq_n_u8): Remove.
11048 (vqsubq_s8): Remove.
11049 (vqsubq_n_s8): Remove.
11050 (vqaddq_s8): Remove.
11051 (vqaddq_n_s8): Remove.
11052 (vqsubq_u16): Remove.
11053 (vqsubq_n_u16): Remove.
11054 (vqaddq_u16): Remove.
11055 (vqaddq_n_u16): Remove.
11056 (vqsubq_s16): Remove.
11057 (vqsubq_n_s16): Remove.
11058 (vqaddq_s16): Remove.
11059 (vqaddq_n_s16): Remove.
11060 (vqsubq_u32): Remove.
11061 (vqsubq_n_u32): Remove.
11062 (vqaddq_u32): Remove.
11063 (vqaddq_n_u32): Remove.
11064 (vqsubq_s32): Remove.
11065 (vqsubq_n_s32): Remove.
11066 (vqaddq_s32): Remove.
11067 (vqaddq_n_s32): Remove.
11068 (vqaddq_m_n_s8): Remove.
11069 (vqaddq_m_n_s32): Remove.
11070 (vqaddq_m_n_s16): Remove.
11071 (vqaddq_m_n_u8): Remove.
11072 (vqaddq_m_n_u32): Remove.
11073 (vqaddq_m_n_u16): Remove.
11074 (vqaddq_m_s8): Remove.
11075 (vqaddq_m_s32): Remove.
11076 (vqaddq_m_s16): Remove.
11077 (vqaddq_m_u8): Remove.
11078 (vqaddq_m_u32): Remove.
11079 (vqaddq_m_u16): Remove.
11080 (vqsubq_m_n_s8): Remove.
11081 (vqsubq_m_n_s32): Remove.
11082 (vqsubq_m_n_s16): Remove.
11083 (vqsubq_m_n_u8): Remove.
11084 (vqsubq_m_n_u32): Remove.
11085 (vqsubq_m_n_u16): Remove.
11086 (vqsubq_m_s8): Remove.
11087 (vqsubq_m_s32): Remove.
11088 (vqsubq_m_s16): Remove.
11089 (vqsubq_m_u8): Remove.
11090 (vqsubq_m_u32): Remove.
11091 (vqsubq_m_u16): Remove.
11092 (__arm_vqsubq_u8): Remove.
11093 (__arm_vqsubq_n_u8): Remove.
11094 (__arm_vqaddq_u8): Remove.
11095 (__arm_vqaddq_n_u8): Remove.
11096 (__arm_vqsubq_s8): Remove.
11097 (__arm_vqsubq_n_s8): Remove.
11098 (__arm_vqaddq_s8): Remove.
11099 (__arm_vqaddq_n_s8): Remove.
11100 (__arm_vqsubq_u16): Remove.
11101 (__arm_vqsubq_n_u16): Remove.
11102 (__arm_vqaddq_u16): Remove.
11103 (__arm_vqaddq_n_u16): Remove.
11104 (__arm_vqsubq_s16): Remove.
11105 (__arm_vqsubq_n_s16): Remove.
11106 (__arm_vqaddq_s16): Remove.
11107 (__arm_vqaddq_n_s16): Remove.
11108 (__arm_vqsubq_u32): Remove.
11109 (__arm_vqsubq_n_u32): Remove.
11110 (__arm_vqaddq_u32): Remove.
11111 (__arm_vqaddq_n_u32): Remove.
11112 (__arm_vqsubq_s32): Remove.
11113 (__arm_vqsubq_n_s32): Remove.
11114 (__arm_vqaddq_s32): Remove.
11115 (__arm_vqaddq_n_s32): Remove.
11116 (__arm_vqaddq_m_n_s8): Remove.
11117 (__arm_vqaddq_m_n_s32): Remove.
11118 (__arm_vqaddq_m_n_s16): Remove.
11119 (__arm_vqaddq_m_n_u8): Remove.
11120 (__arm_vqaddq_m_n_u32): Remove.
11121 (__arm_vqaddq_m_n_u16): Remove.
11122 (__arm_vqaddq_m_s8): Remove.
11123 (__arm_vqaddq_m_s32): Remove.
11124 (__arm_vqaddq_m_s16): Remove.
11125 (__arm_vqaddq_m_u8): Remove.
11126 (__arm_vqaddq_m_u32): Remove.
11127 (__arm_vqaddq_m_u16): Remove.
11128 (__arm_vqsubq_m_n_s8): Remove.
11129 (__arm_vqsubq_m_n_s32): Remove.
11130 (__arm_vqsubq_m_n_s16): Remove.
11131 (__arm_vqsubq_m_n_u8): Remove.
11132 (__arm_vqsubq_m_n_u32): Remove.
11133 (__arm_vqsubq_m_n_u16): Remove.
11134 (__arm_vqsubq_m_s8): Remove.
11135 (__arm_vqsubq_m_s32): Remove.
11136 (__arm_vqsubq_m_s16): Remove.
11137 (__arm_vqsubq_m_u8): Remove.
11138 (__arm_vqsubq_m_u32): Remove.
11139 (__arm_vqsubq_m_u16): Remove.
11140 (__arm_vqsubq): Remove.
11141 (__arm_vqaddq): Remove.
11142 (__arm_vqaddq_m): Remove.
11143 (__arm_vqsubq_m): Remove.
11144 (vqdmulhq): Remove.
11145 (vqdmulhq_m): Remove.
11146 (vqdmulhq_s8): Remove.
11147 (vqdmulhq_n_s8): Remove.
11148 (vqdmulhq_s16): Remove.
11149 (vqdmulhq_n_s16): Remove.
11150 (vqdmulhq_s32): Remove.
11151 (vqdmulhq_n_s32): Remove.
11152 (vqdmulhq_m_n_s8): Remove.
11153 (vqdmulhq_m_n_s32): Remove.
11154 (vqdmulhq_m_n_s16): Remove.
11155 (vqdmulhq_m_s8): Remove.
11156 (vqdmulhq_m_s32): Remove.
11157 (vqdmulhq_m_s16): Remove.
11158 (__arm_vqdmulhq_s8): Remove.
11159 (__arm_vqdmulhq_n_s8): Remove.
11160 (__arm_vqdmulhq_s16): Remove.
11161 (__arm_vqdmulhq_n_s16): Remove.
11162 (__arm_vqdmulhq_s32): Remove.
11163 (__arm_vqdmulhq_n_s32): Remove.
11164 (__arm_vqdmulhq_m_n_s8): Remove.
11165 (__arm_vqdmulhq_m_n_s32): Remove.
11166 (__arm_vqdmulhq_m_n_s16): Remove.
11167 (__arm_vqdmulhq_m_s8): Remove.
11168 (__arm_vqdmulhq_m_s32): Remove.
11169 (__arm_vqdmulhq_m_s16): Remove.
11170 (__arm_vqdmulhq): Remove.
11171 (__arm_vqdmulhq_m): Remove.
11173 (vrhaddq_m): Remove.
11174 (vrhaddq_x): Remove.
11175 (vrhaddq_u8): Remove.
11176 (vrhaddq_s8): Remove.
11177 (vrhaddq_u16): Remove.
11178 (vrhaddq_s16): Remove.
11179 (vrhaddq_u32): Remove.
11180 (vrhaddq_s32): Remove.
11181 (vrhaddq_m_s8): Remove.
11182 (vrhaddq_m_s32): Remove.
11183 (vrhaddq_m_s16): Remove.
11184 (vrhaddq_m_u8): Remove.
11185 (vrhaddq_m_u32): Remove.
11186 (vrhaddq_m_u16): Remove.
11187 (vrhaddq_x_s8): Remove.
11188 (vrhaddq_x_s16): Remove.
11189 (vrhaddq_x_s32): Remove.
11190 (vrhaddq_x_u8): Remove.
11191 (vrhaddq_x_u16): Remove.
11192 (vrhaddq_x_u32): Remove.
11193 (__arm_vrhaddq_u8): Remove.
11194 (__arm_vrhaddq_s8): Remove.
11195 (__arm_vrhaddq_u16): Remove.
11196 (__arm_vrhaddq_s16): Remove.
11197 (__arm_vrhaddq_u32): Remove.
11198 (__arm_vrhaddq_s32): Remove.
11199 (__arm_vrhaddq_m_s8): Remove.
11200 (__arm_vrhaddq_m_s32): Remove.
11201 (__arm_vrhaddq_m_s16): Remove.
11202 (__arm_vrhaddq_m_u8): Remove.
11203 (__arm_vrhaddq_m_u32): Remove.
11204 (__arm_vrhaddq_m_u16): Remove.
11205 (__arm_vrhaddq_x_s8): Remove.
11206 (__arm_vrhaddq_x_s16): Remove.
11207 (__arm_vrhaddq_x_s32): Remove.
11208 (__arm_vrhaddq_x_u8): Remove.
11209 (__arm_vrhaddq_x_u16): Remove.
11210 (__arm_vrhaddq_x_u32): Remove.
11211 (__arm_vrhaddq): Remove.
11212 (__arm_vrhaddq_m): Remove.
11213 (__arm_vrhaddq_x): Remove.
11215 (vrmulhq_m): Remove.
11216 (vrmulhq_x): Remove.
11217 (vrmulhq_u8): Remove.
11218 (vrmulhq_s8): Remove.
11219 (vrmulhq_u16): Remove.
11220 (vrmulhq_s16): Remove.
11221 (vrmulhq_u32): Remove.
11222 (vrmulhq_s32): Remove.
11223 (vrmulhq_m_s8): Remove.
11224 (vrmulhq_m_s32): Remove.
11225 (vrmulhq_m_s16): Remove.
11226 (vrmulhq_m_u8): Remove.
11227 (vrmulhq_m_u32): Remove.
11228 (vrmulhq_m_u16): Remove.
11229 (vrmulhq_x_s8): Remove.
11230 (vrmulhq_x_s16): Remove.
11231 (vrmulhq_x_s32): Remove.
11232 (vrmulhq_x_u8): Remove.
11233 (vrmulhq_x_u16): Remove.
11234 (vrmulhq_x_u32): Remove.
11235 (__arm_vrmulhq_u8): Remove.
11236 (__arm_vrmulhq_s8): Remove.
11237 (__arm_vrmulhq_u16): Remove.
11238 (__arm_vrmulhq_s16): Remove.
11239 (__arm_vrmulhq_u32): Remove.
11240 (__arm_vrmulhq_s32): Remove.
11241 (__arm_vrmulhq_m_s8): Remove.
11242 (__arm_vrmulhq_m_s32): Remove.
11243 (__arm_vrmulhq_m_s16): Remove.
11244 (__arm_vrmulhq_m_u8): Remove.
11245 (__arm_vrmulhq_m_u32): Remove.
11246 (__arm_vrmulhq_m_u16): Remove.
11247 (__arm_vrmulhq_x_s8): Remove.
11248 (__arm_vrmulhq_x_s16): Remove.
11249 (__arm_vrmulhq_x_s32): Remove.
11250 (__arm_vrmulhq_x_u8): Remove.
11251 (__arm_vrmulhq_x_u16): Remove.
11252 (__arm_vrmulhq_x_u32): Remove.
11253 (__arm_vrmulhq): Remove.
11254 (__arm_vrmulhq_m): Remove.
11255 (__arm_vrmulhq_x): Remove.
11257 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11259 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
11260 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
11261 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
11262 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
11263 * config/arm/mve.md (mve_vabdq_<supf><mode>)
11264 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
11265 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
11266 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
11267 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
11268 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
11269 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
11271 (@mve_<mve_insn>q_<supf><mode>): ... this.
11272 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
11273 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
11274 gen_mve_vhaddq / gen_mve_vrhaddq.
11276 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11278 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
11279 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
11280 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
11281 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
11282 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
11283 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
11284 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
11285 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
11286 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
11287 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
11288 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
11289 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
11290 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11292 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11294 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
11295 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
11297 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
11298 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
11299 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
11300 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
11301 (mve_vqsubq_n_<supf><mode>): Merge into ...
11302 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11304 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11306 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
11307 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
11308 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
11309 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
11310 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
11311 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
11312 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
11313 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
11314 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
11315 (mve_vshlq_m_<supf><mode>): Merged into
11316 @mve_<mve_insn>q_m_<supf><mode>.
11317 (mve_vabdq_m_<supf><mode>): Likewise.
11318 (mve_vhaddq_m_<supf><mode>): Likewise.
11319 (mve_vhsubq_m_<supf><mode>): Likewise.
11320 (mve_vmaxq_m_<supf><mode>): Likewise.
11321 (mve_vminq_m_<supf><mode>): Likewise.
11322 (mve_vmulhq_m_<supf><mode>): Likewise.
11323 (mve_vqaddq_m_<supf><mode>): Likewise.
11324 (mve_vqrshlq_m_<supf><mode>): Likewise.
11325 (mve_vqshlq_m_<supf><mode>): Likewise.
11326 (mve_vqsubq_m_<supf><mode>): Likewise.
11327 (mve_vrhaddq_m_<supf><mode>): Likewise.
11328 (mve_vrmulhq_m_<supf><mode>): Likewise.
11329 (mve_vrshlq_m_<supf><mode>): Likewise.
11330 (mve_vqdmladhq_m_s<mode>): Likewise.
11331 (mve_vqdmladhxq_m_s<mode>): Likewise.
11332 (mve_vqdmlsdhq_m_s<mode>): Likewise.
11333 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
11334 (mve_vqdmulhq_m_s<mode>): Likewise.
11335 (mve_vqrdmladhq_m_s<mode>): Likewise.
11336 (mve_vqrdmladhxq_m_s<mode>): Likewise.
11337 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
11338 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
11339 (mve_vqrdmulhq_m_s<mode>): Likewise.
11341 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11343 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
11344 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
11345 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
11346 * config/arm/arm_mve.h (vcreateq_f16): Remove.
11347 (vcreateq_f32): Remove.
11348 (vcreateq_u8): Remove.
11349 (vcreateq_u16): Remove.
11350 (vcreateq_u32): Remove.
11351 (vcreateq_u64): Remove.
11352 (vcreateq_s8): Remove.
11353 (vcreateq_s16): Remove.
11354 (vcreateq_s32): Remove.
11355 (vcreateq_s64): Remove.
11356 (__arm_vcreateq_u8): Remove.
11357 (__arm_vcreateq_u16): Remove.
11358 (__arm_vcreateq_u32): Remove.
11359 (__arm_vcreateq_u64): Remove.
11360 (__arm_vcreateq_s8): Remove.
11361 (__arm_vcreateq_s16): Remove.
11362 (__arm_vcreateq_s32): Remove.
11363 (__arm_vcreateq_s64): Remove.
11364 (__arm_vcreateq_f16): Remove.
11365 (__arm_vcreateq_f32): Remove.
11367 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11369 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
11370 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
11371 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
11372 (@mve_<mve_insn>q_f<mode>): ... this.
11373 (mve_vcreateq_<supf><mode>): Rename into ...
11374 (@mve_<mve_insn>q_<supf><mode>): ... this.
11376 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11378 * config/arm/arm-mve-builtins-shapes.cc (create): New.
11379 * config/arm/arm-mve-builtins-shapes.h: (create): New.
11381 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11383 * config/arm/arm-mve-builtins-functions.h (class
11384 unspec_mve_function_exact_insn): New.
11386 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11388 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
11390 * config/arm/arm-mve-builtins-base.def (vorrq): New.
11391 * config/arm/arm-mve-builtins-base.h (vorrq): New.
11392 * config/arm/arm-mve-builtins.cc
11393 (function_instance::has_inactive_argument): Handle vorrq.
11394 * config/arm/arm_mve.h (vorrq): Remove.
11395 (vorrq_m_n): Remove.
11398 (vorrq_u8): Remove.
11399 (vorrq_s8): Remove.
11400 (vorrq_u16): Remove.
11401 (vorrq_s16): Remove.
11402 (vorrq_u32): Remove.
11403 (vorrq_s32): Remove.
11404 (vorrq_n_u16): Remove.
11405 (vorrq_f16): Remove.
11406 (vorrq_n_s16): Remove.
11407 (vorrq_n_u32): Remove.
11408 (vorrq_f32): Remove.
11409 (vorrq_n_s32): Remove.
11410 (vorrq_m_n_s16): Remove.
11411 (vorrq_m_n_u16): Remove.
11412 (vorrq_m_n_s32): Remove.
11413 (vorrq_m_n_u32): Remove.
11414 (vorrq_m_s8): Remove.
11415 (vorrq_m_s32): Remove.
11416 (vorrq_m_s16): Remove.
11417 (vorrq_m_u8): Remove.
11418 (vorrq_m_u32): Remove.
11419 (vorrq_m_u16): Remove.
11420 (vorrq_m_f32): Remove.
11421 (vorrq_m_f16): Remove.
11422 (vorrq_x_s8): Remove.
11423 (vorrq_x_s16): Remove.
11424 (vorrq_x_s32): Remove.
11425 (vorrq_x_u8): Remove.
11426 (vorrq_x_u16): Remove.
11427 (vorrq_x_u32): Remove.
11428 (vorrq_x_f16): Remove.
11429 (vorrq_x_f32): Remove.
11430 (__arm_vorrq_u8): Remove.
11431 (__arm_vorrq_s8): Remove.
11432 (__arm_vorrq_u16): Remove.
11433 (__arm_vorrq_s16): Remove.
11434 (__arm_vorrq_u32): Remove.
11435 (__arm_vorrq_s32): Remove.
11436 (__arm_vorrq_n_u16): Remove.
11437 (__arm_vorrq_n_s16): Remove.
11438 (__arm_vorrq_n_u32): Remove.
11439 (__arm_vorrq_n_s32): Remove.
11440 (__arm_vorrq_m_n_s16): Remove.
11441 (__arm_vorrq_m_n_u16): Remove.
11442 (__arm_vorrq_m_n_s32): Remove.
11443 (__arm_vorrq_m_n_u32): Remove.
11444 (__arm_vorrq_m_s8): Remove.
11445 (__arm_vorrq_m_s32): Remove.
11446 (__arm_vorrq_m_s16): Remove.
11447 (__arm_vorrq_m_u8): Remove.
11448 (__arm_vorrq_m_u32): Remove.
11449 (__arm_vorrq_m_u16): Remove.
11450 (__arm_vorrq_x_s8): Remove.
11451 (__arm_vorrq_x_s16): Remove.
11452 (__arm_vorrq_x_s32): Remove.
11453 (__arm_vorrq_x_u8): Remove.
11454 (__arm_vorrq_x_u16): Remove.
11455 (__arm_vorrq_x_u32): Remove.
11456 (__arm_vorrq_f16): Remove.
11457 (__arm_vorrq_f32): Remove.
11458 (__arm_vorrq_m_f32): Remove.
11459 (__arm_vorrq_m_f16): Remove.
11460 (__arm_vorrq_x_f16): Remove.
11461 (__arm_vorrq_x_f32): Remove.
11462 (__arm_vorrq): Remove.
11463 (__arm_vorrq_m_n): Remove.
11464 (__arm_vorrq_m): Remove.
11465 (__arm_vorrq_x): Remove.
11467 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11469 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
11470 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
11471 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
11472 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
11474 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11476 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
11477 (vandq,veorq): New.
11478 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
11479 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
11480 * config/arm/arm_mve.h (vandq): Remove.
11483 (vandq_u8): Remove.
11484 (vandq_s8): Remove.
11485 (vandq_u16): Remove.
11486 (vandq_s16): Remove.
11487 (vandq_u32): Remove.
11488 (vandq_s32): Remove.
11489 (vandq_f16): Remove.
11490 (vandq_f32): Remove.
11491 (vandq_m_s8): Remove.
11492 (vandq_m_s32): Remove.
11493 (vandq_m_s16): Remove.
11494 (vandq_m_u8): Remove.
11495 (vandq_m_u32): Remove.
11496 (vandq_m_u16): Remove.
11497 (vandq_m_f32): Remove.
11498 (vandq_m_f16): Remove.
11499 (vandq_x_s8): Remove.
11500 (vandq_x_s16): Remove.
11501 (vandq_x_s32): Remove.
11502 (vandq_x_u8): Remove.
11503 (vandq_x_u16): Remove.
11504 (vandq_x_u32): Remove.
11505 (vandq_x_f16): Remove.
11506 (vandq_x_f32): Remove.
11507 (__arm_vandq_u8): Remove.
11508 (__arm_vandq_s8): Remove.
11509 (__arm_vandq_u16): Remove.
11510 (__arm_vandq_s16): Remove.
11511 (__arm_vandq_u32): Remove.
11512 (__arm_vandq_s32): Remove.
11513 (__arm_vandq_m_s8): Remove.
11514 (__arm_vandq_m_s32): Remove.
11515 (__arm_vandq_m_s16): Remove.
11516 (__arm_vandq_m_u8): Remove.
11517 (__arm_vandq_m_u32): Remove.
11518 (__arm_vandq_m_u16): Remove.
11519 (__arm_vandq_x_s8): Remove.
11520 (__arm_vandq_x_s16): Remove.
11521 (__arm_vandq_x_s32): Remove.
11522 (__arm_vandq_x_u8): Remove.
11523 (__arm_vandq_x_u16): Remove.
11524 (__arm_vandq_x_u32): Remove.
11525 (__arm_vandq_f16): Remove.
11526 (__arm_vandq_f32): Remove.
11527 (__arm_vandq_m_f32): Remove.
11528 (__arm_vandq_m_f16): Remove.
11529 (__arm_vandq_x_f16): Remove.
11530 (__arm_vandq_x_f32): Remove.
11531 (__arm_vandq): Remove.
11532 (__arm_vandq_m): Remove.
11533 (__arm_vandq_x): Remove.
11536 (veorq_u8): Remove.
11537 (veorq_s8): Remove.
11538 (veorq_u16): Remove.
11539 (veorq_s16): Remove.
11540 (veorq_u32): Remove.
11541 (veorq_s32): Remove.
11542 (veorq_f16): Remove.
11543 (veorq_f32): Remove.
11544 (veorq_m_s8): Remove.
11545 (veorq_m_s32): Remove.
11546 (veorq_m_s16): Remove.
11547 (veorq_m_u8): Remove.
11548 (veorq_m_u32): Remove.
11549 (veorq_m_u16): Remove.
11550 (veorq_m_f32): Remove.
11551 (veorq_m_f16): Remove.
11552 (veorq_x_s8): Remove.
11553 (veorq_x_s16): Remove.
11554 (veorq_x_s32): Remove.
11555 (veorq_x_u8): Remove.
11556 (veorq_x_u16): Remove.
11557 (veorq_x_u32): Remove.
11558 (veorq_x_f16): Remove.
11559 (veorq_x_f32): Remove.
11560 (__arm_veorq_u8): Remove.
11561 (__arm_veorq_s8): Remove.
11562 (__arm_veorq_u16): Remove.
11563 (__arm_veorq_s16): Remove.
11564 (__arm_veorq_u32): Remove.
11565 (__arm_veorq_s32): Remove.
11566 (__arm_veorq_m_s8): Remove.
11567 (__arm_veorq_m_s32): Remove.
11568 (__arm_veorq_m_s16): Remove.
11569 (__arm_veorq_m_u8): Remove.
11570 (__arm_veorq_m_u32): Remove.
11571 (__arm_veorq_m_u16): Remove.
11572 (__arm_veorq_x_s8): Remove.
11573 (__arm_veorq_x_s16): Remove.
11574 (__arm_veorq_x_s32): Remove.
11575 (__arm_veorq_x_u8): Remove.
11576 (__arm_veorq_x_u16): Remove.
11577 (__arm_veorq_x_u32): Remove.
11578 (__arm_veorq_f16): Remove.
11579 (__arm_veorq_f32): Remove.
11580 (__arm_veorq_m_f32): Remove.
11581 (__arm_veorq_m_f16): Remove.
11582 (__arm_veorq_x_f16): Remove.
11583 (__arm_veorq_x_f32): Remove.
11584 (__arm_veorq): Remove.
11585 (__arm_veorq_m): Remove.
11586 (__arm_veorq_x): Remove.
11588 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11590 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
11591 (MVE_FP_M_BINARY_LOGIC): New.
11592 (MVE_INT_M_N_BINARY_LOGIC): New.
11593 (MVE_INT_N_BINARY_LOGIC): New.
11594 (mve_insn): Add vand, veor, vorr, vbic.
11595 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
11596 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
11597 (mve_vbicq_m_<supf><mode>): Merge into ...
11598 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11599 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
11600 (mve_vbicq_m_f<mode>): Merge into ...
11601 (@mve_<mve_insn>q_m_f<mode>): ... this.
11602 (mve_vorrq_n_<supf><mode>)
11603 (mve_vbicq_n_<supf><mode>): Merge into ...
11604 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11605 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
11607 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11609 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11611 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
11612 * config/arm/arm-mve-builtins-shapes.h (binary): New.
11614 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11616 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
11618 (vaddq, vmulq, vsubq): New.
11619 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
11620 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
11621 * config/arm/arm_mve.h (vaddq): Remove.
11624 (vaddq_n_u8): Remove.
11625 (vaddq_n_s8): Remove.
11626 (vaddq_n_u16): Remove.
11627 (vaddq_n_s16): Remove.
11628 (vaddq_n_u32): Remove.
11629 (vaddq_n_s32): Remove.
11630 (vaddq_n_f16): Remove.
11631 (vaddq_n_f32): Remove.
11632 (vaddq_m_n_s8): Remove.
11633 (vaddq_m_n_s32): Remove.
11634 (vaddq_m_n_s16): Remove.
11635 (vaddq_m_n_u8): Remove.
11636 (vaddq_m_n_u32): Remove.
11637 (vaddq_m_n_u16): Remove.
11638 (vaddq_m_s8): Remove.
11639 (vaddq_m_s32): Remove.
11640 (vaddq_m_s16): Remove.
11641 (vaddq_m_u8): Remove.
11642 (vaddq_m_u32): Remove.
11643 (vaddq_m_u16): Remove.
11644 (vaddq_m_f32): Remove.
11645 (vaddq_m_f16): Remove.
11646 (vaddq_m_n_f32): Remove.
11647 (vaddq_m_n_f16): Remove.
11648 (vaddq_s8): Remove.
11649 (vaddq_s16): Remove.
11650 (vaddq_s32): Remove.
11651 (vaddq_u8): Remove.
11652 (vaddq_u16): Remove.
11653 (vaddq_u32): Remove.
11654 (vaddq_f16): Remove.
11655 (vaddq_f32): Remove.
11656 (vaddq_x_s8): Remove.
11657 (vaddq_x_s16): Remove.
11658 (vaddq_x_s32): Remove.
11659 (vaddq_x_n_s8): Remove.
11660 (vaddq_x_n_s16): Remove.
11661 (vaddq_x_n_s32): Remove.
11662 (vaddq_x_u8): Remove.
11663 (vaddq_x_u16): Remove.
11664 (vaddq_x_u32): Remove.
11665 (vaddq_x_n_u8): Remove.
11666 (vaddq_x_n_u16): Remove.
11667 (vaddq_x_n_u32): Remove.
11668 (vaddq_x_f16): Remove.
11669 (vaddq_x_f32): Remove.
11670 (vaddq_x_n_f16): Remove.
11671 (vaddq_x_n_f32): Remove.
11672 (__arm_vaddq_n_u8): Remove.
11673 (__arm_vaddq_n_s8): Remove.
11674 (__arm_vaddq_n_u16): Remove.
11675 (__arm_vaddq_n_s16): Remove.
11676 (__arm_vaddq_n_u32): Remove.
11677 (__arm_vaddq_n_s32): Remove.
11678 (__arm_vaddq_m_n_s8): Remove.
11679 (__arm_vaddq_m_n_s32): Remove.
11680 (__arm_vaddq_m_n_s16): Remove.
11681 (__arm_vaddq_m_n_u8): Remove.
11682 (__arm_vaddq_m_n_u32): Remove.
11683 (__arm_vaddq_m_n_u16): Remove.
11684 (__arm_vaddq_m_s8): Remove.
11685 (__arm_vaddq_m_s32): Remove.
11686 (__arm_vaddq_m_s16): Remove.
11687 (__arm_vaddq_m_u8): Remove.
11688 (__arm_vaddq_m_u32): Remove.
11689 (__arm_vaddq_m_u16): Remove.
11690 (__arm_vaddq_s8): Remove.
11691 (__arm_vaddq_s16): Remove.
11692 (__arm_vaddq_s32): Remove.
11693 (__arm_vaddq_u8): Remove.
11694 (__arm_vaddq_u16): Remove.
11695 (__arm_vaddq_u32): Remove.
11696 (__arm_vaddq_x_s8): Remove.
11697 (__arm_vaddq_x_s16): Remove.
11698 (__arm_vaddq_x_s32): Remove.
11699 (__arm_vaddq_x_n_s8): Remove.
11700 (__arm_vaddq_x_n_s16): Remove.
11701 (__arm_vaddq_x_n_s32): Remove.
11702 (__arm_vaddq_x_u8): Remove.
11703 (__arm_vaddq_x_u16): Remove.
11704 (__arm_vaddq_x_u32): Remove.
11705 (__arm_vaddq_x_n_u8): Remove.
11706 (__arm_vaddq_x_n_u16): Remove.
11707 (__arm_vaddq_x_n_u32): Remove.
11708 (__arm_vaddq_n_f16): Remove.
11709 (__arm_vaddq_n_f32): Remove.
11710 (__arm_vaddq_m_f32): Remove.
11711 (__arm_vaddq_m_f16): Remove.
11712 (__arm_vaddq_m_n_f32): Remove.
11713 (__arm_vaddq_m_n_f16): Remove.
11714 (__arm_vaddq_f16): Remove.
11715 (__arm_vaddq_f32): Remove.
11716 (__arm_vaddq_x_f16): Remove.
11717 (__arm_vaddq_x_f32): Remove.
11718 (__arm_vaddq_x_n_f16): Remove.
11719 (__arm_vaddq_x_n_f32): Remove.
11720 (__arm_vaddq): Remove.
11721 (__arm_vaddq_m): Remove.
11722 (__arm_vaddq_x): Remove.
11726 (vmulq_u8): Remove.
11727 (vmulq_n_u8): Remove.
11728 (vmulq_s8): Remove.
11729 (vmulq_n_s8): Remove.
11730 (vmulq_u16): Remove.
11731 (vmulq_n_u16): Remove.
11732 (vmulq_s16): Remove.
11733 (vmulq_n_s16): Remove.
11734 (vmulq_u32): Remove.
11735 (vmulq_n_u32): Remove.
11736 (vmulq_s32): Remove.
11737 (vmulq_n_s32): Remove.
11738 (vmulq_n_f16): Remove.
11739 (vmulq_f16): Remove.
11740 (vmulq_n_f32): Remove.
11741 (vmulq_f32): Remove.
11742 (vmulq_m_n_s8): Remove.
11743 (vmulq_m_n_s32): Remove.
11744 (vmulq_m_n_s16): Remove.
11745 (vmulq_m_n_u8): Remove.
11746 (vmulq_m_n_u32): Remove.
11747 (vmulq_m_n_u16): Remove.
11748 (vmulq_m_s8): Remove.
11749 (vmulq_m_s32): Remove.
11750 (vmulq_m_s16): Remove.
11751 (vmulq_m_u8): Remove.
11752 (vmulq_m_u32): Remove.
11753 (vmulq_m_u16): Remove.
11754 (vmulq_m_f32): Remove.
11755 (vmulq_m_f16): Remove.
11756 (vmulq_m_n_f32): Remove.
11757 (vmulq_m_n_f16): Remove.
11758 (vmulq_x_s8): Remove.
11759 (vmulq_x_s16): Remove.
11760 (vmulq_x_s32): Remove.
11761 (vmulq_x_n_s8): Remove.
11762 (vmulq_x_n_s16): Remove.
11763 (vmulq_x_n_s32): Remove.
11764 (vmulq_x_u8): Remove.
11765 (vmulq_x_u16): Remove.
11766 (vmulq_x_u32): Remove.
11767 (vmulq_x_n_u8): Remove.
11768 (vmulq_x_n_u16): Remove.
11769 (vmulq_x_n_u32): Remove.
11770 (vmulq_x_f16): Remove.
11771 (vmulq_x_f32): Remove.
11772 (vmulq_x_n_f16): Remove.
11773 (vmulq_x_n_f32): Remove.
11774 (__arm_vmulq_u8): Remove.
11775 (__arm_vmulq_n_u8): Remove.
11776 (__arm_vmulq_s8): Remove.
11777 (__arm_vmulq_n_s8): Remove.
11778 (__arm_vmulq_u16): Remove.
11779 (__arm_vmulq_n_u16): Remove.
11780 (__arm_vmulq_s16): Remove.
11781 (__arm_vmulq_n_s16): Remove.
11782 (__arm_vmulq_u32): Remove.
11783 (__arm_vmulq_n_u32): Remove.
11784 (__arm_vmulq_s32): Remove.
11785 (__arm_vmulq_n_s32): Remove.
11786 (__arm_vmulq_m_n_s8): Remove.
11787 (__arm_vmulq_m_n_s32): Remove.
11788 (__arm_vmulq_m_n_s16): Remove.
11789 (__arm_vmulq_m_n_u8): Remove.
11790 (__arm_vmulq_m_n_u32): Remove.
11791 (__arm_vmulq_m_n_u16): Remove.
11792 (__arm_vmulq_m_s8): Remove.
11793 (__arm_vmulq_m_s32): Remove.
11794 (__arm_vmulq_m_s16): Remove.
11795 (__arm_vmulq_m_u8): Remove.
11796 (__arm_vmulq_m_u32): Remove.
11797 (__arm_vmulq_m_u16): Remove.
11798 (__arm_vmulq_x_s8): Remove.
11799 (__arm_vmulq_x_s16): Remove.
11800 (__arm_vmulq_x_s32): Remove.
11801 (__arm_vmulq_x_n_s8): Remove.
11802 (__arm_vmulq_x_n_s16): Remove.
11803 (__arm_vmulq_x_n_s32): Remove.
11804 (__arm_vmulq_x_u8): Remove.
11805 (__arm_vmulq_x_u16): Remove.
11806 (__arm_vmulq_x_u32): Remove.
11807 (__arm_vmulq_x_n_u8): Remove.
11808 (__arm_vmulq_x_n_u16): Remove.
11809 (__arm_vmulq_x_n_u32): Remove.
11810 (__arm_vmulq_n_f16): Remove.
11811 (__arm_vmulq_f16): Remove.
11812 (__arm_vmulq_n_f32): Remove.
11813 (__arm_vmulq_f32): Remove.
11814 (__arm_vmulq_m_f32): Remove.
11815 (__arm_vmulq_m_f16): Remove.
11816 (__arm_vmulq_m_n_f32): Remove.
11817 (__arm_vmulq_m_n_f16): Remove.
11818 (__arm_vmulq_x_f16): Remove.
11819 (__arm_vmulq_x_f32): Remove.
11820 (__arm_vmulq_x_n_f16): Remove.
11821 (__arm_vmulq_x_n_f32): Remove.
11822 (__arm_vmulq): Remove.
11823 (__arm_vmulq_m): Remove.
11824 (__arm_vmulq_x): Remove.
11828 (vsubq_n_f16): Remove.
11829 (vsubq_n_f32): Remove.
11830 (vsubq_u8): Remove.
11831 (vsubq_n_u8): Remove.
11832 (vsubq_s8): Remove.
11833 (vsubq_n_s8): Remove.
11834 (vsubq_u16): Remove.
11835 (vsubq_n_u16): Remove.
11836 (vsubq_s16): Remove.
11837 (vsubq_n_s16): Remove.
11838 (vsubq_u32): Remove.
11839 (vsubq_n_u32): Remove.
11840 (vsubq_s32): Remove.
11841 (vsubq_n_s32): Remove.
11842 (vsubq_f16): Remove.
11843 (vsubq_f32): Remove.
11844 (vsubq_m_s8): Remove.
11845 (vsubq_m_u8): Remove.
11846 (vsubq_m_s16): Remove.
11847 (vsubq_m_u16): Remove.
11848 (vsubq_m_s32): Remove.
11849 (vsubq_m_u32): Remove.
11850 (vsubq_m_n_s8): Remove.
11851 (vsubq_m_n_s32): Remove.
11852 (vsubq_m_n_s16): Remove.
11853 (vsubq_m_n_u8): Remove.
11854 (vsubq_m_n_u32): Remove.
11855 (vsubq_m_n_u16): Remove.
11856 (vsubq_m_f32): Remove.
11857 (vsubq_m_f16): Remove.
11858 (vsubq_m_n_f32): Remove.
11859 (vsubq_m_n_f16): Remove.
11860 (vsubq_x_s8): Remove.
11861 (vsubq_x_s16): Remove.
11862 (vsubq_x_s32): Remove.
11863 (vsubq_x_n_s8): Remove.
11864 (vsubq_x_n_s16): Remove.
11865 (vsubq_x_n_s32): Remove.
11866 (vsubq_x_u8): Remove.
11867 (vsubq_x_u16): Remove.
11868 (vsubq_x_u32): Remove.
11869 (vsubq_x_n_u8): Remove.
11870 (vsubq_x_n_u16): Remove.
11871 (vsubq_x_n_u32): Remove.
11872 (vsubq_x_f16): Remove.
11873 (vsubq_x_f32): Remove.
11874 (vsubq_x_n_f16): Remove.
11875 (vsubq_x_n_f32): Remove.
11876 (__arm_vsubq_u8): Remove.
11877 (__arm_vsubq_n_u8): Remove.
11878 (__arm_vsubq_s8): Remove.
11879 (__arm_vsubq_n_s8): Remove.
11880 (__arm_vsubq_u16): Remove.
11881 (__arm_vsubq_n_u16): Remove.
11882 (__arm_vsubq_s16): Remove.
11883 (__arm_vsubq_n_s16): Remove.
11884 (__arm_vsubq_u32): Remove.
11885 (__arm_vsubq_n_u32): Remove.
11886 (__arm_vsubq_s32): Remove.
11887 (__arm_vsubq_n_s32): Remove.
11888 (__arm_vsubq_m_s8): Remove.
11889 (__arm_vsubq_m_u8): Remove.
11890 (__arm_vsubq_m_s16): Remove.
11891 (__arm_vsubq_m_u16): Remove.
11892 (__arm_vsubq_m_s32): Remove.
11893 (__arm_vsubq_m_u32): Remove.
11894 (__arm_vsubq_m_n_s8): Remove.
11895 (__arm_vsubq_m_n_s32): Remove.
11896 (__arm_vsubq_m_n_s16): Remove.
11897 (__arm_vsubq_m_n_u8): Remove.
11898 (__arm_vsubq_m_n_u32): Remove.
11899 (__arm_vsubq_m_n_u16): Remove.
11900 (__arm_vsubq_x_s8): Remove.
11901 (__arm_vsubq_x_s16): Remove.
11902 (__arm_vsubq_x_s32): Remove.
11903 (__arm_vsubq_x_n_s8): Remove.
11904 (__arm_vsubq_x_n_s16): Remove.
11905 (__arm_vsubq_x_n_s32): Remove.
11906 (__arm_vsubq_x_u8): Remove.
11907 (__arm_vsubq_x_u16): Remove.
11908 (__arm_vsubq_x_u32): Remove.
11909 (__arm_vsubq_x_n_u8): Remove.
11910 (__arm_vsubq_x_n_u16): Remove.
11911 (__arm_vsubq_x_n_u32): Remove.
11912 (__arm_vsubq_n_f16): Remove.
11913 (__arm_vsubq_n_f32): Remove.
11914 (__arm_vsubq_f16): Remove.
11915 (__arm_vsubq_f32): Remove.
11916 (__arm_vsubq_m_f32): Remove.
11917 (__arm_vsubq_m_f16): Remove.
11918 (__arm_vsubq_m_n_f32): Remove.
11919 (__arm_vsubq_m_n_f16): Remove.
11920 (__arm_vsubq_x_f16): Remove.
11921 (__arm_vsubq_x_f32): Remove.
11922 (__arm_vsubq_x_n_f16): Remove.
11923 (__arm_vsubq_x_n_f32): Remove.
11924 (__arm_vsubq): Remove.
11925 (__arm_vsubq_m): Remove.
11926 (__arm_vsubq_x): Remove.
11927 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
11929 (vmulq_u, vmulq_s, vmulq_f): Remove.
11930 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
11931 (mve_vmulq_<supf><mode>): Remove.
11933 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11935 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
11936 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
11937 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
11939 * config/arm/mve.md
11940 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
11942 (@mve_<mve_insn>q_n_f<mode>): ... this.
11943 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
11944 (mve_vsubq_n_<supf><mode>): Factorize into ...
11945 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11946 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
11948 (mve_<mve_addsubmul>q<mode>): ... this.
11949 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
11951 (mve_<mve_addsubmul>q_f<mode>): ... this.
11952 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
11953 (mve_vsubq_m_<supf><mode>): Factorize into ...
11954 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
11955 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
11956 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
11957 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11958 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
11960 (@mve_<mve_insn>q_m_f<mode>): ... this.
11961 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
11962 (mve_vsubq_m_n_f<mode>): Factorize into ...
11963 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
11965 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11967 * config/arm/arm-mve-builtins-functions.h (class
11968 unspec_based_mve_function_base): New.
11969 (class unspec_based_mve_function_exact_insn): New.
11971 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11973 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
11974 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
11976 2023-05-03 Murray Steele <murray.steele@arm.com>
11977 Christophe Lyon <christophe.lyon@arm.com>
11979 * config/arm/arm-mve-builtins-base.cc (class
11980 vuninitializedq_impl): New.
11981 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
11982 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
11984 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
11985 * config/arm/arm-mve-builtins-shapes.h (inherent): New
11987 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
11988 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
11989 (__arm_vuninitializedq_u8): Remove.
11990 (__arm_vuninitializedq_u16): Remove.
11991 (__arm_vuninitializedq_u32): Remove.
11992 (__arm_vuninitializedq_u64): Remove.
11993 (__arm_vuninitializedq_s8): Remove.
11994 (__arm_vuninitializedq_s16): Remove.
11995 (__arm_vuninitializedq_s32): Remove.
11996 (__arm_vuninitializedq_s64): Remove.
11997 (__arm_vuninitializedq_f16): Remove.
11998 (__arm_vuninitializedq_f32): Remove.
12000 2023-05-03 Murray Steele <murray.steele@arm.com>
12001 Christophe Lyon <christophe.lyon@arm.com>
12003 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
12004 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
12005 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
12006 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
12007 (parse_type): Likewise.
12008 (parse_signature): Likewise.
12009 (build_one): Likewise.
12010 (build_all): Likewise.
12011 (overloaded_base): New struct.
12012 (unary_convert_def): Likewise.
12013 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
12014 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
12016 (TYPES_reinterpret_unsigned1): Likewise.
12017 (TYPES_reinterpret_integer): Likewise.
12018 (TYPES_reinterpret_integer1): Likewise.
12019 (TYPES_reinterpret_float1): Likewise.
12020 (TYPES_reinterpret_float): Likewise.
12021 (reinterpret_integer): New.
12022 (reinterpret_float): New.
12023 (handle_arm_mve_h): Register builtins.
12024 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
12025 (vreinterpretq_s32): Likewise.
12026 (vreinterpretq_s64): Likewise.
12027 (vreinterpretq_s8): Likewise.
12028 (vreinterpretq_u16): Likewise.
12029 (vreinterpretq_u32): Likewise.
12030 (vreinterpretq_u64): Likewise.
12031 (vreinterpretq_u8): Likewise.
12032 (vreinterpretq_f16): Likewise.
12033 (vreinterpretq_f32): Likewise.
12034 (vreinterpretq_s16_s32): Likewise.
12035 (vreinterpretq_s16_s64): Likewise.
12036 (vreinterpretq_s16_s8): Likewise.
12037 (vreinterpretq_s16_u16): Likewise.
12038 (vreinterpretq_s16_u32): Likewise.
12039 (vreinterpretq_s16_u64): Likewise.
12040 (vreinterpretq_s16_u8): Likewise.
12041 (vreinterpretq_s32_s16): Likewise.
12042 (vreinterpretq_s32_s64): Likewise.
12043 (vreinterpretq_s32_s8): Likewise.
12044 (vreinterpretq_s32_u16): Likewise.
12045 (vreinterpretq_s32_u32): Likewise.
12046 (vreinterpretq_s32_u64): Likewise.
12047 (vreinterpretq_s32_u8): Likewise.
12048 (vreinterpretq_s64_s16): Likewise.
12049 (vreinterpretq_s64_s32): Likewise.
12050 (vreinterpretq_s64_s8): Likewise.
12051 (vreinterpretq_s64_u16): Likewise.
12052 (vreinterpretq_s64_u32): Likewise.
12053 (vreinterpretq_s64_u64): Likewise.
12054 (vreinterpretq_s64_u8): Likewise.
12055 (vreinterpretq_s8_s16): Likewise.
12056 (vreinterpretq_s8_s32): Likewise.
12057 (vreinterpretq_s8_s64): Likewise.
12058 (vreinterpretq_s8_u16): Likewise.
12059 (vreinterpretq_s8_u32): Likewise.
12060 (vreinterpretq_s8_u64): Likewise.
12061 (vreinterpretq_s8_u8): Likewise.
12062 (vreinterpretq_u16_s16): Likewise.
12063 (vreinterpretq_u16_s32): Likewise.
12064 (vreinterpretq_u16_s64): Likewise.
12065 (vreinterpretq_u16_s8): Likewise.
12066 (vreinterpretq_u16_u32): Likewise.
12067 (vreinterpretq_u16_u64): Likewise.
12068 (vreinterpretq_u16_u8): Likewise.
12069 (vreinterpretq_u32_s16): Likewise.
12070 (vreinterpretq_u32_s32): Likewise.
12071 (vreinterpretq_u32_s64): Likewise.
12072 (vreinterpretq_u32_s8): Likewise.
12073 (vreinterpretq_u32_u16): Likewise.
12074 (vreinterpretq_u32_u64): Likewise.
12075 (vreinterpretq_u32_u8): Likewise.
12076 (vreinterpretq_u64_s16): Likewise.
12077 (vreinterpretq_u64_s32): Likewise.
12078 (vreinterpretq_u64_s64): Likewise.
12079 (vreinterpretq_u64_s8): Likewise.
12080 (vreinterpretq_u64_u16): Likewise.
12081 (vreinterpretq_u64_u32): Likewise.
12082 (vreinterpretq_u64_u8): Likewise.
12083 (vreinterpretq_u8_s16): Likewise.
12084 (vreinterpretq_u8_s32): Likewise.
12085 (vreinterpretq_u8_s64): Likewise.
12086 (vreinterpretq_u8_s8): Likewise.
12087 (vreinterpretq_u8_u16): Likewise.
12088 (vreinterpretq_u8_u32): Likewise.
12089 (vreinterpretq_u8_u64): Likewise.
12090 (vreinterpretq_s32_f16): Likewise.
12091 (vreinterpretq_s32_f32): Likewise.
12092 (vreinterpretq_u16_f16): Likewise.
12093 (vreinterpretq_u16_f32): Likewise.
12094 (vreinterpretq_u32_f16): Likewise.
12095 (vreinterpretq_u32_f32): Likewise.
12096 (vreinterpretq_u64_f16): Likewise.
12097 (vreinterpretq_u64_f32): Likewise.
12098 (vreinterpretq_u8_f16): Likewise.
12099 (vreinterpretq_u8_f32): Likewise.
12100 (vreinterpretq_f16_f32): Likewise.
12101 (vreinterpretq_f16_s16): Likewise.
12102 (vreinterpretq_f16_s32): Likewise.
12103 (vreinterpretq_f16_s64): Likewise.
12104 (vreinterpretq_f16_s8): Likewise.
12105 (vreinterpretq_f16_u16): Likewise.
12106 (vreinterpretq_f16_u32): Likewise.
12107 (vreinterpretq_f16_u64): Likewise.
12108 (vreinterpretq_f16_u8): Likewise.
12109 (vreinterpretq_f32_f16): Likewise.
12110 (vreinterpretq_f32_s16): Likewise.
12111 (vreinterpretq_f32_s32): Likewise.
12112 (vreinterpretq_f32_s64): Likewise.
12113 (vreinterpretq_f32_s8): Likewise.
12114 (vreinterpretq_f32_u16): Likewise.
12115 (vreinterpretq_f32_u32): Likewise.
12116 (vreinterpretq_f32_u64): Likewise.
12117 (vreinterpretq_f32_u8): Likewise.
12118 (vreinterpretq_s16_f16): Likewise.
12119 (vreinterpretq_s16_f32): Likewise.
12120 (vreinterpretq_s64_f16): Likewise.
12121 (vreinterpretq_s64_f32): Likewise.
12122 (vreinterpretq_s8_f16): Likewise.
12123 (vreinterpretq_s8_f32): Likewise.
12124 (__arm_vreinterpretq_f16): Likewise.
12125 (__arm_vreinterpretq_f32): Likewise.
12126 (__arm_vreinterpretq_s16): Likewise.
12127 (__arm_vreinterpretq_s32): Likewise.
12128 (__arm_vreinterpretq_s64): Likewise.
12129 (__arm_vreinterpretq_s8): Likewise.
12130 (__arm_vreinterpretq_u16): Likewise.
12131 (__arm_vreinterpretq_u32): Likewise.
12132 (__arm_vreinterpretq_u64): Likewise.
12133 (__arm_vreinterpretq_u8): Likewise.
12134 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
12135 (__arm_vreinterpretq_s16_s64): Likewise.
12136 (__arm_vreinterpretq_s16_s8): Likewise.
12137 (__arm_vreinterpretq_s16_u16): Likewise.
12138 (__arm_vreinterpretq_s16_u32): Likewise.
12139 (__arm_vreinterpretq_s16_u64): Likewise.
12140 (__arm_vreinterpretq_s16_u8): Likewise.
12141 (__arm_vreinterpretq_s32_s16): Likewise.
12142 (__arm_vreinterpretq_s32_s64): Likewise.
12143 (__arm_vreinterpretq_s32_s8): Likewise.
12144 (__arm_vreinterpretq_s32_u16): Likewise.
12145 (__arm_vreinterpretq_s32_u32): Likewise.
12146 (__arm_vreinterpretq_s32_u64): Likewise.
12147 (__arm_vreinterpretq_s32_u8): Likewise.
12148 (__arm_vreinterpretq_s64_s16): Likewise.
12149 (__arm_vreinterpretq_s64_s32): Likewise.
12150 (__arm_vreinterpretq_s64_s8): Likewise.
12151 (__arm_vreinterpretq_s64_u16): Likewise.
12152 (__arm_vreinterpretq_s64_u32): Likewise.
12153 (__arm_vreinterpretq_s64_u64): Likewise.
12154 (__arm_vreinterpretq_s64_u8): Likewise.
12155 (__arm_vreinterpretq_s8_s16): Likewise.
12156 (__arm_vreinterpretq_s8_s32): Likewise.
12157 (__arm_vreinterpretq_s8_s64): Likewise.
12158 (__arm_vreinterpretq_s8_u16): Likewise.
12159 (__arm_vreinterpretq_s8_u32): Likewise.
12160 (__arm_vreinterpretq_s8_u64): Likewise.
12161 (__arm_vreinterpretq_s8_u8): Likewise.
12162 (__arm_vreinterpretq_u16_s16): Likewise.
12163 (__arm_vreinterpretq_u16_s32): Likewise.
12164 (__arm_vreinterpretq_u16_s64): Likewise.
12165 (__arm_vreinterpretq_u16_s8): Likewise.
12166 (__arm_vreinterpretq_u16_u32): Likewise.
12167 (__arm_vreinterpretq_u16_u64): Likewise.
12168 (__arm_vreinterpretq_u16_u8): Likewise.
12169 (__arm_vreinterpretq_u32_s16): Likewise.
12170 (__arm_vreinterpretq_u32_s32): Likewise.
12171 (__arm_vreinterpretq_u32_s64): Likewise.
12172 (__arm_vreinterpretq_u32_s8): Likewise.
12173 (__arm_vreinterpretq_u32_u16): Likewise.
12174 (__arm_vreinterpretq_u32_u64): Likewise.
12175 (__arm_vreinterpretq_u32_u8): Likewise.
12176 (__arm_vreinterpretq_u64_s16): Likewise.
12177 (__arm_vreinterpretq_u64_s32): Likewise.
12178 (__arm_vreinterpretq_u64_s64): Likewise.
12179 (__arm_vreinterpretq_u64_s8): Likewise.
12180 (__arm_vreinterpretq_u64_u16): Likewise.
12181 (__arm_vreinterpretq_u64_u32): Likewise.
12182 (__arm_vreinterpretq_u64_u8): Likewise.
12183 (__arm_vreinterpretq_u8_s16): Likewise.
12184 (__arm_vreinterpretq_u8_s32): Likewise.
12185 (__arm_vreinterpretq_u8_s64): Likewise.
12186 (__arm_vreinterpretq_u8_s8): Likewise.
12187 (__arm_vreinterpretq_u8_u16): Likewise.
12188 (__arm_vreinterpretq_u8_u32): Likewise.
12189 (__arm_vreinterpretq_u8_u64): Likewise.
12190 (__arm_vreinterpretq_s32_f16): Likewise.
12191 (__arm_vreinterpretq_s32_f32): Likewise.
12192 (__arm_vreinterpretq_s16_f16): Likewise.
12193 (__arm_vreinterpretq_s16_f32): Likewise.
12194 (__arm_vreinterpretq_s64_f16): Likewise.
12195 (__arm_vreinterpretq_s64_f32): Likewise.
12196 (__arm_vreinterpretq_s8_f16): Likewise.
12197 (__arm_vreinterpretq_s8_f32): Likewise.
12198 (__arm_vreinterpretq_u16_f16): Likewise.
12199 (__arm_vreinterpretq_u16_f32): Likewise.
12200 (__arm_vreinterpretq_u32_f16): Likewise.
12201 (__arm_vreinterpretq_u32_f32): Likewise.
12202 (__arm_vreinterpretq_u64_f16): Likewise.
12203 (__arm_vreinterpretq_u64_f32): Likewise.
12204 (__arm_vreinterpretq_u8_f16): Likewise.
12205 (__arm_vreinterpretq_u8_f32): Likewise.
12206 (__arm_vreinterpretq_f16_f32): Likewise.
12207 (__arm_vreinterpretq_f16_s16): Likewise.
12208 (__arm_vreinterpretq_f16_s32): Likewise.
12209 (__arm_vreinterpretq_f16_s64): Likewise.
12210 (__arm_vreinterpretq_f16_s8): Likewise.
12211 (__arm_vreinterpretq_f16_u16): Likewise.
12212 (__arm_vreinterpretq_f16_u32): Likewise.
12213 (__arm_vreinterpretq_f16_u64): Likewise.
12214 (__arm_vreinterpretq_f16_u8): Likewise.
12215 (__arm_vreinterpretq_f32_f16): Likewise.
12216 (__arm_vreinterpretq_f32_s16): Likewise.
12217 (__arm_vreinterpretq_f32_s32): Likewise.
12218 (__arm_vreinterpretq_f32_s64): Likewise.
12219 (__arm_vreinterpretq_f32_s8): Likewise.
12220 (__arm_vreinterpretq_f32_u16): Likewise.
12221 (__arm_vreinterpretq_f32_u32): Likewise.
12222 (__arm_vreinterpretq_f32_u64): Likewise.
12223 (__arm_vreinterpretq_f32_u8): Likewise.
12224 (__arm_vreinterpretq_s16): Likewise.
12225 (__arm_vreinterpretq_s32): Likewise.
12226 (__arm_vreinterpretq_s64): Likewise.
12227 (__arm_vreinterpretq_s8): Likewise.
12228 (__arm_vreinterpretq_u16): Likewise.
12229 (__arm_vreinterpretq_u32): Likewise.
12230 (__arm_vreinterpretq_u64): Likewise.
12231 (__arm_vreinterpretq_u8): Likewise.
12232 (__arm_vreinterpretq_f16): Likewise.
12233 (__arm_vreinterpretq_f32): Likewise.
12234 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
12235 * config/arm/unspecs.md: (REINTERPRET): New unspec.
12237 2023-05-03 Murray Steele <murray.steele@arm.com>
12238 Christophe Lyon <christophe.lyon@arm.com>
12239 Christophe Lyon <christophe.lyon@arm.com
12241 * config.gcc: Add arm-mve-builtins-base.o and
12242 arm-mve-builtins-shapes.o to extra_objs.
12243 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
12245 (arm_expand_builtin): Likewise
12246 (arm_check_builtin_call): Likewise
12247 (arm_describe_resolver): Likewise.
12248 * config/arm/arm-builtins.h (enum resolver_ident): Add
12250 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
12251 (arm_resolve_overloaded_builtin): Handle MVE builtins.
12252 (arm_register_target_pragmas): Register arm_check_builtin_call.
12253 * config/arm/arm-mve-builtins.cc (class registered_function): New
12255 (struct registered_function_hasher): New struct.
12256 (pred_suffixes): New table.
12257 (mode_suffixes): New table.
12258 (type_suffix_info): New table.
12259 (TYPES_float16): New.
12260 (TYPES_all_float): New.
12261 (TYPES_integer_8): New.
12262 (TYPES_integer_8_16): New.
12263 (TYPES_integer_16_32): New.
12264 (TYPES_integer_32): New.
12265 (TYPES_signed_16_32): New.
12266 (TYPES_signed_32): New.
12267 (TYPES_all_signed): New.
12268 (TYPES_all_unsigned): New.
12269 (TYPES_all_integer): New.
12270 (TYPES_all_integer_with_64): New.
12271 (DEF_VECTOR_TYPE): New.
12272 (DEF_DOUBLE_TYPE): New.
12273 (DEF_MVE_TYPES_ARRAY): New.
12274 (all_integer): New.
12275 (all_integer_with_64): New.
12279 (all_unsigned): New.
12281 (integer_8_16): New.
12282 (integer_16_32): New.
12284 (signed_16_32): New.
12286 (register_vector_type): Use void_type_node for mve.fp-only types when
12287 mve.fp is not enabled.
12288 (register_builtin_tuple_types): Likewise.
12289 (handle_arm_mve_h): New function..
12290 (matches_type_p): Likewise..
12291 (report_out_of_range): Likewise.
12292 (report_not_enum): Likewise.
12293 (report_missing_float): Likewise.
12294 (report_non_ice): Likewise.
12295 (check_requires_float): Likewise.
12296 (function_instance::hash): Likewise
12297 (function_instance::call_properties): Likewise.
12298 (function_instance::reads_global_state_p): Likewise.
12299 (function_instance::modifies_global_state_p): Likewise.
12300 (function_instance::could_trap_p): Likewise.
12301 (function_instance::has_inactive_argument): Likewise.
12302 (registered_function_hasher::hash): Likewise.
12303 (registered_function_hasher::equal): Likewise.
12304 (function_builder::function_builder): Likewise.
12305 (function_builder::~function_builder): Likewise.
12306 (function_builder::append_name): Likewise.
12307 (function_builder::finish_name): Likewise.
12308 (function_builder::get_name): Likewise.
12309 (add_attribute): Likewise.
12310 (function_builder::get_attributes): Likewise.
12311 (function_builder::add_function): Likewise.
12312 (function_builder::add_unique_function): Likewise.
12313 (function_builder::add_overloaded_function): Likewise.
12314 (function_builder::add_overloaded_functions): Likewise.
12315 (function_builder::register_function_group): Likewise.
12316 (function_call_info::function_call_info): Likewise.
12317 (function_resolver::function_resolver): Likewise.
12318 (function_resolver::get_vector_type): Likewise.
12319 (function_resolver::get_scalar_type_name): Likewise.
12320 (function_resolver::get_argument_type): Likewise.
12321 (function_resolver::scalar_argument_p): Likewise.
12322 (function_resolver::report_no_such_form): Likewise.
12323 (function_resolver::lookup_form): Likewise.
12324 (function_resolver::resolve_to): Likewise.
12325 (function_resolver::infer_vector_or_tuple_type): Likewise.
12326 (function_resolver::infer_vector_type): Likewise.
12327 (function_resolver::require_vector_or_scalar_type): Likewise.
12328 (function_resolver::require_vector_type): Likewise.
12329 (function_resolver::require_matching_vector_type): Likewise.
12330 (function_resolver::require_derived_vector_type): Likewise.
12331 (function_resolver::require_derived_scalar_type): Likewise.
12332 (function_resolver::require_integer_immediate): Likewise.
12333 (function_resolver::require_scalar_type): Likewise.
12334 (function_resolver::check_num_arguments): Likewise.
12335 (function_resolver::check_gp_argument): Likewise.
12336 (function_resolver::finish_opt_n_resolution): Likewise.
12337 (function_resolver::resolve_unary): Likewise.
12338 (function_resolver::resolve_unary_n): Likewise.
12339 (function_resolver::resolve_uniform): Likewise.
12340 (function_resolver::resolve_uniform_opt_n): Likewise.
12341 (function_resolver::resolve): Likewise.
12342 (function_checker::function_checker): Likewise.
12343 (function_checker::argument_exists_p): Likewise.
12344 (function_checker::require_immediate): Likewise.
12345 (function_checker::require_immediate_enum): Likewise.
12346 (function_checker::require_immediate_range): Likewise.
12347 (function_checker::check): Likewise.
12348 (gimple_folder::gimple_folder): Likewise.
12349 (gimple_folder::fold): Likewise.
12350 (function_expander::function_expander): Likewise.
12351 (function_expander::direct_optab_handler): Likewise.
12352 (function_expander::get_fallback_value): Likewise.
12353 (function_expander::get_reg_target): Likewise.
12354 (function_expander::add_output_operand): Likewise.
12355 (function_expander::add_input_operand): Likewise.
12356 (function_expander::add_integer_operand): Likewise.
12357 (function_expander::generate_insn): Likewise.
12358 (function_expander::use_exact_insn): Likewise.
12359 (function_expander::use_unpred_insn): Likewise.
12360 (function_expander::use_pred_x_insn): Likewise.
12361 (function_expander::use_cond_insn): Likewise.
12362 (function_expander::map_to_rtx_codes): Likewise.
12363 (function_expander::expand): Likewise.
12364 (resolve_overloaded_builtin): Likewise.
12365 (check_builtin_call): Likewise.
12366 (gimple_fold_builtin): Likewise.
12367 (expand_builtin): Likewise.
12368 (gt_ggc_mx): Likewise.
12369 (gt_pch_nx): Likewise.
12370 (gt_pch_nx): Likewise.
12371 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
12382 (offset): New mode.
12383 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
12384 (CP_READ_FPCR): Likewise.
12385 (CP_RAISE_FP_EXCEPTIONS): Likewise.
12386 (CP_READ_MEMORY): Likewise.
12387 (CP_WRITE_MEMORY): Likewise.
12388 (enum units_index): New enum.
12389 (enum predication_index): New.
12390 (enum type_class_index): New.
12391 (enum mode_suffix_index): New enum.
12392 (enum type_suffix_index): New.
12393 (struct mode_suffix_info): New struct.
12394 (struct type_suffix_info): New.
12395 (struct function_group_info): Likewise.
12396 (class function_instance): Likewise.
12397 (class registered_function): Likewise.
12398 (class function_builder): Likewise.
12399 (class function_call_info): Likewise.
12400 (class function_resolver): Likewise.
12401 (class function_checker): Likewise.
12402 (class gimple_folder): Likewise.
12403 (class function_expander): Likewise.
12404 (get_mve_pred16_t): Likewise.
12405 (find_mode_suffix): New function.
12406 (class function_base): Likewise.
12407 (class function_shape): Likewise.
12408 (function_instance::operator==): New function.
12409 (function_instance::operator!=): Likewise.
12410 (function_instance::vectors_per_tuple): Likewise.
12411 (function_instance::mode_suffix): Likewise.
12412 (function_instance::type_suffix): Likewise.
12413 (function_instance::scalar_type): Likewise.
12414 (function_instance::vector_type): Likewise.
12415 (function_instance::tuple_type): Likewise.
12416 (function_instance::vector_mode): Likewise.
12417 (function_call_info::function_returns_void_p): Likewise.
12418 (function_base::call_properties): Likewise.
12419 * config/arm/arm-protos.h (enum arm_builtin_class): Add
12421 (handle_arm_mve_h): New.
12422 (resolve_overloaded_builtin): New.
12423 (check_builtin_call): New.
12424 (gimple_fold_builtin): New.
12425 (expand_builtin): New.
12426 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
12427 arm_gimple_fold_builtin.
12428 (arm_gimple_fold_builtin): New function.
12429 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
12430 * config/arm/predicates.md (arm_any_register_operand): New predicate.
12431 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
12432 (arm-mve-builtins-shapes.o): New target.
12433 (arm-mve-builtins-base.o): New target.
12434 * config/arm/arm-mve-builtins-base.cc: New file.
12435 * config/arm/arm-mve-builtins-base.def: New file.
12436 * config/arm/arm-mve-builtins-base.h: New file.
12437 * config/arm/arm-mve-builtins-functions.h: New file.
12438 * config/arm/arm-mve-builtins-shapes.cc: New file.
12439 * config/arm/arm-mve-builtins-shapes.h: New file.
12441 2023-05-03 Murray Steele <murray.steele@arm.com>
12442 Christophe Lyon <christophe.lyon@arm.com>
12443 Christophe Lyon <christophe.lyon@arm.com>
12445 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
12447 (arm_init_builtin): Use arm_general_add_builtin_function instead
12448 of arm_add_builtin_function.
12449 (arm_init_acle_builtins): Likewise.
12450 (arm_init_mve_builtins): Likewise.
12451 (arm_init_crypto_builtins): Likewise.
12452 (arm_init_builtins): Likewise.
12453 (arm_general_builtin_decl): New function.
12454 (arm_builtin_decl): Defer to numberspace-specialized functions.
12455 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
12456 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
12457 (arm_general_expand_builtin_1): ... specialize for general builtins.
12458 (arm_expand_acle_builtin): Use arm_general_expand_builtin
12459 instead of arm_expand_builtin.
12460 (arm_expand_mve_builtin): Likewise.
12461 (arm_expand_neon_builtin): Likewise.
12462 (arm_expand_vfp_builtin): Likewise.
12463 (arm_general_expand_builtin): New function.
12464 (arm_expand_builtin): Specialize for general builtins.
12465 (arm_general_check_builtin_call): New function.
12466 (arm_check_builtin_call): Specialize for general builtins.
12467 (arm_describe_resolver): Validate numberspace.
12468 (arm_cde_end_args): Likewise.
12469 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
12470 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
12472 2023-05-03 Martin Liska <mliska@suse.cz>
12475 * config/riscv/sync.md: Add gcc_unreachable to a switch.
12477 2023-05-03 Richard Biener <rguenther@suse.de>
12479 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
12480 (patch_loop_exit): Likewise.
12481 (connect_loops): Likewise.
12482 (split_loop): Likewise.
12483 (control_dep_semi_invariant_p): Likewise.
12484 (do_split_loop_on_cond): Likewise.
12485 (split_loop_on_cond): Likewise.
12486 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
12488 (simplify_loop_version): Likewise.
12489 (evaluate_bbs): Likewise.
12490 (find_loop_guard): Likewise.
12491 (clean_up_after_unswitching): Likewise.
12492 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
12494 (optimize_spaceship): Take a gcond * argument, avoid
12496 (math_opts_dom_walker::after_dom_children): Adjust call to
12497 optimize_spaceship.
12498 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
12499 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
12502 2023-05-03 Andreas Schwab <schwab@suse.de>
12504 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
12506 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12508 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
12510 (class vlseg): New class.
12511 (class vsseg): Ditto.
12512 (class vlsseg): Ditto.
12513 (class vssseg): Ditto.
12514 (class seg_indexed_load): Ditto.
12515 (class seg_indexed_store): Ditto.
12516 (class vlsegff): Ditto.
12518 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12519 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
12529 * config/riscv/riscv-vector-builtins-shapes.cc (struct
12530 seg_loadstore_def): Ditto.
12531 (struct seg_indexed_loadstore_def): Ditto.
12532 (struct seg_fault_load_def): Ditto.
12534 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
12535 * config/riscv/riscv-vector-builtins.cc
12536 (function_builder::append_nf): New function.
12537 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
12538 Change ptr from double into float.
12539 (vfloat32m1x3_t): Ditto.
12540 (vfloat32m1x4_t): Ditto.
12541 (vfloat32m1x5_t): Ditto.
12542 (vfloat32m1x6_t): Ditto.
12543 (vfloat32m1x7_t): Ditto.
12544 (vfloat32m1x8_t): Ditto.
12545 (vfloat32m2x2_t): Ditto.
12546 (vfloat32m2x3_t): Ditto.
12547 (vfloat32m2x4_t): Ditto.
12548 (vfloat32m4x2_t): Ditto.
12549 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
12550 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
12552 * config/riscv/riscv.md: Add segment instructions.
12553 * config/riscv/vector-iterators.md: Support segment intrinsics.
12554 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
12556 (@pred_unit_strided_store<mode>): Ditto.
12557 (@pred_strided_load<mode>): Ditto.
12558 (@pred_strided_store<mode>): Ditto.
12559 (@pred_fault_load<mode>): Ditto.
12560 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
12561 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
12562 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
12563 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
12564 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
12565 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
12566 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
12567 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
12568 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
12569 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
12570 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
12571 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
12572 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
12573 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
12575 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12577 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
12578 tuple type support.
12580 (floattype): Ditto.
12582 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
12583 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
12585 (vget): Add tuple type vget.
12586 * config/riscv/riscv-vector-builtins-types.def
12587 (DEF_RVV_TUPLE_OPS): New macro.
12588 (vint8mf8x2_t): Ditto.
12589 (vuint8mf8x2_t): Ditto.
12590 (vint8mf8x3_t): Ditto.
12591 (vuint8mf8x3_t): Ditto.
12592 (vint8mf8x4_t): Ditto.
12593 (vuint8mf8x4_t): Ditto.
12594 (vint8mf8x5_t): Ditto.
12595 (vuint8mf8x5_t): Ditto.
12596 (vint8mf8x6_t): Ditto.
12597 (vuint8mf8x6_t): Ditto.
12598 (vint8mf8x7_t): Ditto.
12599 (vuint8mf8x7_t): Ditto.
12600 (vint8mf8x8_t): Ditto.
12601 (vuint8mf8x8_t): Ditto.
12602 (vint8mf4x2_t): Ditto.
12603 (vuint8mf4x2_t): Ditto.
12604 (vint8mf4x3_t): Ditto.
12605 (vuint8mf4x3_t): Ditto.
12606 (vint8mf4x4_t): Ditto.
12607 (vuint8mf4x4_t): Ditto.
12608 (vint8mf4x5_t): Ditto.
12609 (vuint8mf4x5_t): Ditto.
12610 (vint8mf4x6_t): Ditto.
12611 (vuint8mf4x6_t): Ditto.
12612 (vint8mf4x7_t): Ditto.
12613 (vuint8mf4x7_t): Ditto.
12614 (vint8mf4x8_t): Ditto.
12615 (vuint8mf4x8_t): Ditto.
12616 (vint8mf2x2_t): Ditto.
12617 (vuint8mf2x2_t): Ditto.
12618 (vint8mf2x3_t): Ditto.
12619 (vuint8mf2x3_t): Ditto.
12620 (vint8mf2x4_t): Ditto.
12621 (vuint8mf2x4_t): Ditto.
12622 (vint8mf2x5_t): Ditto.
12623 (vuint8mf2x5_t): Ditto.
12624 (vint8mf2x6_t): Ditto.
12625 (vuint8mf2x6_t): Ditto.
12626 (vint8mf2x7_t): Ditto.
12627 (vuint8mf2x7_t): Ditto.
12628 (vint8mf2x8_t): Ditto.
12629 (vuint8mf2x8_t): Ditto.
12630 (vint8m1x2_t): Ditto.
12631 (vuint8m1x2_t): Ditto.
12632 (vint8m1x3_t): Ditto.
12633 (vuint8m1x3_t): Ditto.
12634 (vint8m1x4_t): Ditto.
12635 (vuint8m1x4_t): Ditto.
12636 (vint8m1x5_t): Ditto.
12637 (vuint8m1x5_t): Ditto.
12638 (vint8m1x6_t): Ditto.
12639 (vuint8m1x6_t): Ditto.
12640 (vint8m1x7_t): Ditto.
12641 (vuint8m1x7_t): Ditto.
12642 (vint8m1x8_t): Ditto.
12643 (vuint8m1x8_t): Ditto.
12644 (vint8m2x2_t): Ditto.
12645 (vuint8m2x2_t): Ditto.
12646 (vint8m2x3_t): Ditto.
12647 (vuint8m2x3_t): Ditto.
12648 (vint8m2x4_t): Ditto.
12649 (vuint8m2x4_t): Ditto.
12650 (vint8m4x2_t): Ditto.
12651 (vuint8m4x2_t): Ditto.
12652 (vint16mf4x2_t): Ditto.
12653 (vuint16mf4x2_t): Ditto.
12654 (vint16mf4x3_t): Ditto.
12655 (vuint16mf4x3_t): Ditto.
12656 (vint16mf4x4_t): Ditto.
12657 (vuint16mf4x4_t): Ditto.
12658 (vint16mf4x5_t): Ditto.
12659 (vuint16mf4x5_t): Ditto.
12660 (vint16mf4x6_t): Ditto.
12661 (vuint16mf4x6_t): Ditto.
12662 (vint16mf4x7_t): Ditto.
12663 (vuint16mf4x7_t): Ditto.
12664 (vint16mf4x8_t): Ditto.
12665 (vuint16mf4x8_t): Ditto.
12666 (vint16mf2x2_t): Ditto.
12667 (vuint16mf2x2_t): Ditto.
12668 (vint16mf2x3_t): Ditto.
12669 (vuint16mf2x3_t): Ditto.
12670 (vint16mf2x4_t): Ditto.
12671 (vuint16mf2x4_t): Ditto.
12672 (vint16mf2x5_t): Ditto.
12673 (vuint16mf2x5_t): Ditto.
12674 (vint16mf2x6_t): Ditto.
12675 (vuint16mf2x6_t): Ditto.
12676 (vint16mf2x7_t): Ditto.
12677 (vuint16mf2x7_t): Ditto.
12678 (vint16mf2x8_t): Ditto.
12679 (vuint16mf2x8_t): Ditto.
12680 (vint16m1x2_t): Ditto.
12681 (vuint16m1x2_t): Ditto.
12682 (vint16m1x3_t): Ditto.
12683 (vuint16m1x3_t): Ditto.
12684 (vint16m1x4_t): Ditto.
12685 (vuint16m1x4_t): Ditto.
12686 (vint16m1x5_t): Ditto.
12687 (vuint16m1x5_t): Ditto.
12688 (vint16m1x6_t): Ditto.
12689 (vuint16m1x6_t): Ditto.
12690 (vint16m1x7_t): Ditto.
12691 (vuint16m1x7_t): Ditto.
12692 (vint16m1x8_t): Ditto.
12693 (vuint16m1x8_t): Ditto.
12694 (vint16m2x2_t): Ditto.
12695 (vuint16m2x2_t): Ditto.
12696 (vint16m2x3_t): Ditto.
12697 (vuint16m2x3_t): Ditto.
12698 (vint16m2x4_t): Ditto.
12699 (vuint16m2x4_t): Ditto.
12700 (vint16m4x2_t): Ditto.
12701 (vuint16m4x2_t): Ditto.
12702 (vint32mf2x2_t): Ditto.
12703 (vuint32mf2x2_t): Ditto.
12704 (vint32mf2x3_t): Ditto.
12705 (vuint32mf2x3_t): Ditto.
12706 (vint32mf2x4_t): Ditto.
12707 (vuint32mf2x4_t): Ditto.
12708 (vint32mf2x5_t): Ditto.
12709 (vuint32mf2x5_t): Ditto.
12710 (vint32mf2x6_t): Ditto.
12711 (vuint32mf2x6_t): Ditto.
12712 (vint32mf2x7_t): Ditto.
12713 (vuint32mf2x7_t): Ditto.
12714 (vint32mf2x8_t): Ditto.
12715 (vuint32mf2x8_t): Ditto.
12716 (vint32m1x2_t): Ditto.
12717 (vuint32m1x2_t): Ditto.
12718 (vint32m1x3_t): Ditto.
12719 (vuint32m1x3_t): Ditto.
12720 (vint32m1x4_t): Ditto.
12721 (vuint32m1x4_t): Ditto.
12722 (vint32m1x5_t): Ditto.
12723 (vuint32m1x5_t): Ditto.
12724 (vint32m1x6_t): Ditto.
12725 (vuint32m1x6_t): Ditto.
12726 (vint32m1x7_t): Ditto.
12727 (vuint32m1x7_t): Ditto.
12728 (vint32m1x8_t): Ditto.
12729 (vuint32m1x8_t): Ditto.
12730 (vint32m2x2_t): Ditto.
12731 (vuint32m2x2_t): Ditto.
12732 (vint32m2x3_t): Ditto.
12733 (vuint32m2x3_t): Ditto.
12734 (vint32m2x4_t): Ditto.
12735 (vuint32m2x4_t): Ditto.
12736 (vint32m4x2_t): Ditto.
12737 (vuint32m4x2_t): Ditto.
12738 (vint64m1x2_t): Ditto.
12739 (vuint64m1x2_t): Ditto.
12740 (vint64m1x3_t): Ditto.
12741 (vuint64m1x3_t): Ditto.
12742 (vint64m1x4_t): Ditto.
12743 (vuint64m1x4_t): Ditto.
12744 (vint64m1x5_t): Ditto.
12745 (vuint64m1x5_t): Ditto.
12746 (vint64m1x6_t): Ditto.
12747 (vuint64m1x6_t): Ditto.
12748 (vint64m1x7_t): Ditto.
12749 (vuint64m1x7_t): Ditto.
12750 (vint64m1x8_t): Ditto.
12751 (vuint64m1x8_t): Ditto.
12752 (vint64m2x2_t): Ditto.
12753 (vuint64m2x2_t): Ditto.
12754 (vint64m2x3_t): Ditto.
12755 (vuint64m2x3_t): Ditto.
12756 (vint64m2x4_t): Ditto.
12757 (vuint64m2x4_t): Ditto.
12758 (vint64m4x2_t): Ditto.
12759 (vuint64m4x2_t): Ditto.
12760 (vfloat32mf2x2_t): Ditto.
12761 (vfloat32mf2x3_t): Ditto.
12762 (vfloat32mf2x4_t): Ditto.
12763 (vfloat32mf2x5_t): Ditto.
12764 (vfloat32mf2x6_t): Ditto.
12765 (vfloat32mf2x7_t): Ditto.
12766 (vfloat32mf2x8_t): Ditto.
12767 (vfloat32m1x2_t): Ditto.
12768 (vfloat32m1x3_t): Ditto.
12769 (vfloat32m1x4_t): Ditto.
12770 (vfloat32m1x5_t): Ditto.
12771 (vfloat32m1x6_t): Ditto.
12772 (vfloat32m1x7_t): Ditto.
12773 (vfloat32m1x8_t): Ditto.
12774 (vfloat32m2x2_t): Ditto.
12775 (vfloat32m2x3_t): Ditto.
12776 (vfloat32m2x4_t): Ditto.
12777 (vfloat32m4x2_t): Ditto.
12778 (vfloat64m1x2_t): Ditto.
12779 (vfloat64m1x3_t): Ditto.
12780 (vfloat64m1x4_t): Ditto.
12781 (vfloat64m1x5_t): Ditto.
12782 (vfloat64m1x6_t): Ditto.
12783 (vfloat64m1x7_t): Ditto.
12784 (vfloat64m1x8_t): Ditto.
12785 (vfloat64m2x2_t): Ditto.
12786 (vfloat64m2x3_t): Ditto.
12787 (vfloat64m2x4_t): Ditto.
12788 (vfloat64m4x2_t): Ditto.
12789 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
12791 (DEF_RVV_TYPE_INDEX): Ditto.
12792 (rvv_arg_type_info::get_tuple_subpart_type): New function.
12793 (DEF_RVV_TUPLE_TYPE): New macro.
12794 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
12795 Adapt for tuple vget/vset support.
12796 (vint8mf4_t): Ditto.
12797 (vuint8mf4_t): Ditto.
12798 (vint8mf2_t): Ditto.
12799 (vuint8mf2_t): Ditto.
12800 (vint8m1_t): Ditto.
12801 (vuint8m1_t): Ditto.
12802 (vint8m2_t): Ditto.
12803 (vuint8m2_t): Ditto.
12804 (vint8m4_t): Ditto.
12805 (vuint8m4_t): Ditto.
12806 (vint8m8_t): Ditto.
12807 (vuint8m8_t): Ditto.
12808 (vint16mf4_t): Ditto.
12809 (vuint16mf4_t): Ditto.
12810 (vint16mf2_t): Ditto.
12811 (vuint16mf2_t): Ditto.
12812 (vint16m1_t): Ditto.
12813 (vuint16m1_t): Ditto.
12814 (vint16m2_t): Ditto.
12815 (vuint16m2_t): Ditto.
12816 (vint16m4_t): Ditto.
12817 (vuint16m4_t): Ditto.
12818 (vint16m8_t): Ditto.
12819 (vuint16m8_t): Ditto.
12820 (vint32mf2_t): Ditto.
12821 (vuint32mf2_t): Ditto.
12822 (vint32m1_t): Ditto.
12823 (vuint32m1_t): Ditto.
12824 (vint32m2_t): Ditto.
12825 (vuint32m2_t): Ditto.
12826 (vint32m4_t): Ditto.
12827 (vuint32m4_t): Ditto.
12828 (vint32m8_t): Ditto.
12829 (vuint32m8_t): Ditto.
12830 (vint64m1_t): Ditto.
12831 (vuint64m1_t): Ditto.
12832 (vint64m2_t): Ditto.
12833 (vuint64m2_t): Ditto.
12834 (vint64m4_t): Ditto.
12835 (vuint64m4_t): Ditto.
12836 (vint64m8_t): Ditto.
12837 (vuint64m8_t): Ditto.
12838 (vfloat32mf2_t): Ditto.
12839 (vfloat32m1_t): Ditto.
12840 (vfloat32m2_t): Ditto.
12841 (vfloat32m4_t): Ditto.
12842 (vfloat32m8_t): Ditto.
12843 (vfloat64m1_t): Ditto.
12844 (vfloat64m2_t): Ditto.
12845 (vfloat64m4_t): Ditto.
12846 (vfloat64m8_t): Ditto.
12847 (tuple_subpart): Add tuple subpart base type.
12848 * config/riscv/riscv-vector-builtins.h (struct
12849 rvv_arg_type_info): Ditto.
12850 (tuple_type_field): New function.
12852 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12854 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
12855 (RVV_TUPLE_PARTIAL_MODES): Ditto.
12856 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
12859 (get_subpart_mode): Ditto.
12860 (get_tuple_mode): Ditto.
12861 (expand_tuple_move): Ditto.
12862 * config/riscv/riscv-v.cc (ENTRY): New macro.
12863 (TUPLE_ENTRY): Ditto.
12864 (get_nf): New function.
12865 (get_subpart_mode): Ditto.
12866 (get_tuple_mode): Ditto.
12867 (expand_tuple_move): Ditto.
12868 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
12870 (register_tuple_type): New function
12871 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
12873 (vint8mf8x2_t): New macro.
12874 (vuint8mf8x2_t): Ditto.
12875 (vint8mf8x3_t): Ditto.
12876 (vuint8mf8x3_t): Ditto.
12877 (vint8mf8x4_t): Ditto.
12878 (vuint8mf8x4_t): Ditto.
12879 (vint8mf8x5_t): Ditto.
12880 (vuint8mf8x5_t): Ditto.
12881 (vint8mf8x6_t): Ditto.
12882 (vuint8mf8x6_t): Ditto.
12883 (vint8mf8x7_t): Ditto.
12884 (vuint8mf8x7_t): Ditto.
12885 (vint8mf8x8_t): Ditto.
12886 (vuint8mf8x8_t): Ditto.
12887 (vint8mf4x2_t): Ditto.
12888 (vuint8mf4x2_t): Ditto.
12889 (vint8mf4x3_t): Ditto.
12890 (vuint8mf4x3_t): Ditto.
12891 (vint8mf4x4_t): Ditto.
12892 (vuint8mf4x4_t): Ditto.
12893 (vint8mf4x5_t): Ditto.
12894 (vuint8mf4x5_t): Ditto.
12895 (vint8mf4x6_t): Ditto.
12896 (vuint8mf4x6_t): Ditto.
12897 (vint8mf4x7_t): Ditto.
12898 (vuint8mf4x7_t): Ditto.
12899 (vint8mf4x8_t): Ditto.
12900 (vuint8mf4x8_t): Ditto.
12901 (vint8mf2x2_t): Ditto.
12902 (vuint8mf2x2_t): Ditto.
12903 (vint8mf2x3_t): Ditto.
12904 (vuint8mf2x3_t): Ditto.
12905 (vint8mf2x4_t): Ditto.
12906 (vuint8mf2x4_t): Ditto.
12907 (vint8mf2x5_t): Ditto.
12908 (vuint8mf2x5_t): Ditto.
12909 (vint8mf2x6_t): Ditto.
12910 (vuint8mf2x6_t): Ditto.
12911 (vint8mf2x7_t): Ditto.
12912 (vuint8mf2x7_t): Ditto.
12913 (vint8mf2x8_t): Ditto.
12914 (vuint8mf2x8_t): Ditto.
12915 (vint8m1x2_t): Ditto.
12916 (vuint8m1x2_t): Ditto.
12917 (vint8m1x3_t): Ditto.
12918 (vuint8m1x3_t): Ditto.
12919 (vint8m1x4_t): Ditto.
12920 (vuint8m1x4_t): Ditto.
12921 (vint8m1x5_t): Ditto.
12922 (vuint8m1x5_t): Ditto.
12923 (vint8m1x6_t): Ditto.
12924 (vuint8m1x6_t): Ditto.
12925 (vint8m1x7_t): Ditto.
12926 (vuint8m1x7_t): Ditto.
12927 (vint8m1x8_t): Ditto.
12928 (vuint8m1x8_t): Ditto.
12929 (vint8m2x2_t): Ditto.
12930 (vuint8m2x2_t): Ditto.
12931 (vint8m2x3_t): Ditto.
12932 (vuint8m2x3_t): Ditto.
12933 (vint8m2x4_t): Ditto.
12934 (vuint8m2x4_t): Ditto.
12935 (vint8m4x2_t): Ditto.
12936 (vuint8m4x2_t): Ditto.
12937 (vint16mf4x2_t): Ditto.
12938 (vuint16mf4x2_t): Ditto.
12939 (vint16mf4x3_t): Ditto.
12940 (vuint16mf4x3_t): Ditto.
12941 (vint16mf4x4_t): Ditto.
12942 (vuint16mf4x4_t): Ditto.
12943 (vint16mf4x5_t): Ditto.
12944 (vuint16mf4x5_t): Ditto.
12945 (vint16mf4x6_t): Ditto.
12946 (vuint16mf4x6_t): Ditto.
12947 (vint16mf4x7_t): Ditto.
12948 (vuint16mf4x7_t): Ditto.
12949 (vint16mf4x8_t): Ditto.
12950 (vuint16mf4x8_t): Ditto.
12951 (vint16mf2x2_t): Ditto.
12952 (vuint16mf2x2_t): Ditto.
12953 (vint16mf2x3_t): Ditto.
12954 (vuint16mf2x3_t): Ditto.
12955 (vint16mf2x4_t): Ditto.
12956 (vuint16mf2x4_t): Ditto.
12957 (vint16mf2x5_t): Ditto.
12958 (vuint16mf2x5_t): Ditto.
12959 (vint16mf2x6_t): Ditto.
12960 (vuint16mf2x6_t): Ditto.
12961 (vint16mf2x7_t): Ditto.
12962 (vuint16mf2x7_t): Ditto.
12963 (vint16mf2x8_t): Ditto.
12964 (vuint16mf2x8_t): Ditto.
12965 (vint16m1x2_t): Ditto.
12966 (vuint16m1x2_t): Ditto.
12967 (vint16m1x3_t): Ditto.
12968 (vuint16m1x3_t): Ditto.
12969 (vint16m1x4_t): Ditto.
12970 (vuint16m1x4_t): Ditto.
12971 (vint16m1x5_t): Ditto.
12972 (vuint16m1x5_t): Ditto.
12973 (vint16m1x6_t): Ditto.
12974 (vuint16m1x6_t): Ditto.
12975 (vint16m1x7_t): Ditto.
12976 (vuint16m1x7_t): Ditto.
12977 (vint16m1x8_t): Ditto.
12978 (vuint16m1x8_t): Ditto.
12979 (vint16m2x2_t): Ditto.
12980 (vuint16m2x2_t): Ditto.
12981 (vint16m2x3_t): Ditto.
12982 (vuint16m2x3_t): Ditto.
12983 (vint16m2x4_t): Ditto.
12984 (vuint16m2x4_t): Ditto.
12985 (vint16m4x2_t): Ditto.
12986 (vuint16m4x2_t): Ditto.
12987 (vint32mf2x2_t): Ditto.
12988 (vuint32mf2x2_t): Ditto.
12989 (vint32mf2x3_t): Ditto.
12990 (vuint32mf2x3_t): Ditto.
12991 (vint32mf2x4_t): Ditto.
12992 (vuint32mf2x4_t): Ditto.
12993 (vint32mf2x5_t): Ditto.
12994 (vuint32mf2x5_t): Ditto.
12995 (vint32mf2x6_t): Ditto.
12996 (vuint32mf2x6_t): Ditto.
12997 (vint32mf2x7_t): Ditto.
12998 (vuint32mf2x7_t): Ditto.
12999 (vint32mf2x8_t): Ditto.
13000 (vuint32mf2x8_t): Ditto.
13001 (vint32m1x2_t): Ditto.
13002 (vuint32m1x2_t): Ditto.
13003 (vint32m1x3_t): Ditto.
13004 (vuint32m1x3_t): Ditto.
13005 (vint32m1x4_t): Ditto.
13006 (vuint32m1x4_t): Ditto.
13007 (vint32m1x5_t): Ditto.
13008 (vuint32m1x5_t): Ditto.
13009 (vint32m1x6_t): Ditto.
13010 (vuint32m1x6_t): Ditto.
13011 (vint32m1x7_t): Ditto.
13012 (vuint32m1x7_t): Ditto.
13013 (vint32m1x8_t): Ditto.
13014 (vuint32m1x8_t): Ditto.
13015 (vint32m2x2_t): Ditto.
13016 (vuint32m2x2_t): Ditto.
13017 (vint32m2x3_t): Ditto.
13018 (vuint32m2x3_t): Ditto.
13019 (vint32m2x4_t): Ditto.
13020 (vuint32m2x4_t): Ditto.
13021 (vint32m4x2_t): Ditto.
13022 (vuint32m4x2_t): Ditto.
13023 (vint64m1x2_t): Ditto.
13024 (vuint64m1x2_t): Ditto.
13025 (vint64m1x3_t): Ditto.
13026 (vuint64m1x3_t): Ditto.
13027 (vint64m1x4_t): Ditto.
13028 (vuint64m1x4_t): Ditto.
13029 (vint64m1x5_t): Ditto.
13030 (vuint64m1x5_t): Ditto.
13031 (vint64m1x6_t): Ditto.
13032 (vuint64m1x6_t): Ditto.
13033 (vint64m1x7_t): Ditto.
13034 (vuint64m1x7_t): Ditto.
13035 (vint64m1x8_t): Ditto.
13036 (vuint64m1x8_t): Ditto.
13037 (vint64m2x2_t): Ditto.
13038 (vuint64m2x2_t): Ditto.
13039 (vint64m2x3_t): Ditto.
13040 (vuint64m2x3_t): Ditto.
13041 (vint64m2x4_t): Ditto.
13042 (vuint64m2x4_t): Ditto.
13043 (vint64m4x2_t): Ditto.
13044 (vuint64m4x2_t): Ditto.
13045 (vfloat32mf2x2_t): Ditto.
13046 (vfloat32mf2x3_t): Ditto.
13047 (vfloat32mf2x4_t): Ditto.
13048 (vfloat32mf2x5_t): Ditto.
13049 (vfloat32mf2x6_t): Ditto.
13050 (vfloat32mf2x7_t): Ditto.
13051 (vfloat32mf2x8_t): Ditto.
13052 (vfloat32m1x2_t): Ditto.
13053 (vfloat32m1x3_t): Ditto.
13054 (vfloat32m1x4_t): Ditto.
13055 (vfloat32m1x5_t): Ditto.
13056 (vfloat32m1x6_t): Ditto.
13057 (vfloat32m1x7_t): Ditto.
13058 (vfloat32m1x8_t): Ditto.
13059 (vfloat32m2x2_t): Ditto.
13060 (vfloat32m2x3_t): Ditto.
13061 (vfloat32m2x4_t): Ditto.
13062 (vfloat32m4x2_t): Ditto.
13063 (vfloat64m1x2_t): Ditto.
13064 (vfloat64m1x3_t): Ditto.
13065 (vfloat64m1x4_t): Ditto.
13066 (vfloat64m1x5_t): Ditto.
13067 (vfloat64m1x6_t): Ditto.
13068 (vfloat64m1x7_t): Ditto.
13069 (vfloat64m1x8_t): Ditto.
13070 (vfloat64m2x2_t): Ditto.
13071 (vfloat64m2x3_t): Ditto.
13072 (vfloat64m2x4_t): Ditto.
13073 (vfloat64m4x2_t): Ditto.
13074 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
13076 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
13077 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
13079 (TUPLE_ENTRY): Ditto.
13080 (riscv_v_ext_mode_p): New function.
13081 (riscv_v_adjust_nunits): Add tuple mode adjustment.
13082 (riscv_classify_address): Ditto.
13083 (riscv_binary_cost): Ditto.
13084 (riscv_rtx_costs): Ditto.
13085 (riscv_secondary_memory_needed): Ditto.
13086 (riscv_hard_regno_nregs): Ditto.
13087 (riscv_hard_regno_mode_ok): Ditto.
13088 (riscv_vector_mode_supported_p): Ditto.
13089 (riscv_regmode_natural_size): Ditto.
13090 (riscv_array_mode): New function.
13091 (TARGET_ARRAY_MODE): New target hook.
13092 * config/riscv/riscv.md: Add tuple modes.
13093 * config/riscv/vector-iterators.md: Ditto.
13094 * config/riscv/vector.md (mov<mode>): Add tuple modes data
13096 (*mov<VT:mode>_<P:mode>): Ditto.
13098 2023-05-03 Richard Biener <rguenther@suse.de>
13100 * cse.cc (cse_insn): Track an equivalence to the destination
13101 separately and delay using src_related for it.
13103 2023-05-03 Richard Biener <rguenther@suse.de>
13105 * cse.cc (HASH): Turn into inline function and mix
13106 in another HASH_SHIFT bits.
13107 (SAFE_HASH): Likewise.
13109 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13112 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
13113 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
13115 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13118 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
13119 (add<mode>3<vczle><vczbe>): ... This.
13120 (sub<mode>3): Rename to...
13121 (sub<mode>3<vczle><vczbe>): ... This.
13122 (mul<mode>3): Rename to...
13123 (mul<mode>3<vczle><vczbe>): ... This.
13124 (*div<mode>3): Rename to...
13125 (*div<mode>3<vczle><vczbe>): ... This.
13126 (neg<mode>2): Rename to...
13127 (neg<mode>2<vczle><vczbe>): ... This.
13128 (abs<mode>2): Rename to...
13129 (abs<mode>2<vczle><vczbe>): ... This.
13130 (<frint_pattern><mode>2): Rename to...
13131 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
13132 (<fmaxmin><mode>3): Rename to...
13133 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
13134 (*sqrt<mode>2): Rename to...
13135 (*sqrt<mode>2<vczle><vczbe>): ... This.
13137 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
13139 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
13141 2023-05-03 Martin Liska <mliska@suse.cz>
13143 PR tree-optimization/109693
13144 * value-range-storage.cc (vrange_allocator::vrange_allocator):
13145 Remove unused field.
13146 * value-range-storage.h: Likewise.
13148 2023-05-02 Andrew Pinski <apinski@marvell.com>
13150 * tree-ssa-phiopt.cc (move_stmt): New function.
13151 (match_simplify_replacement): Use move_stmt instead
13152 of the inlined version.
13154 2023-05-02 Andrew Pinski <apinski@marvell.com>
13156 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
13159 2023-05-02 Andrew Pinski <apinski@marvell.com>
13161 PR tree-optimization/109702
13162 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
13163 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
13165 2023-05-02 Andrew Pinski <apinski@marvell.com>
13168 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
13169 insn_and_split pattern.
13171 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13173 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
13176 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13178 * config/riscv/sync.md (mem_thread_fence_1): Change fence
13179 depending on the given memory model.
13181 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13183 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
13184 riscv_union_memmodels function to sync.md.
13185 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
13186 get the union of two memmodels in sync.md.
13187 (riscv_print_operand): Add %I and %J flags that output the
13188 optimal LR/SC flag bits for a given memory model.
13189 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
13190 bits on SC op and replace with optimized %I, %J flags.
13192 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13194 * config/riscv/riscv.cc
13195 (riscv_memmodel_needs_amo_release): Change function name.
13196 (riscv_print_operand): Remove unneeded %F case.
13197 * config/riscv/sync.md: Remove unneeded fences.
13199 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13202 * config/riscv/sync.md (atomic_store<mode>): Use simple store
13203 instruction in combination with fence(s).
13205 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13207 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
13208 of %A to include release bits.
13210 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13212 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
13213 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
13216 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13218 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
13219 sequentially consistent LR.aqrl/SC.rl pairs.
13221 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13223 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
13224 sanitize memmodel input with memmodel_base.
13226 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
13227 Pan Li <pan2.li@intel.com>
13230 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
13232 2023-05-02 Romain Naour <romain.naour@gmail.com>
13234 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
13237 2023-05-02 Martin Liska <mliska@suse.cz>
13239 * doc/invoke.texi: Update documentation based on param.opt file.
13241 2023-05-02 Richard Biener <rguenther@suse.de>
13243 PR tree-optimization/109672
13244 * tree-vect-stmts.cc (vectorizable_operation): For plus,
13245 minus and negate always check the vector mode is word mode.
13247 2023-05-01 Andrew Pinski <apinski@marvell.com>
13249 * tree-ssa-phiopt.cc: Update comment about
13250 how the transformation are implemented.
13252 2023-05-01 Jeff Law <jlaw@ventanamicro>
13254 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
13256 2023-05-01 Jeff Law <jlaw@ventanamicro>
13258 * config/cris/cris.cc (TARGET_LRA_P): Remove.
13259 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
13260 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
13261 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
13262 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
13263 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
13265 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
13267 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
13268 * print-tree.cc (print_decl_identifier): Implement it.
13269 * toplev.cc (output_stack_usage_1): Use it.
13271 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13273 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
13276 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13278 * value-range.h (irange::set_nonzero): Inline.
13280 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13282 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
13284 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
13285 invalid_range, as it is an inverse range.
13286 * tree-vrp.cc (find_case_label_range): Avoid trees.
13287 * value-range.cc (irange::irange_set): Delete.
13288 (irange::irange_set_1bit_anti_range): Delete.
13289 (irange::irange_set_anti_range): Delete.
13290 (irange::set): Cleanup.
13291 * value-range.h (class irange): Remove irange_set,
13292 irange_set_anti_range, irange_set_1bit_anti_range.
13293 (irange::set_undefined): Remove set to m_type.
13295 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13297 * range-op.cc (update_known_bitmask): Adjust for irange containing
13298 wide_ints internally.
13299 * tree-ssanames.cc (set_nonzero_bits): Same.
13300 * tree-ssanames.h (set_nonzero_bits): Same.
13301 * value-range-storage.cc (irange_storage::set_irange): Same.
13302 (irange_storage::get_irange): Same.
13303 * value-range.cc (irange::operator=): Same.
13304 (irange::irange_set): Same.
13305 (irange::irange_set_1bit_anti_range): Same.
13306 (irange::irange_set_anti_range): Same.
13307 (irange::set): Same.
13308 (irange::verify_range): Same.
13309 (irange::contains_p): Same.
13310 (irange::irange_single_pair_union): Same.
13311 (irange::union_): Same.
13312 (irange::irange_contains_p): Same.
13313 (irange::intersect): Same.
13314 (irange::invert): Same.
13315 (irange::set_range_from_nonzero_bits): Same.
13316 (irange::set_nonzero_bits): Same.
13317 (mask_to_wi): Same.
13318 (irange::intersect_nonzero_bits): Same.
13319 (irange::union_nonzero_bits): Same.
13322 (tree_range): Same.
13323 (range_tests_strict_enum): Same.
13324 (range_tests_misc): Same.
13325 (range_tests_nonzero_bits): Same.
13326 * value-range.h (irange::type): Same.
13327 (irange::varying_compatible_p): Same.
13328 (irange::irange): Same.
13329 (int_range::int_range): Same.
13330 (irange::set_undefined): Same.
13331 (irange::set_varying): Same.
13332 (irange::lower_bound): Same.
13333 (irange::upper_bound): Same.
13335 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13337 * gimple-range-fold.cc (tree_lower_bound): Delete.
13338 (tree_upper_bound): Delete.
13339 (vrp_val_max): Delete.
13340 (vrp_val_min): Delete.
13341 (fold_using_range::range_of_ssa_name_with_loop_info): Call
13342 range_of_var_in_loop.
13343 * vr-values.cc (valid_value_p): Delete.
13344 (fix_overflow): Delete.
13345 (get_scev_info): New.
13346 (bounds_of_var_in_loop): Refactor into...
13347 (induction_variable_may_overflow_p): ...this,
13348 (range_from_loop_direction): ...and this,
13349 (range_of_var_in_loop): ...and this.
13350 * vr-values.h (bounds_of_var_in_loop): Delete.
13351 (range_of_var_in_loop): New.
13353 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13355 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
13357 (vrp_val_max): New.
13358 (vrp_val_min): New.
13359 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
13360 * range-op.cc (max_limit): Same.
13362 (plus_minus_ranges): Same.
13363 (operator_rshift::op1_range): Same.
13364 (operator_cast::inside_domain_p): Same.
13365 * value-range.cc (vrp_val_is_max): Delete.
13366 (vrp_val_is_min): Delete.
13367 (range_tests_misc): Use irange_val_*.
13368 * value-range.h (vrp_val_is_min): Delete.
13369 (vrp_val_is_max): Delete.
13370 (vrp_val_max): Delete.
13371 (irange_val_min): New.
13372 (vrp_val_min): Delete.
13373 (irange_val_max): New.
13374 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
13376 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13378 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
13379 * gimple-fold.cc (size_must_be_zero_p): Same.
13380 * gimple-loop-versioning.cc
13381 (loop_versioning::prune_loop_conditions): Same.
13382 * gimple-range-edge.cc (gcond_edge_range): Same.
13383 (gimple_outgoing_range::calc_switch_ranges): Same.
13384 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
13385 (adjust_realpart_expr): Same.
13386 (fold_using_range::range_of_address): Same.
13387 (fold_using_range::relation_fold_and_or): Same.
13388 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
13389 (range_is_either_true_or_false): Same.
13390 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
13391 (cfn_clz::fold_range): Same.
13392 (cfn_ctz::fold_range): Same.
13393 * gimple-range-tests.cc (class test_expr_eval): Same.
13394 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
13395 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
13396 (propagate_vr_across_jump_function): Same.
13397 (decide_whether_version_node): Same.
13398 * ipa-prop.cc (ipa_get_value_range): Same.
13399 * ipa-prop.h (ipa_range_set_and_normalize): Same.
13400 * range-op.cc (get_shift_range): Same.
13401 (value_range_from_overflowed_bounds): Same.
13402 (value_range_with_overflow): Same.
13403 (create_possibly_reversed_range): Same.
13404 (equal_op1_op2_relation): Same.
13405 (not_equal_op1_op2_relation): Same.
13406 (lt_op1_op2_relation): Same.
13407 (le_op1_op2_relation): Same.
13408 (gt_op1_op2_relation): Same.
13409 (ge_op1_op2_relation): Same.
13410 (operator_mult::op1_range): Same.
13411 (operator_exact_divide::op1_range): Same.
13412 (operator_lshift::op1_range): Same.
13413 (operator_rshift::op1_range): Same.
13414 (operator_cast::op1_range): Same.
13415 (operator_logical_and::fold_range): Same.
13416 (set_nonzero_range_from_mask): Same.
13417 (operator_bitwise_or::op1_range): Same.
13418 (operator_bitwise_xor::op1_range): Same.
13419 (operator_addr_expr::fold_range): Same.
13420 (pointer_plus_operator::wi_fold): Same.
13421 (pointer_or_operator::op1_range): Same.
13428 (range_op_cast_tests): Same.
13429 (range_op_lshift_tests): Same.
13430 (range_op_rshift_tests): Same.
13431 (range_op_bitwise_and_tests): Same.
13432 (range_relational_tests): Same.
13433 * range.cc (range_zero): Same.
13434 (range_nonzero): Same.
13435 * range.h (range_true): Same.
13436 (range_false): Same.
13437 (range_true_and_false): Same.
13438 * tree-data-ref.cc (split_constant_offset_1): Same.
13439 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
13440 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
13441 (find_unswitching_predicates_for_bb): Same.
13442 * tree-ssa-phiopt.cc (value_replacement): Same.
13443 * tree-ssa-threadbackward.cc
13444 (back_threader::find_taken_edge_cond): Same.
13445 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
13446 * tree-vrp.cc (find_case_label_range): Same.
13447 * value-query.cc (range_query::get_tree_range): Same.
13448 * value-range.cc (irange::set_nonnegative): Same.
13449 (frange::contains_p): Same.
13450 (frange::singleton_p): Same.
13451 (frange::internal_singleton_p): Same.
13452 (irange::irange_set): Same.
13453 (irange::irange_set_1bit_anti_range): Same.
13454 (irange::irange_set_anti_range): Same.
13455 (irange::set): Same.
13456 (irange::operator==): Same.
13457 (irange::singleton_p): Same.
13458 (irange::contains_p): Same.
13459 (irange::set_range_from_nonzero_bits): Same.
13460 (DEFINE_INT_RANGE_INSTANCE): Same.
13470 (range_uint128): New.
13471 (range_uchar): New.
13473 (build_range3): Convert to irange wide_int API.
13474 (range_tests_irange3): Same.
13475 (range_tests_int_range_max): Same.
13476 (range_tests_strict_enum): Same.
13477 (range_tests_misc): Same.
13478 (range_tests_nonzero_bits): Same.
13479 (range_tests_nan): Same.
13480 (range_tests_signed_zeros): Same.
13481 * value-range.h (Value_Range::Value_Range): Same.
13482 (irange::set): Same.
13483 (irange::nonzero_p): Same.
13484 (irange::contains_p): Same.
13485 (range_includes_zero_p): Same.
13486 (irange::set_nonzero): Same.
13487 (irange::set_zero): Same.
13488 (contains_zero_p): Same.
13489 (frange::contains_p): Same.
13491 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
13492 (bounds_of_var_in_loop): Same.
13493 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
13495 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13497 * value-range.cc (irange::irange_union): Rename to...
13498 (irange::union_): ...this.
13499 (irange::irange_intersect): Rename to...
13500 (irange::intersect): ...this.
13501 * value-range.h (irange::union_): Delete.
13502 (irange::intersect): Delete.
13504 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13506 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
13508 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13510 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
13512 (compare_ranges): Delete.
13513 (compare_range_with_value): Delete.
13514 (bounds_of_var_in_loop): Tidy up by using ranger API.
13515 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
13516 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
13517 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
13518 strict_overflow_p and only_ranges.
13519 (simplify_using_ranges::legacy_fold_cond): Adjust call to
13520 legacy_fold_cond_overflow.
13521 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
13523 (range_fits_type_p): Rename value_range to irange.
13524 * vr-values.h (range_fits_type_p): Adjust prototype.
13526 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13528 * value-range.cc (irange::irange_set_anti_range): Remove uses of
13529 tree_lower_bound and tree_upper_bound.
13530 (irange::verify_range): Same.
13531 (irange::operator==): Same.
13532 (irange::singleton_p): Same.
13533 * value-range.h (irange::tree_lower_bound): Delete.
13534 (irange::tree_upper_bound): Delete.
13535 (irange::lower_bound): Delete.
13536 (irange::upper_bound): Delete.
13537 (irange::zero_p): Remove uses of tree_lower_bound and
13540 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13542 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
13544 (determine_value_range): Same.
13545 (record_nonwrapping_iv): Same.
13546 (infer_loop_bounds_from_signedness): Same.
13547 (scev_var_range_cant_overflow): Same.
13548 * tree-vrp.cc (operand_less_p): Delete.
13549 * tree-vrp.h (operand_less_p): Delete.
13550 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
13551 (irange::value_inside_range): Delete.
13552 * value-range.h (vrange::kind): Delete.
13553 (irange::num_pairs): Remove check of m_kind.
13554 (irange::min): Delete.
13555 (irange::max): Delete.
13557 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13559 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
13560 for vrange_storage.
13561 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
13562 (sbr_vector::grow): Same.
13563 (sbr_vector::set_bb_range): Same.
13564 (sbr_vector::get_bb_range): Same.
13565 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
13566 (sbr_sparse_bitmap::set_bb_range): Same.
13567 (sbr_sparse_bitmap::get_bb_range): Same.
13568 (block_range_cache::block_range_cache): Same.
13569 (ssa_global_cache::ssa_global_cache): Same.
13570 (ssa_global_cache::get_global_range): Same.
13571 (ssa_global_cache::set_global_range): Same.
13572 * gimple-range-cache.h: Same.
13573 * gimple-range-edge.cc
13574 (gimple_outgoing_range::gimple_outgoing_range): Same.
13575 (gimple_outgoing_range::switch_edge_range): Same.
13576 (gimple_outgoing_range::calc_switch_ranges): Same.
13577 * gimple-range-edge.h: Same.
13578 * gimple-range-infer.cc
13579 (infer_range_manager::infer_range_manager): Same.
13580 (infer_range_manager::get_nonzero): Same.
13581 (infer_range_manager::maybe_adjust_range): Same.
13582 (infer_range_manager::add_range): Same.
13583 * gimple-range-infer.h: Rename obstack_vrange_allocator to
13585 * tree-core.h (struct irange_storage_slot): Remove.
13586 (struct tree_ssa_name): Remove irange_info and frange_info. Make
13587 range_info a pointer to vrange_storage.
13588 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
13589 (range_info_alloc): Same.
13590 (range_info_free): Same.
13591 (range_info_get_range): Same.
13592 (range_info_set_range): Same.
13593 (get_nonzero_bits): Same.
13594 * value-query.cc (get_ssa_name_range_info): Same.
13595 * value-range-storage.cc (class vrange_internal_alloc): New.
13596 (class vrange_obstack_alloc): New.
13597 (class vrange_ggc_alloc): New.
13598 (vrange_allocator::vrange_allocator): New.
13599 (vrange_allocator::~vrange_allocator): New.
13600 (vrange_storage::alloc_slot): New.
13601 (vrange_allocator::alloc): New.
13602 (vrange_allocator::free): New.
13603 (vrange_allocator::clone): New.
13604 (vrange_allocator::clone_varying): New.
13605 (vrange_allocator::clone_undefined): New.
13606 (vrange_storage::alloc): New.
13607 (vrange_storage::set_vrange): Remove slot argument.
13608 (vrange_storage::get_vrange): Same.
13609 (vrange_storage::fits_p): Same.
13610 (vrange_storage::equal_p): New.
13611 (irange_storage::write_lengths_address): New.
13612 (irange_storage::lengths_address): New.
13613 (irange_storage_slot::alloc_slot): Remove.
13614 (irange_storage::alloc): New.
13615 (irange_storage_slot::irange_storage_slot): Remove.
13616 (irange_storage::irange_storage): New.
13617 (write_wide_int): New.
13618 (irange_storage_slot::set_irange): Remove.
13619 (irange_storage::set_irange): New.
13620 (read_wide_int): New.
13621 (irange_storage_slot::get_irange): Remove.
13622 (irange_storage::get_irange): New.
13623 (irange_storage_slot::size): Remove.
13624 (irange_storage::equal_p): New.
13625 (irange_storage_slot::num_wide_ints_needed): Remove.
13626 (irange_storage::size): New.
13627 (irange_storage_slot::fits_p): Remove.
13628 (irange_storage::fits_p): New.
13629 (irange_storage_slot::dump): Remove.
13630 (irange_storage::dump): New.
13631 (frange_storage_slot::alloc_slot): Remove.
13632 (frange_storage::alloc): New.
13633 (frange_storage_slot::set_frange): Remove.
13634 (frange_storage::set_frange): New.
13635 (frange_storage_slot::get_frange): Remove.
13636 (frange_storage::get_frange): New.
13637 (frange_storage_slot::fits_p): Remove.
13638 (frange_storage::equal_p): New.
13639 (frange_storage::fits_p): New.
13640 (ggc_vrange_allocator): New.
13641 (ggc_alloc_vrange_storage): New.
13642 * value-range-storage.h (class vrange_storage): Rewrite.
13643 (class irange_storage): Rewrite.
13644 (class frange_storage): Rewrite.
13645 (class obstack_vrange_allocator): Remove.
13646 (class ggc_vrange_allocator): Remove.
13647 (vrange_allocator::alloc_vrange): Remove.
13648 (vrange_allocator::alloc_irange): Remove.
13649 (vrange_allocator::alloc_frange): Remove.
13650 (ggc_alloc_vrange_storage): New.
13651 * value-range.h (class irange): Rename vrange_allocator to
13653 (class frange): Same.
13655 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
13657 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
13658 inc to avoid clobbering the carry flag.
13660 2023-04-30 Andrew Pinski <apinski@marvell.com>
13662 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
13663 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
13665 2023-04-30 Andrew Pinski <apinski@marvell.com>
13667 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
13668 Allow some builtin/internal function calls which
13669 are known not to trap/throw.
13670 (phiopt_worker::match_simplify_replacement):
13671 Use name instead of getting the lhs again.
13673 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
13675 * configure: Regenerate.
13676 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
13678 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
13680 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
13681 emit_insn_if_valid_for_reload.
13682 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
13683 to be recognized, also try emitting a parallel that clobbers
13684 TARGET_FLAGS_REGNUM, as applicable.
13686 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
13688 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
13690 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
13691 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
13693 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
13695 * config/stormy16/stormy16.md (any_lshift): New code iterator.
13696 (any_or_plus): Likewise.
13697 (any_rotate): Likewise.
13698 (*<any_lshift>_and_internal): New define_insn_and_split to
13699 recognize a logical shift followed by an AND, and split it
13700 again after reload.
13701 (*swpn): New define_insn matching xstormy16's swpn.
13702 (*swpn_zext): New define_insn recognizing swpn followed by
13703 zero_extendqihi2, i.e. with the high byte set to zero.
13704 (*swpn_sext): Likewise, for swpn followed by cbw.
13705 (*swpn_sext_2): Likewise, for an alternate RTL form.
13706 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
13707 sequence is split in the correct place to recognize the *swpn_zext
13708 followed by any_or_plus (ior, xor or plus) instruction.
13710 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
13713 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
13714 (lm32-*-uclinux*): Likewise.
13716 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
13718 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
13719 for riscv_use_save_libcall.
13720 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
13721 (riscv_compute_frame_info): restructure to decouple stack allocation
13722 for rv32e w/o save-restore.
13724 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
13726 * doc/install.texi: Fix documentation typo
13728 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
13730 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
13731 (u): Add div/udiv cases.
13732 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
13733 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
13735 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
13736 (thead_c906_tune_info): Likewise.
13737 (optimize_size_tune_info): Likewise.
13738 (riscv_use_divmod_expander): New function.
13739 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
13741 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
13743 * config/riscv/bitmanip.md: Added clmulr instruction.
13744 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
13745 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
13747 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
13748 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
13749 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
13750 functions to riscv-cmo.def.
13751 * config/riscv/generic.md: Add clmul to list of instructions
13752 using the generic_imul reservation.
13754 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
13756 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
13758 2023-04-28 Andrew Pinski <apinski@marvell.com>
13760 PR tree-optimization/100958
13761 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
13762 (pass_phiopt::execute): Don't call two_value_replacement.
13763 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
13764 handle what two_value_replacement did.
13766 2023-04-28 Andrew Pinski <apinski@marvell.com>
13768 * match.pd: Add patterns for
13769 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
13771 2023-04-28 Andrew Pinski <apinski@marvell.com>
13773 * match.pd: Factor out the deciding the min/max from
13774 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
13776 * fold-const.cc (minmax_from_comparison): this new function.
13777 * fold-const.h (minmax_from_comparison): New prototype.
13779 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
13781 PR rtl-optimization/109476
13782 * lower-subreg.cc: Include explow.h for force_reg.
13783 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
13784 If decomposing a suitable LSHIFTRT and we're not splitting
13785 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
13786 instead of setting a high part SUBREG to zero, which helps combine.
13787 (decompose_multiword_subregs): Update call to resolve_shift_zext.
13789 2023-04-28 Richard Biener <rguenther@suse.de>
13791 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
13793 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
13794 gather-scatter info and cost emulated scatters accordingly.
13795 (get_load_store_type): Support emulated scatters.
13796 (vectorizable_store): Likewise. Emulate them by extracting
13797 scalar offsets and data, doing scalar stores.
13799 2023-04-28 Richard Biener <rguenther@suse.de>
13801 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
13802 Tame down element extracts and scalar loads for gather/scatter
13803 similar to elementwise strided accesses.
13805 2023-04-28 Pan Li <pan2.li@intel.com>
13806 kito-cheng <kito.cheng@sifive.com>
13808 * config/riscv/vector.md: Add new define split to perform
13809 the simplification.
13811 2023-04-28 Richard Biener <rguenther@suse.de>
13814 * ipa-param-manipulation.cc
13815 (ipa_param_body_adjustments::modify_expression): Allow
13816 conversion of a register to a non-register type. Elide
13817 conversions inside BIT_FIELD_REFs.
13819 2023-04-28 Richard Biener <rguenther@suse.de>
13821 PR tree-optimization/109644
13822 * tree-cfg.cc (verify_types_in_gimple_reference): Check
13823 register constraints on the outermost VIEW_CONVERT_EXPR
13824 only. Do not allow register or invariant bases on
13825 multi-level or possibly variable index handled components.
13827 2023-04-28 Richard Biener <rguenther@suse.de>
13829 * gimplify.cc (gimplify_compound_lval): When there's a
13830 non-register type produced by one of the handled component
13831 operations make sure we get a non-register base.
13833 2023-04-28 Richard Biener <rguenther@suse.de>
13835 PR tree-optimization/108752
13836 * tree-vect-generic.cc (build_replicated_const): Rename
13837 to build_replicated_int_cst and move to tree.{h,cc}.
13838 (do_plus_minus): Adjust.
13839 (do_negate): Likewise.
13840 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
13841 arithmetic vector operations in lowered form.
13842 * tree.h (build_replicated_int_cst): Declare.
13843 * tree.cc (build_replicated_int_cst): Moved from
13844 tree-vect-generic.cc build_replicated_const.
13846 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13849 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
13850 (aarch64_rbit<mode><vczle><vczbe>): ... This.
13851 (neg<mode>2): Rename to...
13852 (neg<mode>2<vczle><vczbe>): ... This.
13853 (abs<mode>2): Rename to...
13854 (abs<mode>2<vczle><vczbe>): ... This.
13855 (aarch64_abs<mode>): Rename to...
13856 (aarch64_abs<mode><vczle><vczbe>): ... This.
13857 (one_cmpl<mode>2): Rename to...
13858 (one_cmpl<mode>2<vczle><vczbe>): ... This.
13859 (clrsb<mode>2): Rename to...
13860 (clrsb<mode>2<vczle><vczbe>): ... This.
13861 (clz<mode>2): Rename to...
13862 (clz<mode>2<vczle><vczbe>): ... This.
13863 (popcount<mode>2): Rename to...
13864 (popcount<mode>2<vczle><vczbe>): ... This.
13866 2023-04-28 Jakub Jelinek <jakub@redhat.com>
13868 * gimple-range-op.cc (class cfn_sqrt): New type.
13869 (op_cfn_sqrt): New variable.
13870 (gimple_range_op_handler::maybe_builtin_call): Handle
13871 CASE_CFN_SQRT{,_FN}.
13873 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
13874 Jakub Jelinek <jakub@redhat.com>
13876 * value-range.h (frange_nextafter): Declare.
13877 * gimple-range-op.cc (class cfn_sincos): New.
13878 (op_cfn_sin, op_cfn_cos): New variables.
13879 (gimple_range_op_handler::maybe_builtin_call): Handle
13880 CASE_CFN_{SIN,COS}{,_FN}.
13882 2023-04-28 Jakub Jelinek <jakub@redhat.com>
13884 * target.def (libm_function_max_error): New target hook.
13885 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
13886 * doc/tm.texi: Regenerated.
13887 * targhooks.h (default_libm_function_max_error,
13888 glibc_linux_libm_function_max_error): Declare.
13889 * targhooks.cc: Include case-cfn-macros.h.
13890 (default_libm_function_max_error,
13891 glibc_linux_libm_function_max_error): New functions.
13892 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
13893 * config/linux-protos.h (linux_libm_function_max_error): Declare.
13894 * config/linux.cc: Include target.h and targhooks.h.
13895 (linux_libm_function_max_error): New function.
13896 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
13897 (arc_libm_function_max_error): New function.
13898 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
13899 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
13900 (ix86_libm_function_max_error): New function.
13901 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
13902 * config/rs6000/rs6000-protos.h
13903 (rs6000_linux_libm_function_max_error): Declare.
13904 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
13905 and case-cfn-macros.h.
13906 (rs6000_linux_libm_function_max_error): New function.
13907 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
13908 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
13909 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
13910 (or1k_libm_function_max_error): New function.
13911 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
13913 2023-04-28 Alexandre Oliva <oliva@adacore.com>
13915 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
13916 Move detach value calls...
13917 (pass_harden_conditional_branches::execute): ... here.
13918 (pass_harden_compares::execute): Detach values before
13921 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
13923 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
13924 (cml<addsub_as><mode>4): Likewise.
13925 (vec_addsub<mode>3): Likewise.
13926 (cadd<rot><mode>3): Likewise.
13927 (vec_fmaddsub<mode>4): Likewise.
13928 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
13930 2023-04-27 Andrew Pinski <apinski@marvell.com>
13932 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
13933 up to 2 min/max expressions in the sequence/match code.
13935 2023-04-27 Andrew Pinski <apinski@marvell.com>
13937 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
13939 * tree-eh.cc (operation_could_trap_helper_p): Treate
13940 MIN_EXPR/MAX_EXPR similar as other comparisons.
13942 2023-04-27 Andrew Pinski <apinski@marvell.com>
13944 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
13946 (cond_if_else_store_replacement): Likewise.
13947 (get_non_trapping): Likewise.
13948 (store_elim_worker): Move into ...
13949 (pass_cselim::execute): This.
13951 2023-04-27 Andrew Pinski <apinski@marvell.com>
13953 * tree-ssa-phiopt.cc (two_value_replacement): Remove
13955 (match_simplify_replacement): Likewise.
13956 (factor_out_conditional_conversion): Likewise.
13957 (value_replacement): Likewise.
13958 (minmax_replacement): Likewise.
13959 (spaceship_replacement): Likewise.
13960 (cond_removal_in_builtin_zero_pattern): Likewise.
13961 (hoist_adjacent_loads): Likewise.
13962 (tree_ssa_phiopt_worker): Move into ...
13963 (pass_phiopt::execute): this.
13965 2023-04-27 Andrew Pinski <apinski@marvell.com>
13967 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
13968 do_store_elim argument and split that part out to ...
13969 (store_elim_worker): This new function.
13970 (pass_cselim::execute): Call store_elim_worker.
13971 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
13973 2023-04-27 Jan Hubicka <jh@suse.cz>
13975 * cfgloopmanip.h (unloop_loops): Export.
13976 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
13977 that no longer loop.
13978 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
13979 vectors of loops to unloop.
13980 (canonicalize_induction_variables): Free vectors here.
13981 (tree_unroll_loops_completely): Free vectors here.
13983 2023-04-27 Richard Biener <rguenther@suse.de>
13985 PR tree-optimization/109170
13986 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
13987 Handle __builtin_expect and similar via cfn_pass_through_arg1
13988 and inspecting the calls fnspec.
13989 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
13990 and BUILT_IN_EXPECT_WITH_PROBABILITY.
13992 2023-04-27 Alexandre Oliva <oliva@adacore.com>
13994 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
13996 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
13998 PR tree-optimization/109639
13999 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
14000 (propagate_vr_across_jump_function): Same.
14001 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
14002 * ipa-prop.h (ipa_range_set_and_normalize): New.
14003 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
14005 2023-04-27 Richard Biener <rguenther@suse.de>
14007 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
14008 create a CTOR operand in the result when simplifying GIMPLE.
14010 2023-04-27 Richard Biener <rguenther@suse.de>
14012 * gimplify.cc (gimplify_compound_lval): When the base
14013 gimplified to a register make sure to split up chains
14016 2023-04-27 Richard Biener <rguenther@suse.de>
14019 * ipa-param-manipulation.h
14020 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
14022 * ipa-param-manipulation.cc
14023 (ipa_param_body_adjustments::modify_expression): Likewise.
14024 When we need a conversion and the replacement is a register
14025 split the conversion out.
14026 (ipa_param_body_adjustments::modify_assignment): Pass
14027 extra_stmts to RHS modify_expression.
14029 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
14031 * doc/extend.texi (Zero Length): Describe example.
14033 2023-04-27 Richard Biener <rguenther@suse.de>
14035 PR tree-optimization/109594
14036 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
14037 what we rewrite to a register based on the above.
14039 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
14041 * config/riscv/riscv.cc: Fix whitespace.
14042 * config/riscv/sync.md: Fix whitespace.
14044 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14046 PR tree-optimization/108697
14047 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
14048 not clear the vector on an out of range query.
14049 (ssa_cache::dump): Use dump_range_query instead of get_range.
14050 (ssa_cache::dump_range_query): New.
14051 (ssa_lazy_cache::dump_range_query): New.
14052 (ssa_lazy_cache::set_range): New.
14053 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
14054 (class ssa_lazy_cache): New.
14055 (ssa_lazy_cache::ssa_lazy_cache): New.
14056 (ssa_lazy_cache::~ssa_lazy_cache): New.
14057 (ssa_lazy_cache::get_range): New.
14058 (ssa_lazy_cache::clear_range): New.
14059 (ssa_lazy_cache::clear): New.
14060 (ssa_lazy_cache::dump): New.
14061 * gimple-range-path.cc (path_range_query::path_range_query): Do
14062 not allocate a ssa_cache object nor has_cache bitmap.
14063 (path_range_query::~path_range_query): Do not free objects.
14064 (path_range_query::clear_cache): Remove.
14065 (path_range_query::get_cache): Adjust.
14066 (path_range_query::set_cache): Remove.
14067 (path_range_query::dump): Don't call through a pointer.
14068 (path_range_query::internal_range_of_expr): Set cache directly.
14069 (path_range_query::reset_path): Clear cache directly.
14070 (path_range_query::ssa_range_in_phi): Fold with globals only.
14071 (path_range_query::compute_ranges_in_phis): Simply set range.
14072 (path_range_query::compute_ranges_in_block): Call cache directly.
14073 * gimple-range-path.h (class path_range_query): Replace bitmap
14074 and cache pointer with lazy cache object.
14075 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
14077 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14079 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
14080 (ssa_cache::~ssa_cache): Rename.
14081 (ssa_cache::has_range): New.
14082 (ssa_cache::get_range): Rename.
14083 (ssa_cache::set_range): Rename.
14084 (ssa_cache::clear_range): Rename.
14085 (ssa_cache::clear): Rename.
14086 (ssa_cache::dump): Rename and use get_range.
14087 (ranger_cache::get_global_range): Use get_range and set_range.
14088 (ranger_cache::range_of_def): Use get_range.
14089 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
14090 (class ranger_cache): Use ssa_cache.
14091 * gimple-range-path.cc (path_range_query::path_range_query): Use
14093 (path_range_query::get_cache): Use get_range.
14094 (path_range_query::set_cache): Use set_range.
14095 * gimple-range-path.h (class path_range_query): Use ssa_cache.
14096 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
14097 (assume_query::range_of_expr): Use get_range.
14098 (assume_query::assume_query): Use set_range.
14099 (assume_query::calculate_op): Use get_range and set_range.
14100 * gimple-range.h (class assume_query): Use ssa_cache.
14102 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14104 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
14105 and local to optionally zero memory.
14106 (br_vector::grow): Only zero memory if flag is set.
14107 (class sbr_lazy_vector): New.
14108 (sbr_lazy_vector::sbr_lazy_vector): New.
14109 (sbr_lazy_vector::set_bb_range): New.
14110 (sbr_lazy_vector::get_bb_range): New.
14111 (sbr_lazy_vector::bb_range_p): New.
14112 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
14113 * gimple-range-gori.cc (gori_map::calculate_gori): Use
14114 param_vrp_switch_limit.
14115 (gori_compute::gori_compute): Use param_vrp_switch_limit.
14116 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
14117 (vrp_switch_limit): Rename from evrp_switch_limit.
14118 (vrp_vector_threshold): New.
14120 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14122 * value-relation.cc (dom_oracle::query_relation): Check early for lack
14124 * value-relation.h (equiv_oracle::has_equiv_p): New.
14126 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14128 PR tree-optimization/109417
14129 * gimple-range-gori.cc (range_def_chain::register_dependency):
14130 Save the ssa version number, not the pointer.
14131 (gori_compute::may_recompute_p): No need to check if a dependency
14132 is in the free list.
14133 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
14134 fields to be unsigned int instead of trees.
14135 (ange_def_chain::depend1): Adjust.
14136 (ange_def_chain::depend2): Adjust.
14137 * gimple-range.h: Include "ssa.h" to inline ssa_name().
14139 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
14141 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
14142 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
14143 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
14145 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
14148 * config/riscv/riscv-protos.h: Add helper function stubs.
14149 * config/riscv/riscv.cc: Add helper functions for subword masking.
14150 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
14151 -mno-inline-atomics.
14152 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
14153 fetch_and_nand, CAS, and exchange ops.
14154 * doc/invoke.texi: Add blurb regarding new command-line flags
14155 -minline-atomics and -mno-inline-atomics.
14157 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14159 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
14160 Reimplement using standard RTL codes instead of unspec.
14161 (aarch64_rshrn2<mode>_insn_be): Likewise.
14162 (aarch64_rshrn2<mode>): Adjust for the above.
14163 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
14165 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14167 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
14168 with standard RTL codes instead of an UNSPEC.
14169 (aarch64_rshrn<mode>_insn_be): Likewise.
14170 (aarch64_rshrn<mode>): Adjust for the above.
14171 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
14173 2023-04-26 Pan Li <pan2.li@intel.com>
14174 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14176 * config/riscv/riscv.cc (riscv_classify_address): Allow
14177 const0_rtx for the RVV load/store.
14179 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14181 * range-op.cc (range_op_cast_tests): Remove legacy support.
14182 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
14183 * value-range.cc (irange::operator=): Same.
14184 (get_legacy_range): Same.
14185 (irange::copy_legacy_to_multi_range): Delete.
14186 (irange::copy_to_legacy): Delete.
14187 (irange::irange_set_anti_range): Delete.
14188 (irange::set): Remove legacy support.
14189 (irange::verify_range): Same.
14190 (irange::legacy_lower_bound): Delete.
14191 (irange::legacy_upper_bound): Delete.
14192 (irange::legacy_equal_p): Delete.
14193 (irange::operator==): Remove legacy support.
14194 (irange::singleton_p): Same.
14195 (irange::value_inside_range): Same.
14196 (irange::contains_p): Same.
14197 (intersect_ranges): Delete.
14198 (irange::legacy_intersect): Delete.
14199 (union_ranges): Delete.
14200 (irange::legacy_union): Delete.
14201 (irange::legacy_verbose_union_): Delete.
14202 (irange::legacy_verbose_intersect): Delete.
14203 (irange::irange_union): Remove legacy support.
14204 (irange::irange_intersect): Same.
14205 (irange::intersect): Same.
14206 (irange::invert): Same.
14207 (ranges_from_anti_range): Delete.
14208 (gt_pch_nx): Adjust for legacy removal.
14210 (range_tests_legacy): Delete.
14211 (range_tests_misc): Adjust for legacy removal.
14212 (range_tests): Same.
14213 * value-range.h (class irange): Same.
14214 (irange::legacy_mode_p): Delete.
14215 (ranges_from_anti_range): Delete.
14216 (irange::nonzero_p): Adjust for legacy removal.
14217 (irange::lower_bound): Same.
14218 (irange::upper_bound): Same.
14219 (irange::union_): Same.
14220 (irange::intersect): Same.
14221 (irange::set_nonzero): Same.
14222 (irange::set_zero): Same.
14223 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
14225 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14227 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
14228 of range_has_numeric_bounds_p with irange API.
14229 (range_has_numeric_bounds_p): Delete.
14230 * value-range.h (range_has_numeric_bounds_p): Delete.
14232 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14234 * tree-data-ref.cc (compute_distributive_range): Replace uses of
14235 range_int_cst_p with irange API.
14236 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
14237 * tree-vrp.h (range_int_cst_p): Delete.
14238 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
14239 range_int_cst_p with irange API.
14240 (vr_set_zero_nonzero_bits): Same.
14241 (range_fits_type_p): Same.
14242 (simplify_using_ranges::simplify_casted_cond): Same.
14243 * tree-vrp.cc (range_int_cst_p): Remove.
14245 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14247 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
14249 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14251 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
14252 API uses to new API.
14253 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
14254 * internal-fn.cc (get_min_precision): Same.
14256 * tree-affine.cc (expr_to_aff_combination): Same.
14257 * tree-data-ref.cc (dr_step_indicator): Same.
14258 * tree-dfa.cc (get_ref_base_and_extent): Same.
14259 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
14260 * tree-ssa-phiopt.cc (two_value_replacement): Same.
14261 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
14262 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
14263 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
14264 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
14265 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
14266 * tree.cc (get_range_pos_neg): Same.
14268 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14270 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
14271 vrange::dump instead of ad-hoc dumper.
14272 * tree-ssa-strlen.cc (dump_strlen_info): Same.
14273 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
14276 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14278 * range-op.cc (operator_cast::op1_range): Use
14279 create_possibly_reversed_range.
14280 (operator_bitwise_and::simple_op1_range_solver): Same.
14281 * value-range.cc (swap_out_of_order_endpoints): Delete.
14282 (irange::set): Remove call to swap_out_of_order_endpoints.
14284 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14286 * builtins.cc (determine_block_size): Convert use of legacy API to
14288 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
14289 (array_bounds_checker::check_array_ref): Same.
14290 * gimple-ssa-warn-restrict.cc
14291 (builtin_memref::extend_offset_range): Same.
14292 * ipa-cp.cc (ipcp_store_vr_results): Same.
14293 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
14294 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
14295 (ipa_write_jump_function): Same.
14296 * pointer-query.cc (get_size_range): Same.
14297 * tree-data-ref.cc (split_constant_offset): Same.
14298 * tree-ssa-strlen.cc (get_range): Same.
14299 (maybe_diag_stxncpy_trunc): Same.
14300 (strlen_pass::get_len_or_size): Same.
14301 (strlen_pass::count_nonzero_bytes_addr): Same.
14302 * tree-vect-patterns.cc (vect_get_range_info): Same.
14303 * value-range.cc (irange::maybe_anti_range): Remove.
14304 (get_legacy_range): New.
14305 (irange::copy_to_legacy): Use get_legacy_range.
14306 (ranges_from_anti_range): Same.
14307 * value-range.h (class irange): Remove maybe_anti_range.
14308 (get_legacy_range): New.
14309 * vr-values.cc (check_for_binary_op_overflow): Convert use of
14310 legacy API to get_legacy_range.
14311 (compare_ranges): Same.
14312 (compare_range_with_value): Same.
14313 (bounds_of_var_in_loop): Same.
14314 (find_case_label_ranges): Same.
14315 (simplify_using_ranges::simplify_switch_using_ranges): Same.
14317 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14319 * value-range-pretty-print.cc (vrange_printer::visit): Remove
14321 * value-range.cc (irange::constant_p): Remove.
14322 (irange::get_nonzero_bits_from_range): Remove constant_p use.
14323 * value-range.h (class irange): Remove constant_p.
14324 (irange::num_pairs): Remove constant_p use.
14326 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14328 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
14330 (irange::set): Same.
14331 (irange::legacy_lower_bound): Same.
14332 (irange::legacy_upper_bound): Same.
14333 (irange::contains_p): Same.
14334 (range_tests_legacy): Same.
14335 (irange::normalize_addresses): Remove.
14336 (irange::normalize_symbolics): Remove.
14337 (irange::symbolic_p): Remove.
14338 * value-range.h (class irange): Remove symbolic_p,
14339 normalize_symbolics, and normalize_addresses.
14340 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
14341 Remove symbolics support.
14343 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14345 * value-range.cc (irange::may_contain_p): Remove.
14346 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
14347 usage with contains_p.
14348 * vr-values.cc (compare_range_with_value): Same.
14350 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14352 * tree-vrp.cc (supported_types_p): Remove.
14353 (defined_ranges_p): Remove.
14354 (range_fold_binary_expr): Remove.
14355 (range_fold_unary_expr): Remove.
14356 * tree-vrp.h (range_fold_unary_expr): Remove.
14357 (range_fold_binary_expr): Remove.
14359 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14361 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
14362 (ipa_value_range_from_jfunc): Same.
14363 (propagate_vr_across_jump_function): Same.
14364 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
14365 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
14366 * vr-values.cc (bounds_of_var_in_loop): Same.
14368 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14370 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
14371 Add irange argument.
14372 (check_out_of_bounds_and_warn): Remove check for vr.
14373 (array_bounds_checker::check_array_ref): Remove pointer qualifier
14374 for vr and adjust accordingly.
14375 * gimple-array-bounds.h (get_value_range): Add irange argument.
14376 * value-query.cc (class equiv_allocator): Delete.
14377 (range_query::get_value_range): Delete.
14378 (range_query::range_query): Remove allocator access.
14379 (range_query::~range_query): Same.
14380 * value-query.h (get_value_range): Delete.
14382 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
14383 call to get_value_range.
14384 (check_for_binary_op_overflow): Same.
14385 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
14386 (simplify_using_ranges::simplify_abs_using_ranges): Same.
14387 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
14388 (simplify_using_ranges::simplify_casted_cond): Same.
14389 (simplify_using_ranges::simplify_switch_using_ranges): Same.
14390 (simplify_using_ranges::two_valued_val_range_p): Same.
14392 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14395 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
14397 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
14398 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
14399 (simplify_using_ranges::legacy_fold_cond): ...this.
14400 (simplify_using_ranges::fold_cond): Rename
14401 vrp_evaluate_conditional_warnv_with_ops to
14402 legacy_fold_cond_overflow.
14403 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
14404 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
14405 legacy_fold_cond_overflow respectively.
14407 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14409 * vr-values.cc (get_vr_for_comparison): Remove.
14410 (compare_name_with_value): Same.
14411 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
14412 compare_name_with_value.
14413 * vr-values.h: Remove compare_name_with_value.
14414 Remove get_vr_for_comparison.
14416 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
14418 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
14419 (bswapsi2): New define_insn.
14420 (swaphi): New define_insn to exchange two registers (swpw).
14421 (define_peephole2): Recognize exchange of registers as swaphi.
14423 2023-04-26 Richard Biener <rguenther@suse.de>
14425 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
14427 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
14428 * predict.cc (apply_return_prediction): Likewise.
14429 * sese.cc (set_ifsese_condition): Likewise. Simplify.
14430 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
14431 (make_edges_bb): Likewise.
14432 (make_cond_expr_edges): Likewise.
14433 (end_recording_case_labels): Likewise.
14434 (make_gimple_asm_edges): Likewise.
14435 (cleanup_dead_labels): Likewise.
14436 (group_case_labels): Likewise.
14437 (gimple_can_merge_blocks_p): Likewise.
14438 (gimple_merge_blocks): Likewise.
14439 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
14440 (gimple_duplicate_sese_tail): Avoid last_stmt.
14441 (find_loop_dist_alias): Likewise.
14442 (gimple_block_ends_with_condjump_p): Likewise.
14443 (gimple_purge_dead_eh_edges): Likewise.
14444 (gimple_purge_dead_abnormal_call_edges): Likewise.
14445 (pass_warn_function_return::execute): Likewise.
14446 (execute_fixup_cfg): Likewise.
14447 * tree-eh.cc (redirect_eh_edge_1): Likewise.
14448 (pass_lower_resx::execute): Likewise.
14449 (pass_lower_eh_dispatch::execute): Likewise.
14450 (cleanup_empty_eh): Likewise.
14451 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
14452 (predicate_bbs): Likewise.
14453 (ifcvt_split_critical_edges): Likewise.
14454 * tree-loop-distribution.cc (create_edge_for_control_dependence):
14456 (loop_distribution::transform_reduction_loop): Likewise.
14457 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
14458 (try_transform_to_exit_first_loop_alt): Likewise.
14459 (transform_to_exit_first_loop): Likewise.
14460 (create_parallel_loop): Likewise.
14461 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
14462 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
14463 (eliminate_unnecessary_stmts): Likewise.
14465 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
14467 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
14468 (pass_tree_ifcombine::execute): Likewise.
14469 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
14470 (should_duplicate_loop_header_p): Likewise.
14471 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
14472 (tree_estimate_loop_size): Likewise.
14473 (try_unroll_loop_completely): Likewise.
14474 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
14475 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
14476 (canonicalize_loop_ivs): Likewise.
14477 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
14478 (bound_difference): Likewise.
14479 (number_of_iterations_popcount): Likewise.
14480 (number_of_iterations_cltz): Likewise.
14481 (number_of_iterations_cltz_complement): Likewise.
14482 (simplify_using_initial_conditions): Likewise.
14483 (number_of_iterations_exit_assumptions): Likewise.
14484 (loop_niter_by_eval): Likewise.
14485 (estimate_numbers_of_iterations): Likewise.
14487 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14489 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
14491 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
14494 * config/rs6000/rs6000-builtins.def
14495 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
14496 __builtin_vsx_scalar_cmp_exp_qp_lt,
14497 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
14500 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
14503 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
14504 easy_vector_constant with const_vector_each_byte_same, add
14505 handlings in preparation for !easy_vector_constant, and update
14506 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
14507 * config/rs6000/predicates.md (const_vector_each_byte_same): New
14510 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14512 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
14513 (*pred_ltge<mode>_merge_tie_mask): Ditto.
14514 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
14515 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
14516 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
14517 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
14518 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
14520 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14522 * config/riscv/vector.md: Fix redundant vmv1r.v.
14524 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14526 * config/riscv/vector.md: Fix RA constraint.
14528 2023-04-26 Pan Li <pan2.li@intel.com>
14531 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
14532 check for vn_reference equal.
14534 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14536 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
14537 auto-vectorization preference.
14538 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
14539 auto-vectorization.
14540 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
14542 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
14544 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
14545 and bclridisi_nottwobits patterns.
14546 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
14547 predicate to avoid splitting arith constants.
14548 (const_nottwobits_not_arith_operand): New predicate.
14550 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
14552 * recog.cc (peep2_attempt, peep2_update_life): Correct
14553 head-comment description of parameter match_len.
14555 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
14557 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
14558 riscv_split_symbol() drop in_splitter arg.
14559 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
14560 riscv_split_symbol() drop in_splitter arg.
14561 riscv_force_temporary() drop in_splitter arg.
14562 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
14563 riscv_split_symbol() drop in_splitter arg.
14565 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
14567 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
14568 superfluous debug temporaries for single GIMPLE assignments.
14570 2023-04-25 Richard Biener <rguenther@suse.de>
14572 PR tree-optimization/109609
14573 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
14575 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
14576 the size given by arg_max_access_size_given_by_arg_p as
14577 maximum, not exact, size.
14579 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14582 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
14583 (orn<mode>3<vczle><vczbe>): ... This.
14584 (bic<mode>3): Rename to...
14585 (bic<mode>3<vczle><vczbe>): ... This.
14586 (<su><maxmin><mode>3): Rename to...
14587 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
14589 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14591 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
14592 * config/aarch64/iterators.md (VQDIV): New mode iterator.
14593 (vnx2di): New mode attribute.
14595 2023-04-25 Richard Biener <rguenther@suse.de>
14597 PR rtl-optimization/109585
14598 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
14600 2023-04-25 Jakub Jelinek <jakub@redhat.com>
14603 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
14604 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
14605 is larger than signed int maximum.
14607 2023-04-25 Martin Liska <mliska@suse.cz>
14609 * doc/gcov.texi: Document the new "calls" field and document
14610 the API bump. Mention also "block_ids" for lines.
14611 * gcov.cc (output_intermediate_json_line): Output info about
14612 calls and extend branches as well.
14613 (generate_results): Bump version to 2.
14614 (output_line_details): Use block ID instead of a non-sensual
14617 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
14619 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
14620 length attribute for the first (memory operand) alternative.
14622 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
14624 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
14625 * config/aarch64/constraints.md: Make "Umn" relaxed memory
14627 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
14629 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
14631 * value-range.cc (frange::set): Adjust constructor.
14632 * value-range.h (nan_state::nan_state): Replace default
14633 constructor with one taking an argument.
14635 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
14637 * ipa-cp.cc (ipa_range_contains_p): New.
14638 (decide_whether_version_node): Use it.
14640 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14642 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
14643 simplify two successive VEC_PERM_EXPRs with same VLA mask,
14644 where mask chooses elements in reverse order.
14646 2023-04-24 Andrew Pinski <apinski@marvell.com>
14648 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
14649 and support diamond shaped basic block form.
14650 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
14652 2023-04-24 Andrew Pinski <apinski@marvell.com>
14654 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
14655 Instead of calling last_and_only_stmt, look for the last statement
14658 2023-04-24 Andrew Pinski <apinski@marvell.com>
14660 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
14662 (match_simplify_replacement): Call
14663 empty_bb_or_one_feeding_into_p instead of doing it inline.
14665 2023-04-24 Andrew Pinski <apinski@marvell.com>
14667 PR tree-optimization/68894
14668 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
14669 continue for the do_hoist_loads diamond case.
14671 2023-04-24 Andrew Pinski <apinski@marvell.com>
14673 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
14674 code for better code readability.
14676 2023-04-24 Andrew Pinski <apinski@marvell.com>
14678 PR tree-optimization/109604
14679 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
14680 diamond form check from ...
14681 (minmax_replacement): Here.
14683 2023-04-24 Patrick Palka <ppalka@redhat.com>
14685 * tree.cc (strip_array_types): Don't define here.
14686 (is_typedef_decl): Don't define here.
14687 (typedef_variant_p): Don't define here.
14688 * tree.h (strip_array_types): Define here.
14689 (is_typedef_decl): Define here.
14690 (typedef_variant_p): Define here.
14692 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
14694 * doc/generic.texi (OpenMP): Add != to allowed
14695 conditions and state that vars can be unsigned.
14696 * tree.def (OMP_FOR): Likewise.
14698 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14700 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
14702 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14704 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
14705 Remove explicit Solaris 11 references.
14707 (Options specification, --with-gnu-as): as and gas always differ
14709 Remove /usr/ccs/bin reference.
14710 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
14711 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
14712 (*-*-solaris2*): ... here.
14713 Update bundled GCC versions.
14714 Don't refer to pre-built binaries.
14715 Remove /bin/sh warning.
14716 Update assembler, linker recommendations.
14717 Document GNAT bootstrap compiler.
14718 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
14719 (sparc64-*-solaris2*): Move content...
14720 (sparcv9-*-solaris2*): ...here.
14721 Add GDC for 64-bit bootstrap compilers.
14723 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14726 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
14728 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
14731 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14733 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
14734 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
14735 (aarch64_<su>abal2<mode>): New define_expand.
14736 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
14737 (aarch64_rtx_costs): Handle ABD rtxes.
14738 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
14739 * config/aarch64/iterators.md (ABAL2): Delete.
14740 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
14742 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14744 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
14745 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
14746 (<sur>sadv16qi): Rename to...
14747 (<su>sadv16qi): ... This. Adjust for the above.
14748 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
14749 (<su>sad<vsi2qi>): ... This. Adjust for the above.
14750 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
14751 * config/aarch64/iterators.md (ABAL): Delete.
14752 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
14754 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14756 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
14757 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
14758 (aarch64_<su>abdl2<mode>): New define_expand.
14759 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
14760 * config/aarch64/iterators.md (ABDL2): Delete.
14761 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
14763 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14765 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
14766 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
14768 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
14769 * config/aarch64/iterators.md (ABDL): Delete.
14770 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
14772 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14774 * config/aarch64/aarch64-simd.md
14775 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
14777 2023-04-24 Richard Biener <rguenther@suse.de>
14779 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
14781 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
14783 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
14784 (set_switch_stmt_execution_predicate): Likewise.
14785 (phi_result_unknown_predicate): Likewise.
14786 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
14787 (ipa_analyze_indirect_call_uses): Likewise.
14788 * predict.cc (predict_iv_comparison): Likewise.
14789 (predict_extra_loop_exits): Likewise.
14790 (predict_loops): Likewise.
14791 (tree_predict_by_opcode): Likewise.
14792 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
14794 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
14795 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
14796 (replace_phi_edge_with_variable): Likewise.
14797 (two_value_replacement): Likewise.
14798 (value_replacement): Likewise.
14799 (minmax_replacement): Likewise.
14800 (spaceship_replacement): Likewise.
14801 (cond_removal_in_builtin_zero_pattern): Likewise.
14802 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
14803 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
14804 (vn_phi_lookup): Likewise.
14805 (vn_phi_insert): Likewise.
14806 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
14807 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
14809 (back_threader_profitability::possibly_profitable_path_p):
14811 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
14813 * tree-switch-conversion.cc (pass_convert_switch::execute):
14815 (pass_lower_switch<O0>::execute): Likewise.
14816 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
14817 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
14818 * tree-vect-slp.cc (vect_slp_function): Likewise.
14819 * tree-vect-stmts.cc (cfun_returns): Likewise.
14820 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
14821 (vect_loop_dist_alias_call): Likewise.
14823 2023-04-24 Richard Biener <rguenther@suse.de>
14825 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
14827 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14829 * config/riscv/riscv-vsetvl.cc
14830 (vector_infos_manager::all_avail_in_compatible_p): New function.
14831 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
14832 * config/riscv/riscv-vsetvl.h: New function.
14834 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14836 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
14837 comment for cleanup_insns.
14839 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14841 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
14842 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
14843 with the fault first load property.
14845 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14847 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
14848 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
14850 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14853 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
14854 (aarch64_addp<mode><vczle><vczbe>): ... This.
14856 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
14858 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
14859 provide reasonable values for common arithmetic operations and
14860 immediate operands (in several machine modes).
14862 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
14864 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
14865 format specifier to output high_part register name of SImode reg.
14866 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
14867 (zero_extendqihi2): Fix lengths, consistent formatting and add
14868 "and Rx,#255" alternative, for documentation purposes.
14869 (zero_extendhisi2): New define_insn.
14871 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
14873 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
14874 SImode shifts by two by performing a single bit SImode shift twice.
14876 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
14878 PR tree-optimization/109593
14879 * value-range.cc (frange::operator==): Handle NANs.
14881 2023-04-23 liuhongt <hongtao.liu@intel.com>
14883 PR rtl-optimization/108707
14884 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
14885 GENERAL_REGS when preferred reg_class is not known.
14887 2023-04-22 Andrew Pinski <apinski@marvell.com>
14889 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
14890 Change the code around slightly to move diamond
14891 handling for do_store_elim/do_hoist_loads out of
14894 2023-04-22 Andrew Pinski <apinski@marvell.com>
14896 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
14897 Remove check on empty_block_p.
14899 2023-04-22 Jakub Jelinek <jakub@redhat.com>
14901 PR bootstrap/109589
14902 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
14903 * realmpfr.h (class auto_mpfr): Likewise.
14905 2023-04-22 Jakub Jelinek <jakub@redhat.com>
14907 PR tree-optimization/109583
14908 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
14909 if vec_mode is not VECTOR_MODE_P.
14911 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
14912 Ondrej Kubanek <kubanek0ondrej@gmail.com>
14914 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
14915 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
14916 loop profile and bounds after header duplication.
14917 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
14918 Break out from try_peel_loop; fix handling of 0 iterations.
14919 (try_peel_loop): Use adjust_loop_info_after_peeling.
14921 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
14923 PR tree-optimization/109546
14924 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
14925 not fold conditions with ADDR_EXPR early.
14927 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14929 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
14930 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
14932 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
14933 (*aarch64_<optab><mode>3_zero): Define.
14934 (*aarch64_<optab><mode>3_cssc): Likewise.
14935 * config/aarch64/iterators.md (maxminand): New code attribute.
14937 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14940 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
14941 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
14943 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
14944 (aarch64_override_options_internal): Handle the above.
14945 (aarch64_output_load_tp): New function.
14946 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
14947 aarch64_output_load_tp.
14948 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
14949 (mtp=): New option.
14950 * doc/invoke.texi (AArch64 Options): Document -mtp=.
14952 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14955 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
14956 (add_vec_concat_subst_be): Likewise.
14959 (add<mode>3): Rename to...
14960 (add<mode>3<vczle><vczbe>): ... This.
14961 (sub<mode>3): Rename to...
14962 (sub<mode>3<vczle><vczbe>): ... This.
14963 (mul<mode>3): Rename to...
14964 (mul<mode>3<vczle><vczbe>): ... This.
14965 (and<mode>3): Rename to...
14966 (and<mode>3<vczle><vczbe>): ... This.
14967 (ior<mode>3): Rename to...
14968 (ior<mode>3<vczle><vczbe>): ... This.
14969 (xor<mode>3): Rename to...
14970 (xor<mode>3<vczle><vczbe>): ... This.
14971 * config/aarch64/iterators.md (VDZ): Define.
14973 2023-04-21 Patrick Palka <ppalka@redhat.com>
14975 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
14978 2023-04-21 Jan Hubicka <jh@suse.cz>
14980 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
14983 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
14985 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
14986 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
14988 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14990 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
14991 force_reg instead of copy_to_mode_reg.
14992 (aarch64_expand_vector_init): Likewise.
14994 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
14996 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
14997 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
14998 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
14999 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
15000 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
15001 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
15002 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
15003 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
15004 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
15005 * config/i386/predicates.md (index_register_operand):
15006 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
15007 * config/i386/i386.cc (ix86_legitimate_address_p): Use
15008 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
15009 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
15011 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
15012 Ondrej Kubanek <kubanek0ondrej@gmail.com>
15014 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
15017 2023-04-21 Richard Biener <rguenther@suse.de>
15019 * is-a.h (safe_is_a): New.
15021 2023-04-21 Richard Biener <rguenther@suse.de>
15023 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
15024 (gphi_iterator::operator*): Likewise.
15026 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
15027 Michal Jires <michal@jires.eu>
15029 * ipa-inline.cc (class inline_badness): New class.
15030 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
15032 (update_edge_key): Update.
15033 (lookup_recursive_calls): Likewise.
15034 (recursive_inlining): Likewise.
15035 (add_new_edges_to_heap): Likewise.
15036 (inline_small_functions): Likewise.
15038 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
15040 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
15042 2023-04-21 Richard Biener <rguenther@suse.de>
15044 PR tree-optimization/109573
15045 * tree-vect-loop.cc (vectorizable_live_operation): Allow
15046 unhandled SSA copy as well. Demote assert to checking only.
15048 2023-04-21 Richard Biener <rguenther@suse.de>
15050 * df-core.cc (df_analyze): Compute RPO on the reverse graph
15051 for DF_BACKWARD problems.
15052 (loop_post_order_compute): Rename to ...
15053 (loop_rev_post_order_compute): ... this, compute a RPO.
15054 (loop_inverted_post_order_compute): Rename to ...
15055 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
15056 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
15057 problems, RPO on the inverted graph for DF_BACKWARD.
15059 2023-04-21 Richard Biener <rguenther@suse.de>
15061 * cfganal.h (inverted_rev_post_order_compute): Rename
15063 (inverted_post_order_compute): ... this. Add struct function
15064 argument, change allocation to a C array.
15065 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
15066 * lcm.cc (compute_antinout_edge): Adjust.
15067 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
15068 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
15069 * tree-ssa-pre.cc (compute_antic): Likewise.
15071 2023-04-21 Richard Biener <rguenther@suse.de>
15073 * df.h (df_d::postorder_inverted): Change back to int *,
15075 * df-core.cc (rest_of_handle_df_finish): Adjust.
15076 (df_analyze_1): Likewise.
15077 (df_analyze): For DF_FORWARD problems use RPO on the forward
15079 (loop_inverted_post_order_compute): Adjust API.
15080 (df_analyze_loop): Adjust.
15081 (df_get_n_blocks): Likewise.
15082 (df_get_postorder): Likewise.
15084 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15087 * config/riscv/riscv-vsetvl.cc
15088 (vector_infos_manager::all_empty_predecessor_p): New function.
15089 (pass_vsetvl::backward_demand_fusion): Ditto.
15090 * config/riscv/riscv-vsetvl.h: Ditto.
15092 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
15095 * config/riscv/generic.md: Change standard names to insn names.
15097 2023-04-21 Richard Biener <rguenther@suse.de>
15099 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
15100 (compute_laterin): Use RPO.
15101 (compute_available): Likewise.
15103 2023-04-21 Peng Fan <fanpeng@loongson.cn>
15105 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
15107 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15110 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
15111 (vector_insn_info::skip_avl_compatible_p): Ditto.
15112 (vector_insn_info::merge): Remove default value.
15113 (pass_vsetvl::compute_local_backward_infos): Ditto.
15114 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
15115 * config/riscv/riscv-vsetvl.h: Ditto.
15117 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
15119 * doc/extend.texi (Common Function Attributes): Remove duplicate
15122 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
15124 PR tree-optimization/109564
15125 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
15126 UNDEFINED range names when deciding if all PHI arguments are the same,
15128 2023-04-20 Jakub Jelinek <jakub@redhat.com>
15130 PR tree-optimization/109011
15131 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
15132 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
15133 .CTZ (X) = PREC - .POPCOUNT (X | -X).
15135 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
15137 * lra-constraints.cc (match_reload): Exclude some hard regs for
15138 multi-reg inout reload pseudos used in asm in different mode.
15140 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
15142 * config/arm/arm.cc (thumb1_legitimate_address_p):
15143 Use VIRTUAL_REGISTER_P predicate.
15144 (arm_eliminable_register): Ditto.
15145 * config/avr/avr.md (push<mode>_1): Ditto.
15146 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
15147 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
15148 * config/i386/predicates.md (register_no_elim_operand): Ditto.
15149 * config/iq2000/predicates.md (call_insn_operand): Ditto.
15150 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
15152 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
15155 * config/i386/predicates.md (extract_operator): New predicate.
15156 * config/i386/i386.md (any_extract): Remove code iterator.
15157 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
15158 (*cmpqi_ext<mode>_1): Ditto.
15159 (*cmpqi_ext<mode>_2): Ditto.
15160 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
15161 (*cmpqi_ext<mode>_3): Ditto.
15162 (*cmpqi_ext<mode>_4): Ditto.
15163 (*extzvqi_mem_rex64): Ditto.
15165 (*insvqi_2): Ditto.
15166 (*extendqi<SWI24:mode>_ext_1): Ditto.
15167 (*addqi_ext<mode>_0): Ditto.
15168 (*addqi_ext<mode>_1): Ditto.
15169 (*addqi_ext<mode>_2): Ditto.
15170 (*subqi_ext<mode>_0): Ditto.
15171 (*subqi_ext<mode>_2): Ditto.
15172 (*testqi_ext<mode>_1): Ditto.
15173 (*testqi_ext<mode>_2): Ditto.
15174 (*andqi_ext<mode>_0): Ditto.
15175 (*andqi_ext<mode>_1): Ditto.
15176 (*andqi_ext<mode>_1_cc): Ditto.
15177 (*andqi_ext<mode>_2): Ditto.
15178 (*<any_or:code>qi_ext<mode>_0): Ditto.
15179 (*<any_or:code>qi_ext<mode>_1): Ditto.
15180 (*<any_or:code>qi_ext<mode>_2): Ditto.
15181 (*xorqi_ext<mode>_1_cc): Ditto.
15182 (*negqi_ext<mode>_2): Ditto.
15183 (*ashlqi_ext<mode>_2): Ditto.
15184 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
15186 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
15189 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
15190 <bitmanip_insn> as the type to allow for fine grained control of
15191 scheduling these insns.
15192 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
15194 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
15195 pcnt, signed and unsigned min/max.
15197 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15198 kito-cheng <kito.cheng@sifive.com>
15200 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
15202 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15203 kito-cheng <kito.cheng@sifive.com>
15206 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
15207 (pass_vsetvl::cleanup_insns): Fix bug.
15209 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
15211 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
15212 (ldexp<mode>3): Delete.
15213 (ldexp<mode>3<exec>): Change "B" to "A".
15215 2023-04-20 Jakub Jelinek <jakub@redhat.com>
15216 Jonathan Wakely <jwakely@redhat.com>
15218 * tree.h (built_in_function_equal_p): New helper function.
15219 (fndecl_built_in_p): Turn into variadic template to support
15220 1 or more built_in_function arguments.
15221 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
15222 * gimplify.cc (goa_stabilize_expr): Likewise.
15223 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
15224 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
15225 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
15226 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
15227 cgraph_update_edges_for_call_stmt_node,
15228 cgraph_edge::verify_corresponds_to_fndecl,
15229 cgraph_node::verify_node): Likewise.
15230 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
15231 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
15232 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
15234 2023-04-20 Jakub Jelinek <jakub@redhat.com>
15236 PR tree-optimization/109011
15237 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
15238 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
15239 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
15240 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
15241 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
15243 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
15245 2023-04-20 Richard Biener <rguenther@suse.de>
15247 * df-core.cc (rest_of_handle_df_initialize): Remove
15248 computation of df->postorder, df->postorder_inverted and
15251 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15253 * common/config/i386/i386-common.cc
15254 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
15255 (ix86_handle_option): Set AVX flag for VAES.
15256 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
15257 Add OPTION_MASK_ISA2_VAES_UNSET.
15258 (def_builtin): Share builtin between AES and VAES.
15259 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
15261 * config/i386/i386.md (aes): New isa attribute.
15262 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
15263 (aesenclast): Ditto.
15265 (aesdeclast): Ditto.
15266 * config/i386/vaesintrin.h: Remove redundant avx target push.
15267 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
15268 (_mm_aesdeclast_si128): Ditto.
15269 (_mm_aesenc_si128): Ditto.
15270 (_mm_aesenclast_si128): Ditto.
15272 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
15274 * config/i386/avx2intrin.h
15275 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
15276 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
15277 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
15278 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
15279 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
15280 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
15281 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
15282 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
15283 (_mm_reduce_add_epi16): New instrinsics.
15284 (_mm_reduce_mul_epi16): Ditto.
15285 (_mm_reduce_and_epi16): Ditto.
15286 (_mm_reduce_or_epi16): Ditto.
15287 (_mm_reduce_max_epi16): Ditto.
15288 (_mm_reduce_max_epu16): Ditto.
15289 (_mm_reduce_min_epi16): Ditto.
15290 (_mm_reduce_min_epu16): Ditto.
15291 (_mm256_reduce_add_epi16): Ditto.
15292 (_mm256_reduce_mul_epi16): Ditto.
15293 (_mm256_reduce_and_epi16): Ditto.
15294 (_mm256_reduce_or_epi16): Ditto.
15295 (_mm256_reduce_max_epi16): Ditto.
15296 (_mm256_reduce_max_epu16): Ditto.
15297 (_mm256_reduce_min_epi16): Ditto.
15298 (_mm256_reduce_min_epu16): Ditto.
15299 (_mm_reduce_add_epi8): Ditto.
15300 (_mm_reduce_mul_epi8): Ditto.
15301 (_mm_reduce_and_epi8): Ditto.
15302 (_mm_reduce_or_epi8): Ditto.
15303 (_mm_reduce_max_epi8): Ditto.
15304 (_mm_reduce_max_epu8): Ditto.
15305 (_mm_reduce_min_epi8): Ditto.
15306 (_mm_reduce_min_epu8): Ditto.
15307 (_mm256_reduce_add_epi8): Ditto.
15308 (_mm256_reduce_mul_epi8): Ditto.
15309 (_mm256_reduce_and_epi8): Ditto.
15310 (_mm256_reduce_or_epi8): Ditto.
15311 (_mm256_reduce_max_epi8): Ditto.
15312 (_mm256_reduce_max_epu8): Ditto.
15313 (_mm256_reduce_min_epi8): Ditto.
15314 (_mm256_reduce_min_epu8): Ditto.
15315 * config/i386/avx512vlbwintrin.h:
15316 (_mm_mask_reduce_add_epi16): Ditto.
15317 (_mm_mask_reduce_mul_epi16): Ditto.
15318 (_mm_mask_reduce_and_epi16): Ditto.
15319 (_mm_mask_reduce_or_epi16): Ditto.
15320 (_mm_mask_reduce_max_epi16): Ditto.
15321 (_mm_mask_reduce_max_epu16): Ditto.
15322 (_mm_mask_reduce_min_epi16): Ditto.
15323 (_mm_mask_reduce_min_epu16): Ditto.
15324 (_mm256_mask_reduce_add_epi16): Ditto.
15325 (_mm256_mask_reduce_mul_epi16): Ditto.
15326 (_mm256_mask_reduce_and_epi16): Ditto.
15327 (_mm256_mask_reduce_or_epi16): Ditto.
15328 (_mm256_mask_reduce_max_epi16): Ditto.
15329 (_mm256_mask_reduce_max_epu16): Ditto.
15330 (_mm256_mask_reduce_min_epi16): Ditto.
15331 (_mm256_mask_reduce_min_epu16): Ditto.
15332 (_mm_mask_reduce_add_epi8): Ditto.
15333 (_mm_mask_reduce_mul_epi8): Ditto.
15334 (_mm_mask_reduce_and_epi8): Ditto.
15335 (_mm_mask_reduce_or_epi8): Ditto.
15336 (_mm_mask_reduce_max_epi8): Ditto.
15337 (_mm_mask_reduce_max_epu8): Ditto.
15338 (_mm_mask_reduce_min_epi8): Ditto.
15339 (_mm_mask_reduce_min_epu8): Ditto.
15340 (_mm256_mask_reduce_add_epi8): Ditto.
15341 (_mm256_mask_reduce_mul_epi8): Ditto.
15342 (_mm256_mask_reduce_and_epi8): Ditto.
15343 (_mm256_mask_reduce_or_epi8): Ditto.
15344 (_mm256_mask_reduce_max_epi8): Ditto.
15345 (_mm256_mask_reduce_max_epu8): Ditto.
15346 (_mm256_mask_reduce_min_epi8): Ditto.
15347 (_mm256_mask_reduce_min_epu8): Ditto.
15349 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15351 * common/config/i386/i386-common.cc
15352 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
15353 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
15354 (OPTION_MASK_ISA_AVX_UNSET):
15355 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
15356 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
15357 * config/i386/i386.md (vpclmulqdqvl): New.
15358 * config/i386/sse.md (pclmulqdq): Add evex encoding.
15359 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
15362 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15364 * config/i386/avx512vlbwintrin.h
15365 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
15366 (_mm_mask_blend_epi8): Ditto.
15367 (_mm256_mask_blend_epi16): Ditto.
15368 (_mm256_mask_blend_epi8): Ditto.
15369 * config/i386/avx512vlintrin.h
15370 (_mm256_mask_blend_pd): Ditto.
15371 (_mm256_mask_blend_ps): Ditto.
15372 (_mm256_mask_blend_epi64): Ditto.
15373 (_mm256_mask_blend_epi32): Ditto.
15374 (_mm_mask_blend_pd): Ditto.
15375 (_mm_mask_blend_ps): Ditto.
15376 (_mm_mask_blend_epi64): Ditto.
15377 (_mm_mask_blend_epi32): Ditto.
15378 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
15379 (VF_AVX512HFBFVL): Move it before the first usage.
15380 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
15381 to VF_AVX512HFBFVL.
15383 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15385 * common/config/i386/i386-common.cc
15386 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
15387 to OPTION_MASK_ISA_AVX512BW_SET.
15388 (OPTION_MASK_ISA_AVX512F_UNSET):
15389 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
15390 (OPTION_MASK_ISA_AVX512BW_UNSET):
15391 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
15392 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
15393 * config/i386/avx512vbmi2vlintrin.h: Ditto.
15394 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
15395 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
15396 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
15397 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
15399 (compressstore<mode>_mask): Ditto.
15400 (expand<mode>_mask): Ditto.
15401 (expand<mode>_maskz): Ditto.
15402 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
15403 VI12_VI48F_AVX512VL.
15405 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15407 * common/config/i386/i386-common.cc
15408 (OPTION_MASK_ISA_AVX512BITALG_SET):
15409 Change OPTION_MASK_ISA_AVX512F_SET
15410 to OPTION_MASK_ISA_AVX512BW_SET.
15411 (OPTION_MASK_ISA_AVX512F_UNSET):
15412 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
15413 (OPTION_MASK_ISA_AVX512BW_UNSET):
15414 Add OPTION_MASK_ISA_AVX512BITALG_SET.
15415 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
15416 * config/i386/i386-builtin.def:
15417 Remove redundant OPTION_MASK_ISA_AVX512BW.
15418 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
15419 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
15420 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
15422 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15424 * config/i386/i386-expand.cc
15425 (ix86_check_builtin_isa_match): Correct wrong comments.
15426 Add a new macro SHARE_BUILTIN and refactor the current if
15429 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
15431 * config/i386/cpuid.h: Open a new section for Extended Features
15432 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
15435 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
15437 * config/i386/sse.md: Modify insn vperm{i,f}
15440 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
15442 * config/xtensa/xtensa-opts.h: New header.
15443 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
15444 xtensa_strict_align.
15445 * config/xtensa/xtensa.cc (xtensa_option_override): When
15446 -m[no-]strict-align is not specified in the command line set
15447 xtensa_strict_align to 0 if the hardware supports both unaligned
15448 loads and stores or to 1 otherwise.
15449 * config/xtensa/xtensa.opt (mstrict-align): New option.
15450 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
15452 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
15454 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
15457 2023-04-19 Andrew Pinski <apinski@marvell.com>
15459 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
15461 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15463 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
15464 (VECTOR_BOOL_MODE): Ditto.
15465 (ADJUST_NUNITS): Ditto.
15466 (ADJUST_ALIGNMENT): Ditto.
15467 (ADJUST_BYTESIZE): Ditto.
15468 (ADJUST_PRECISION): Ditto.
15469 (RVV_MODES): Ditto.
15470 (VECTOR_MODE_WITH_PREFIX): Ditto.
15471 * config/riscv/riscv-v.cc (ENTRY): Ditto.
15472 (get_vlmul): Ditto.
15473 (get_ratio): Ditto.
15474 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
15475 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
15476 (vbool64_t): Ditto.
15477 (vbool32_t): Ditto.
15478 (vbool16_t): Ditto.
15483 (vint8mf8_t): Ditto.
15484 (vuint8mf8_t): Ditto.
15485 (vint8mf4_t): Ditto.
15486 (vuint8mf4_t): Ditto.
15487 (vint8mf2_t): Ditto.
15488 (vuint8mf2_t): Ditto.
15489 (vint8m1_t): Ditto.
15490 (vuint8m1_t): Ditto.
15491 (vint8m2_t): Ditto.
15492 (vuint8m2_t): Ditto.
15493 (vint8m4_t): Ditto.
15494 (vuint8m4_t): Ditto.
15495 (vint8m8_t): Ditto.
15496 (vuint8m8_t): Ditto.
15497 (vint16mf4_t): Ditto.
15498 (vuint16mf4_t): Ditto.
15499 (vint16mf2_t): Ditto.
15500 (vuint16mf2_t): Ditto.
15501 (vint16m1_t): Ditto.
15502 (vuint16m1_t): Ditto.
15503 (vint16m2_t): Ditto.
15504 (vuint16m2_t): Ditto.
15505 (vint16m4_t): Ditto.
15506 (vuint16m4_t): Ditto.
15507 (vint16m8_t): Ditto.
15508 (vuint16m8_t): Ditto.
15509 (vint32mf2_t): Ditto.
15510 (vuint32mf2_t): Ditto.
15511 (vint32m1_t): Ditto.
15512 (vuint32m1_t): Ditto.
15513 (vint32m2_t): Ditto.
15514 (vuint32m2_t): Ditto.
15515 (vint32m4_t): Ditto.
15516 (vuint32m4_t): Ditto.
15517 (vint32m8_t): Ditto.
15518 (vuint32m8_t): Ditto.
15519 (vint64m1_t): Ditto.
15520 (vuint64m1_t): Ditto.
15521 (vint64m2_t): Ditto.
15522 (vuint64m2_t): Ditto.
15523 (vint64m4_t): Ditto.
15524 (vuint64m4_t): Ditto.
15525 (vint64m8_t): Ditto.
15526 (vuint64m8_t): Ditto.
15527 (vfloat32mf2_t): Ditto.
15528 (vfloat32m1_t): Ditto.
15529 (vfloat32m2_t): Ditto.
15530 (vfloat32m4_t): Ditto.
15531 (vfloat32m8_t): Ditto.
15532 (vfloat64m1_t): Ditto.
15533 (vfloat64m2_t): Ditto.
15534 (vfloat64m4_t): Ditto.
15535 (vfloat64m8_t): Ditto.
15536 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
15537 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
15538 (riscv_convert_vector_bits): Ditto.
15539 * config/riscv/riscv.md:
15540 * config/riscv/vector-iterators.md:
15541 * config/riscv/vector.md
15542 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
15543 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
15544 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
15545 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
15546 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
15547 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
15548 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
15549 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
15550 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
15552 2023-04-19 Pan Li <pan2.li@intel.com>
15554 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
15555 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
15557 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
15561 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
15562 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
15563 for operand 0. Use any_extract code iterator.
15564 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
15565 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
15566 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
15567 (*cmpqi_ext<mode>_1): Use general_operand predicate
15568 for operand 1. Use any_extract code iterator.
15569 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
15570 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
15572 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15574 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
15575 (aarch64_uaddw2<mode>): Delete.
15576 (aarch64_ssubw2<mode>): Delete.
15577 (aarch64_usubw2<mode>): Delete.
15578 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
15580 2023-04-19 Richard Biener <rguenther@suse.de>
15582 * tree-ssa-structalias.cc (do_ds_constraint): Use
15583 solve_add_graph_edge.
15585 2023-04-19 Richard Biener <rguenther@suse.de>
15587 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
15589 (do_sd_constraint): ... here.
15591 2023-04-19 Richard Biener <rguenther@suse.de>
15593 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
15594 rejecting the merge when A contains only a non-local label.
15596 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
15598 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
15599 (VIRTUAL_REGISTER_NUM_P): Ditto.
15600 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
15601 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
15602 * function.cc (instantiate_decl_rtl): Ditto.
15603 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
15604 (nonzero_address_p): Ditto.
15605 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
15607 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
15609 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
15611 2023-04-19 Richard Biener <rguenther@suse.de>
15613 * system.h (auto_mpz::operator->()): New.
15614 * realmpfr.h (auto_mpfr::operator->()): New.
15615 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
15616 * real.cc (real_from_string): Likewise.
15617 (dconst_e_ptr): Likewise.
15618 (dconst_sqrt2_ptr): Likewise.
15619 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
15621 (bound_difference_of_offsetted_base): Likewise.
15622 (number_of_iterations_ne): Likewise.
15623 (number_of_iterations_lt_to_ne): Likewise.
15624 * ubsan.cc: Include realmpfr.h.
15625 (ubsan_instrument_float_cast): Use auto_mpfr.
15627 2023-04-19 Richard Biener <rguenther@suse.de>
15629 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
15630 edges, remove edges from escaped after special-casing them.
15632 2023-04-19 Richard Biener <rguenther@suse.de>
15634 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
15637 2023-04-19 Richard Biener <rguenther@suse.de>
15639 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
15640 to the LHS varinfo solution member.
15642 2023-04-19 Richard Biener <rguenther@suse.de>
15644 * tree-ssa-structalias.cc (topo_visit): Look at the real
15645 destination of edges.
15647 2023-04-19 Richard Biener <rguenther@suse.de>
15649 PR tree-optimization/44794
15650 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
15651 If an epilogue loop is required set its iteration upper bound.
15653 2023-04-19 Xi Ruoyao <xry111@xry111.site>
15656 * config/loongarch/loongarch-protos.h
15657 (loongarch_expand_block_move): Add a parameter as alignment RTX.
15658 * config/loongarch/loongarch.h:
15659 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
15660 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
15661 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
15662 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
15663 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
15664 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
15665 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
15666 Take the alignment from the parameter, but set it to
15667 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
15668 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
15669 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
15670 (loongarch_block_move_straight): When there are left-over bytes,
15671 half the mode size instead of falling back to byte mode at once.
15672 (loongarch_block_move_loop): Limit the length of loop body with
15673 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
15674 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
15675 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
15676 to loongarch_expand_block_move.
15678 2023-04-19 Xi Ruoyao <xry111@xry111.site>
15680 * config/loongarch/loongarch.cc
15681 (loongarch_setup_incoming_varargs): Don't save more GARs than
15682 cfun->va_list_gpr_size / UNITS_PER_WORD.
15684 2023-04-19 Richard Biener <rguenther@suse.de>
15686 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
15687 no epilogue condition.
15689 2023-04-19 Richard Biener <rguenther@suse.de>
15691 * gimple.h (gimple_assign_load): Outline...
15692 * gimple.cc (gimple_assign_load): ... here. Avoid
15693 get_base_address and instead just strip the outermost
15694 handled component, treating a remaining handled component
15697 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15699 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
15701 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
15703 2023-04-19 Jakub Jelinek <jakub@redhat.com>
15705 PR tree-optimization/109011
15706 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
15707 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
15708 CLZ, CTZ and FFS. Remove vargs variable, use
15709 gimple_build_call_internal rather than gimple_build_call_internal_vec.
15710 (vect_vect_recog_func_ptrs): Adjust popcount entry.
15712 2023-04-19 Jakub Jelinek <jakub@redhat.com>
15715 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
15716 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
15717 a new REG rather than the SUBREG.
15719 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
15721 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
15724 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15727 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
15728 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
15730 2023-04-19 Richard Biener <rguenther@suse.de>
15732 PR rtl-optimization/109237
15733 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
15734 TREE_VISITED on INSN_VAR_LOCATION_DECL.
15735 (delete_trivially_dead_insns): Maintain TREE_VISITED on
15736 active debug bind INSN_VAR_LOCATION_DECL.
15738 2023-04-19 Richard Biener <rguenther@suse.de>
15740 PR rtl-optimization/109237
15741 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
15743 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
15745 * doc/install.texi (enable-decimal-float): Add AArch64.
15747 2023-04-19 liuhongt <hongtao.liu@intel.com>
15749 PR rtl-optimization/109351
15750 * ira.cc (setup_class_subset_and_memory_move_costs): Check
15751 hard_regno_mode_ok before setting lowest memory move cost for
15752 the mode with different reg classes.
15754 2023-04-18 Jason Merrill <jason@redhat.com>
15756 * doc/invoke.texi: Remove stray @gol.
15758 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15760 * ifcvt.cc (cond_move_process_if_block): Consider the result of
15761 targetm.noce_conversion_profitable_p() when replacing the original
15762 sequence with the converted one.
15764 2023-04-18 Mark Harmstone <mark@harmstone.com>
15766 * common.opt (gcodeview): Add new option.
15767 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
15768 * opts.cc (command_handle_option): Similarly.
15769 * doc/invoke.texi: Add documentation for -gcodeview.
15771 2023-04-18 Andrew Pinski <apinski@marvell.com>
15773 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
15774 (make_pass_phiopt): Make execute out of line.
15775 (tree_ssa_cs_elim): Move code into ...
15776 (pass_cselim::execute): here.
15778 2023-04-18 Sam James <sam@gentoo.org>
15780 * system.h: Drop unused INCLUDE_PTHREAD_H.
15782 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
15784 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
15787 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
15789 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
15790 (bswapdi2, bswapsi2): Similarly.
15792 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
15795 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
15796 Use CODE_FOR_sse4_1_insertps_v4sf.
15797 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
15798 (expand_vec_perm_1): Call expand_vec_per_insertps.
15799 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
15800 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
15801 (@sse4_1_insertps_<mode>): New insn pattern.
15802 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
15803 pattern from sse4_1_insertps using VI4F_128 mode iterator.
15805 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15807 * value-range.cc (gt_ggc_mx): New.
15809 * value-range.h (class vrange): Add GTY marker.
15810 (class frange): Same.
15811 (gt_ggc_mx): Remove.
15812 (gt_pch_nx): Remove.
15814 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
15816 * lra-constraints.cc (constraint_unique): New.
15817 (process_address_1): Apply constraint_unique test.
15818 * recog.cc (constrain_operands): Allow relaxed memory
15821 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
15823 * doc/extend.texi (Target Builtins): Add RISC-V Vector
15825 (RISC-V Vector Intrinsics): Document GCC implemented which
15826 version of RISC-V vector intrinsics and its reference.
15828 2023-04-18 Richard Biener <rguenther@suse.de>
15830 PR middle-end/108786
15831 * bitmap.h (bitmap_clear_first_set_bit): New.
15832 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
15833 bitmap_first_set_bit and add optional clearing of the bit.
15834 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
15835 (bitmap_clear_first_set_bit): Likewise.
15836 * df-core.cc (df_worklist_dataflow_doublequeue): Use
15837 bitmap_clear_first_set_bit.
15838 * graphite-scop-detection.cc (scop_detection::merge_sese):
15840 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
15841 (sanitize_asan_mark_poison): Likewise.
15842 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
15843 * tree-into-ssa.cc (rewrite_blocks): Likewise.
15844 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
15845 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
15847 2023-04-18 Richard Biener <rguenther@suse.de>
15849 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
15850 (dump_sa_points_to_info): ... this function.
15851 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
15852 and call dump_sa_stats guarded with TDF_STATS.
15853 (ipa_pta_execute): Likewise.
15854 (compute_may_aliases): Guard dump_alias_info with
15855 TDF_DETAILS|TDF_ALIAS.
15857 2023-04-18 Andrew Pinski <apinski@marvell.com>
15859 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
15860 the expression that is being tried when TDF_FOLDING
15862 (phiopt_worker::match_simplify_replacement): Dump
15863 the sequence which was created by gimple_simplify_phiopt
15864 when TDF_FOLDING is true.
15866 2023-04-18 Andrew Pinski <apinski@marvell.com>
15868 * tree-ssa-phiopt.cc (match_simplify_replacement):
15869 Simplify code that does the movement slightly.
15871 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15873 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
15875 (rev16<mode>2): Rename to...
15876 (aarch64_rev16<mode>2_alt1): ... This.
15877 (rev16<mode>2_alt): Rename to...
15878 (*aarch64_rev16<mode>2_alt2): ... This.
15880 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15882 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
15883 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
15885 * range-op-float.cc (zero_range): Use dconstm0.
15886 (zero_to_inf_range): Same.
15887 * real.h (dconstm0): New.
15888 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
15889 (frange::set_zero): Do not declare dconstm0.
15891 2023-04-18 Richard Biener <rguenther@suse.de>
15893 * system.h (class auto_mpz): New,
15894 * realmpfr.h (class auto_mpfr): Likewise.
15895 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
15896 (do_mpfr_arg2): Likewise.
15897 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
15899 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15901 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
15902 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
15904 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15906 * value-range.cc (frange::operator==): Adjust for NAN.
15907 (range_tests_nan): Remove some NAN tests.
15909 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15911 * inchash.cc (hash::add_real_value): New.
15912 * inchash.h (class hash): Add add_real_value.
15913 * value-range.cc (add_vrange): New.
15914 * value-range.h (inchash::add_vrange): New.
15916 2023-04-18 Richard Biener <rguenther@suse.de>
15918 PR tree-optimization/109539
15919 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
15920 Re-implement pointer relatedness for PHIs.
15922 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
15924 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
15925 (SV_FP): New iterator.
15926 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
15927 (recip<mode>2): Unify the two patterns using SV_FP.
15928 (div_scale<mode><exec_vcc>): New insn.
15929 (div_fmas<mode><exec>): New insn.
15930 (div_fixup<mode><exec>): New insn.
15931 (div<mode>3): Unify the two expanders and rewrite using hardfp.
15932 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
15933 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
15934 and UNSPEC_DIV_FIXUP.
15935 (vccwait): New attribute.
15937 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15939 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
15940 if the argument matches that.
15942 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15944 * config/aarch64/atomics.md
15945 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
15946 Use SD_HSDI for destination mode iterator.
15948 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
15950 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
15951 of z-extensions and s-extensions.
15952 (riscv_subset_list::parse): Likewise.
15954 2023-04-18 Jakub Jelinek <jakub@redhat.com>
15956 PR tree-optimization/109240
15957 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
15958 first vec_perm operand and minus as second using fneg/fadd and
15959 minus as first vec_perm operand and plus as second using fneg/fsub.
15961 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15963 * data-streamer.cc (bp_pack_real_value): New.
15964 (bp_unpack_real_value): New.
15965 * data-streamer.h (bp_pack_real_value): New.
15966 (bp_unpack_real_value): New.
15967 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
15968 bp_unpack_real_value.
15969 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
15970 bp_pack_real_value.
15972 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15974 * wide-int.h (WIDE_INT_MAX_HWIS): New.
15975 (class fixed_wide_int_storage): Use it.
15976 (trailing_wide_ints <N>::set_precision): Use it.
15977 (trailing_wide_ints <N>::extra_size): Use it.
15979 2023-04-18 Xi Ruoyao <xry111@xry111.site>
15981 * config/loongarch/loongarch-protos.h
15982 (loongarch_addu16i_imm12_operand_p): New function prototype.
15983 (loongarch_split_plus_constant): Likewise.
15984 * config/loongarch/loongarch.cc
15985 (loongarch_addu16i_imm12_operand_p): New function.
15986 (loongarch_split_plus_constant): Likewise.
15987 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
15988 (DUAL_IMM12_OPERAND): Likewise.
15989 (DUAL_ADDU16I_OPERAND): Likewise.
15990 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
15992 * config/loongarch/predicates.md (const_dual_imm12_operand): New
15994 (const_addu16i_operand): Likewise.
15995 (const_addu16i_imm12_di_operand): Likewise.
15996 (const_addu16i_imm12_si_operand): Likewise.
15997 (plus_di_operand): Likewise.
15998 (plus_si_operand): Likewise.
15999 (plus_si_extend_operand): Likewise.
16000 * config/loongarch/loongarch.md (add<mode>3): Convert to
16001 define_insn_and_split. Use plus_<mode>_operand predicate
16002 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
16003 and Le constraints.
16004 (*addsi3_extended): Convert to define_insn_and_split. Use
16005 plus_si_extend_operand instead of arith_operand. Add
16006 alternatives for La and Le alternatives.
16008 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
16010 * value-range.h (Value_Range::Value_Range): New.
16011 (Value_Range::contains_p): New.
16013 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
16015 * value-range.h (class vrange): Make m_discriminator const.
16016 (class irange): Make m_max_ranges const. Adjust constructors
16018 (class unsupported_range): Construct vrange appropriately.
16019 (class frange): Same.
16021 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
16023 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
16026 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
16028 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
16030 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
16032 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
16034 (riscv_expand_epilogue): Likewise.
16036 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
16038 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
16040 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
16042 2023-04-17 Andrew Pinski <apinski@marvell.com>
16044 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
16047 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
16049 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
16052 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
16054 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
16055 parameter remaining_size.
16056 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
16057 (riscv_expand_prologue): Likewise.
16058 (riscv_expand_epilogue): Likewise.
16060 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
16062 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
16063 roriw for constant counts.
16064 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
16065 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
16066 (simplify_context::simplify_binary_operation_1): Use it.
16067 * expmed.cc (expand_shift_1): Likewise.
16069 2023-04-17 Martin Jambor <mjambor@suse.cz>
16073 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
16074 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
16075 (ipa_zap_jf_refdesc): New function.
16076 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
16077 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
16078 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
16079 the new parameter of find_reference.
16080 (adjust_references_in_caller): Likewise. Make sure the constant jump
16081 function is not used to decrement a refdec counter again. Only
16082 decrement refdesc counters when the pass_through jump function allows
16083 it. Added a detailed dump when decrementing refdesc counters.
16084 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
16085 (ipa_set_jf_simple_pass_through): Initialize the new flag.
16086 (ipa_set_jf_unary_pass_through): Likewise.
16087 (ipa_set_jf_arith_pass_through): Likewise.
16088 (remove_described_reference): Provide a value for the new parameter of
16090 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
16091 the previous pass_through had a flag mandating that we do so.
16092 (propagate_controlled_uses): Likewise. Only decrement refdesc
16093 counters when the pass_through jump function allows it.
16094 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
16095 parameter of find_reference.
16096 (ipa_write_jump_function): Assert the new flag does not have to be
16098 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
16101 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
16102 Di Zhao <di.zhao@amperecomputing.com>
16104 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
16105 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
16106 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
16107 Check for the above tuning option when processing loads.
16109 2023-04-17 Richard Biener <rguenther@suse.de>
16111 PR tree-optimization/109524
16112 * tree-vrp.cc (remove_unreachable::m_list): Change to a
16113 vector of pairs of block indices.
16114 (remove_unreachable::maybe_register_block): Adjust.
16115 (remove_unreachable::remove_and_update_globals): Likewise.
16116 Deal with removed blocks.
16118 2023-04-16 Jeff Law <jlaw@ventanamicro>
16121 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
16122 TARGET_SFB_ALU, force the true arm into a register.
16124 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
16127 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
16128 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
16130 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
16131 (pa_function_arg_size): Change return type to int. Return zero
16132 for arguments larger than 1 GB. Update comments.
16134 2023-04-15 Jakub Jelinek <jakub@redhat.com>
16136 PR tree-optimization/109154
16137 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
16138 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
16140 2023-04-15 Jason Merrill <jason@redhat.com>
16143 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
16144 Overhaul lhs_ref.ref analysis.
16146 2023-04-14 Richard Biener <rguenther@suse.de>
16148 PR tree-optimization/109502
16149 * tree-vect-stmts.cc (vectorizable_assignment): Fix
16150 check for conversion between mask and non-mask types.
16152 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
16153 Jakub Jelinek <jakub@redhat.com>
16157 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
16158 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
16159 smaller than word_mode.
16160 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
16161 <case AND>: Likewise.
16163 2023-04-14 Jakub Jelinek <jakub@redhat.com>
16165 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
16168 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
16170 PR tree-optimization/108139
16171 PR tree-optimization/109462
16172 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
16173 equivalency check for PHI nodes.
16174 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
16175 does not dominate single-arg equivalency edges.
16177 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
16180 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
16181 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
16183 2023-04-13 Richard Biener <rguenther@suse.de>
16185 PR tree-optimization/109491
16186 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
16187 NULL operands test.
16189 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16192 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
16193 (vint16mf4_t): Ditto.
16194 (vint32mf2_t): Ditto.
16195 (vint64m1_t): Ditto.
16196 (vint64m2_t): Ditto.
16197 (vint64m4_t): Ditto.
16198 (vint64m8_t): Ditto.
16199 (vuint8mf8_t): Ditto.
16200 (vuint16mf4_t): Ditto.
16201 (vuint32mf2_t): Ditto.
16202 (vuint64m1_t): Ditto.
16203 (vuint64m2_t): Ditto.
16204 (vuint64m4_t): Ditto.
16205 (vuint64m8_t): Ditto.
16206 (vfloat32mf2_t): Ditto.
16207 (vbool64_t): Ditto.
16208 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
16209 (register_vector_type): Ditto.
16210 (check_required_extensions): Fix condition.
16211 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
16212 (RVV_REQUIRE_ELEN_64): New define.
16213 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
16214 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
16215 (TARGET_VECTOR_FP64): Ditto.
16216 (ENTRY): Fix predicate.
16217 * config/riscv/vector-iterators.md: Fix predicate.
16219 2023-04-12 Jakub Jelinek <jakub@redhat.com>
16221 PR tree-optimization/109410
16222 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
16223 block if first statement of the function is a call to returns_twice
16226 2023-04-12 Jakub Jelinek <jakub@redhat.com>
16229 * config/i386/i386.cc: Include rtl-error.h.
16230 (ix86_print_operand): For z modifier warning, use warning_for_asm
16231 if this_is_asm_operands. For Z modifier errors, use %c and code
16232 instead of hardcoded Z.
16234 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
16236 * config/i386/x-mingw32-utf8: Remove extrataneous $@
16238 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
16240 PR tree-optimization/109462
16241 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
16242 check for equivalences if NAME is a phi node.
16244 2023-04-12 Richard Biener <rguenther@suse.de>
16246 PR tree-optimization/109473
16247 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
16248 Convert scalar result to the computation type before performing
16249 the reduction adjustment.
16251 2023-04-12 Richard Biener <rguenther@suse.de>
16253 PR tree-optimization/109469
16254 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
16255 a returns-twice call.
16257 2023-04-12 Richard Biener <rguenther@suse.de>
16259 PR tree-optimization/109434
16260 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
16261 handle possibly throwing calls when processing the LHS
16262 and may-defs are not OK.
16264 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
16266 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
16267 predicate to avoid splitting arith constants.
16269 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
16270 Pan Li <pan2.li@intel.com>
16271 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16272 Kito Cheng <kito.cheng@sifive.com>
16275 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
16276 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
16277 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
16278 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
16279 (riscv_zero_call_used_regs): New.
16280 (TARGET_ZERO_CALL_USED_REGS): New.
16282 2023-04-11 Martin Liska <mliska@suse.cz>
16285 * opts.cc (finish_options): Drop also
16286 x_flag_var_tracking_assignments.
16288 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
16290 PR tree-optimization/108888
16291 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
16293 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
16296 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
16297 (vsx_sign_extend_v16qi_<mode>): ... this.
16298 (vsx_sign_extend_hi_<mode>): Rename to...
16299 (vsx_sign_extend_v8hi_<mode>): ... this.
16300 (vsx_sign_extend_si_v2di): Rename to...
16301 (vsx_sign_extend_v4si_v2di): ... this.
16302 (vsignextend_qi_<mode>): Remove.
16303 (vsignextend_hi_<mode>): Remove.
16304 (vsignextend_si_v2di): Remove.
16305 (vsignextend_v2di_v1ti): Remove.
16306 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
16307 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
16308 with gen_vsx_sign_extend_v16qi_v4si.
16309 * config/rs6000/rs6000.md (split for DI constant generation):
16310 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
16311 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
16312 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
16313 with gen_vsx_sign_extend_v16qi_si.
16314 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
16315 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
16316 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
16317 vsx_sign_extend_v16qi_v4si.
16318 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
16319 vsx_sign_extend_v8hi_v2di.
16320 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
16321 vsx_sign_extend_v8hi_v4si.
16322 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
16323 vsx_sign_extend_si_v2di.
16324 (__builtin_altivec_vsignext): Set bif-pattern to
16325 vsx_sign_extend_v2di_v1ti.
16326 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
16327 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
16328 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
16329 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
16331 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
16334 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
16335 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
16337 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
16339 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
16341 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
16343 * common/config/i386/cpuinfo.h (get_available_features):
16344 Detect AMX-COMPLEX.
16345 * common/config/i386/i386-common.cc
16346 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
16347 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
16348 (ix86_handle_option): Handle -mamx-complex.
16349 * common/config/i386/i386-cpuinfo.h (enum processor_features):
16350 Add FEATURE_AMX_COMPLEX.
16351 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
16353 * config.gcc: Add amxcomplexintrin.h.
16354 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
16355 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
16357 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
16358 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
16359 Handle amx-complex.
16360 * config/i386/i386.opt: Add option -mamx-complex.
16361 * config/i386/immintrin.h: Include amxcomplexintrin.h.
16362 * doc/extend.texi: Document amx-complex.
16363 * doc/invoke.texi: Document -mamx-complex.
16364 * doc/sourcebuild.texi: Document target amx-complex.
16365 * config/i386/amxcomplexintrin.h: New file.
16367 2023-04-08 Jakub Jelinek <jakub@redhat.com>
16369 PR tree-optimization/109392
16370 * tree-vect-generic.cc (tree_vec_extract): Handle failure
16371 of maybe_push_res_to_seq better.
16373 2023-04-08 Jakub Jelinek <jakub@redhat.com>
16375 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
16377 (SYSTEM_H): Depend on $(HASHTAB_H).
16378 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
16379 dependency on $(RTL_BASE_H), remove redundant dependency on
16382 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
16385 * config/arm/arm.cc (arm_effective_regno): New function.
16386 (mve_vector_mem_operand): Use it.
16388 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
16390 PR tree-optimization/109417
16391 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
16392 dependency is in SSA_NAME_FREE_LIST.
16394 2023-04-06 Andrew Pinski <apinski@marvell.com>
16396 PR tree-optimization/109427
16397 * params.opt (-param=vect-induction-float=):
16398 Fix option attribute typo for IntegerRange.
16400 2023-04-05 Jeff Law <jlaw@ventanamicro>
16403 * combine.cc (combine_instructions): Force re-recognition when
16404 after restoring the body of an insn to its original form.
16406 2023-04-05 Martin Jambor <mjambor@suse.cz>
16409 * ipa-sra.cc (zap_useless_ipcp_results): New function.
16410 (process_isra_node_results): Call it.
16412 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16414 * config/riscv/vector.md: Fix incorrect operand order.
16416 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16418 * config/riscv/riscv-vsetvl.cc
16419 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
16422 2023-04-05 Li Xu <xuli1@eswincomputing.com>
16424 * config/riscv/riscv-vector-builtins.def: Fix typo.
16425 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
16426 * config/riscv/vector-iterators.md: Ditto.
16428 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
16430 * doc/md.texi (Including Patterns): Fix page break.
16432 2023-04-04 Jakub Jelinek <jakub@redhat.com>
16434 PR tree-optimization/109386
16435 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
16436 foperator_le::op1_range, foperator_le::op2_range,
16437 foperator_gt::op1_range, foperator_gt::op2_range,
16438 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
16439 BRS_FALSE case even if the other op is maybe_isnan, not just
16441 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
16442 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
16443 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
16444 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
16445 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
16446 not just known_isnan.
16448 2023-04-04 Marek Polacek <polacek@redhat.com>
16450 PR sanitizer/109107
16451 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
16453 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
16455 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
16457 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
16458 (mve_vcreateq_f<mode>): Swap operands.
16460 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
16462 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
16464 2023-04-04 Jakub Jelinek <jakub@redhat.com>
16467 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
16468 Reword diagnostics about zfinx conflict with f, formatting fixes.
16470 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
16472 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
16474 2023-04-04 Richard Biener <rguenther@suse.de>
16476 PR tree-optimization/109304
16477 * tree-profile.cc (tree_profiling): Use symtab node
16478 availability to decide whether to skip adjusting calls.
16479 Do not adjust calls to internal functions.
16481 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
16484 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
16485 function for permutation control vector by considering big endianness.
16487 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
16490 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
16491 (rs6000_vprtyb<mode>2): ... this.
16492 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
16493 rs6000_vprtybv2di2.
16494 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
16495 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
16496 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
16497 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
16499 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
16500 Sandra Loosemore <sandra@codesourcery.com>
16502 * doc/md.texi (Insn Splitting): Tweak wording for readability.
16504 2023-04-03 Martin Jambor <mjambor@suse.cz>
16507 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
16508 offset + size will be representable in unsigned int.
16510 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
16512 * configure.ac (ZSTD_LIB): Move before zstd.h check.
16513 Unset gcc_cv_header_zstd_h without libzstd.
16514 * configure: Regenerate.
16516 2023-04-03 Martin Liska <mliska@suse.cz>
16518 * doc/invoke.texi: Document new param.
16520 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
16522 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
16523 new check_effective_target function.
16525 2023-04-03 Li Xu <xuli1@eswincomputing.com>
16527 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
16528 (vfloat32m8_t): Likewise
16530 2023-04-03 liuhongt <hongtao.liu@intel.com>
16532 * doc/md.texi: Document signbitm2.
16534 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16535 kito-cheng <kito.cheng@sifive.com>
16537 * config/riscv/vector.md: Fix RA constraint.
16539 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16541 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
16542 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
16543 * config/riscv/vector.md: Fix scalar move bug.
16545 2023-04-01 Jakub Jelinek <jakub@redhat.com>
16547 * range-op-float.cc (foperator_equal::fold_range): If at least
16548 one of the op ranges is not singleton and neither is NaN and all
16549 4 bounds are zero, return [1, 1].
16550 (foperator_not_equal::fold_range): In the same case return [0, 0].
16552 2023-04-01 Jakub Jelinek <jakub@redhat.com>
16554 * range-op-float.cc (foperator_equal::fold_range): Perform the
16555 non-singleton handling regardless of maybe_isnan (op1, op2).
16556 (foperator_not_equal::fold_range): Likewise.
16557 (foperator_lt::fold_range, foperator_le::fold_range,
16558 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
16559 real_* comparison check which results in range_false (type)
16560 even if maybe_isnan (op1, op2). Simplify.
16561 (foperator_ltgt): New class.
16562 (fop_ltgt): New variable.
16563 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
16566 2023-04-01 Jakub Jelinek <jakub@redhat.com>
16569 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
16570 returns VOIDmode, handle it like if the register isn't used for
16571 passing arguments at all.
16572 (apply_result_size): If targetm.calls.get_raw_result_mode returns
16573 VOIDmode, handle it like if the register isn't used for returning
16575 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
16576 means to return VOIDmode.
16577 * doc/tm.texi: Regenerated.
16578 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
16579 TARGET_SVE for P0_REGNUM.
16580 (aarch64_function_arg_regno_p): Also return true for p0-p3.
16581 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
16583 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
16585 * lra-constraints.cc: (combine_reload_insn): New function.
16587 2023-03-31 Jakub Jelinek <jakub@redhat.com>
16589 PR tree-optimization/91645
16590 * range-op-float.cc (foperator_unordered_lt::fold_range,
16591 foperator_unordered_le::fold_range,
16592 foperator_unordered_gt::fold_range,
16593 foperator_unordered_ge::fold_range,
16594 foperator_unordered_equal::fold_range): Call the ordered
16595 fold_range on ranges with cleared NaNs.
16596 * value-query.cc (range_query::get_tree_range): Handle also
16597 COMPARISON_CLASS_P trees.
16599 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
16600 Andrew Pinski <pinskia@gmail.com>
16603 * config/riscv/t-riscv: Add missing dependencies.
16605 2023-03-31 liuhongt <hongtao.liu@intel.com>
16607 * config/i386/i386.cc (inline_memory_move_cost): Return 100
16608 for MASK_REGS when MODE_SIZE > 8.
16610 2023-03-31 liuhongt <hongtao.liu@intel.com>
16613 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
16614 ufloat/ufix to floatuns/fixuns.
16615 * config/i386/i386-expand.cc
16616 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
16617 * config/i386/sse.md
16618 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
16620 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
16621 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
16623 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
16625 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
16627 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
16628 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
16629 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
16630 (ufloatv2siv2df2<mask_name>): Renamed to ..
16631 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
16632 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
16634 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
16636 (ufix_notruncv2dfv2si2): Renamed to ..
16637 (fixuns_notruncv2dfv2si2):.. this.
16638 (ufix_notruncv2dfv2si2_mask): Renamed to ..
16639 (fixuns_notruncv2dfv2si2_mask): .. this.
16640 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
16641 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
16642 (ufix_truncv2dfv2si2): Renamed to ..
16643 (*fixuns_truncv2dfv2si2): .. this.
16644 (ufix_truncv2dfv2si2_mask): Renamed to ..
16645 (fixuns_truncv2dfv2si2_mask): .. this.
16646 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
16647 (*fixuns_truncv2dfv2si2_mask_1): .. this.
16648 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
16649 (fixuns_truncv4dfv4si2<mask_name>): .. this.
16650 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
16652 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
16654 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
16655 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
16658 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
16660 PR tree-optimization/109154
16661 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
16662 * gimple-range-gori.h (may_recompute_p): Add depth param.
16663 * params.opt (ranger-recompute-depth): New param.
16665 2023-03-30 Jason Merrill <jason@redhat.com>
16669 * cgraph.h: Move reset() from cgraph_node to symtab_node.
16670 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
16671 remove_from_same_comdat_group.
16673 2023-03-30 Richard Biener <rguenther@suse.de>
16675 PR tree-optimization/107561
16676 * gimple-ssa-warn-access.cc (get_size_range): Add flags
16677 argument and pass it on.
16678 (check_access): When querying for the size range pass
16679 SR_ALLOW_ZERO when the known destination size is zero.
16681 2023-03-30 Richard Biener <rguenther@suse.de>
16683 PR tree-optimization/109342
16684 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
16685 overload for edge. When that edge is a backedge use
16686 dominated_by_p directly.
16688 2023-03-30 liuhongt <hongtao.liu@intel.com>
16690 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
16691 vpblendd instead of vpblendw for V4SI under avx2.
16693 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
16695 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
16696 for many quick operands, for register-sized modes.
16698 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
16700 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
16703 2023-03-29 Martin Liska <mliska@suse.cz>
16705 PR bootstrap/109310
16706 * configure.ac: Emit a warning for deprecated option
16707 --enable-link-mutex.
16708 * configure: Regenerate.
16710 2023-03-29 Richard Biener <rguenther@suse.de>
16712 PR tree-optimization/109331
16713 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
16714 discover a taken edge make sure to cleanup the CFG.
16716 2023-03-29 Richard Biener <rguenther@suse.de>
16718 PR tree-optimization/109327
16719 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
16720 already removed stmts when draining to_remove.
16722 2023-03-29 Richard Biener <rguenther@suse.de>
16725 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
16726 so we can re-create the DIE for the type if required.
16728 2023-03-29 Jakub Jelinek <jakub@redhat.com>
16729 Richard Biener <rguenther@suse.de>
16731 PR tree-optimization/109301
16732 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
16733 properties_provided from PROP_gimple_opt_math to 0.
16734 (pass_data_expand_powcabs): Change properties_provided from 0 to
16735 PROP_gimple_opt_math.
16737 2023-03-29 Richard Biener <rguenther@suse.de>
16739 PR tree-optimization/109154
16740 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
16741 inverted condition specially by inverting at the caller.
16742 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
16744 2023-03-28 David Malcolm <dmalcolm@redhat.com>
16747 * diagnostic-show-locus.cc (column_range::column_range): Factor
16748 out assertion conditional into...
16749 (column_range::valid_p): ...this new function.
16750 (line_corrections::add_hint): Don't attempt to consolidate hints
16751 if it would lead to invalid column_range instances.
16753 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
16756 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
16757 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
16760 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
16762 PR rtl-optimization/109187
16763 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
16764 subtraction in three-way comparison.
16766 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
16768 PR tree-optimization/109265
16769 PR tree-optimization/109274
16770 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
16771 not create a relation record is op1 and op2 are the same symbol.
16772 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
16773 handler for this stmt, but create a new record only if this statement
16774 generates a relation based on the ranges.
16775 (gori_compute::compute_operand2_range): Ditto.
16776 * value-relation.h (value_relation::set_relation): Always create the
16777 record that is requested.
16779 2023-03-28 Richard Biener <rguenther@suse.de>
16781 PR tree-optimization/107087
16782 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
16783 executable regions to avoid useless work and to better
16784 propagate degenerate PHIs.
16786 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
16788 * config/i386/x-mingw32-utf8: update comments.
16790 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
16793 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
16794 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
16796 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
16798 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
16799 after inlining. Record which decls are loaded from. Fix handling
16800 of vops for loads and stores.
16801 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
16802 (aarch64_accesses_vector_load_decl_p): Likewise.
16803 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
16805 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
16806 that loads from a decl, treat vector stores to those decls as
16808 (aarch64_vector_costs::finish_cost): ...and in that case,
16809 if the vector code does nothing more than a store, give the
16810 prologue a zero cost as well.
16812 2023-03-28 Richard Biener <rguenther@suse.de>
16815 PR tree-optimization/108129
16816 * genmatch.cc (lower_for): For (match ...) delay
16817 substituting into the match operator if possible.
16818 (dt_operand::gen_gimple_expr): For user_id look at the
16819 first substitute for determining how to access operands.
16820 (dt_operand::gen_generic_expr): Likewise.
16821 (dt_node::gen_kids): Properly sort user_ids according
16822 to their substitutes.
16823 (dt_node::gen_kids_1): Code-generate user_id matching.
16825 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16826 Jonathan Wakely <jwakely@redhat.com>
16828 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
16829 Use subcommand rather than sub-command in function comments.
16831 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16833 PR tree-optimization/109154
16834 * value-range.h (frange::flush_denormals_to_zero): Make it public
16835 rather than private.
16836 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
16838 * range-op-float.cc (range_operator_float::fold_range): Call
16839 flush_denormals_to_zero.
16841 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16843 PR middle-end/106190
16844 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
16845 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
16847 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16849 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
16850 as 4th argument to set to avoid clear_nan and union_ calls.
16852 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16855 * config/i386/i386.cc (assign_386_stack_local): For DImode
16856 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
16857 align 32 rather than 0 to assign_stack_local.
16859 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
16862 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
16863 on operand #3 to get the final condition code. Use std::swap.
16864 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
16865 (fucmp<gcond:code>8<P:mode>_vis): Move around.
16866 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
16867 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
16869 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
16871 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
16872 top-level sections.
16874 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
16876 * config.host: Pull in i386/x-mingw32-utf8 Makefile
16877 fragment and reference utf8rc-mingw32.o explicitly
16879 * config/i386/sym-mingw32.cc: prevent name mangling of
16881 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
16882 depend on manifest file explicitly.
16884 2023-03-28 Richard Biener <rguenther@suse.de>
16887 2023-03-27 Richard Biener <rguenther@suse.de>
16889 PR rtl-optimization/109237
16890 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
16892 2023-03-28 Richard Biener <rguenther@suse.de>
16894 * common.opt (gdwarf): Remove Negative(gdwarf-).
16896 2023-03-28 Richard Biener <rguenther@suse.de>
16898 * common.opt (gdwarf): Add RejectNegative.
16899 (gdwarf-): Likewise.
16903 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16905 * config/cris/constraints.md ("T"): Correct to
16906 define_memory_constraint.
16908 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16910 * config/cris/cris.md (BW2): New mode-iterator.
16911 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
16914 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16916 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
16917 for possible eliminable compares.
16919 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16921 * config/cris/constraints.md ("R"): Remove unused constraint.
16923 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
16925 PR gcov-profile/109297
16926 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
16927 (merge_stream_usage): Likewise.
16928 (overlap_usage): Likewise.
16930 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
16933 * config/riscv/thead.md: Add missing mode specifiers.
16935 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
16936 Jiangning Liu <jiangning.liu@amperecomputing.com>
16937 Manolis Tsamis <manolis.tsamis@vrull.eu>
16939 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
16941 2023-03-27 Richard Biener <rguenther@suse.de>
16943 PR rtl-optimization/109237
16944 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
16946 2023-03-27 Richard Biener <rguenther@suse.de>
16949 * lto-wrapper.cc (run_gcc): Parse alternate debug options
16950 as well, they always enable debug.
16952 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
16955 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
16957 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
16959 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
16962 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
16963 than zero when calling vec_sld.
16964 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
16965 zero when calling vec_sld.
16966 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
16967 than zero when calling vec_sld.
16969 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
16971 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
16972 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
16973 loops are represented and which fields are vectors. Add
16974 documentation for OMP_FOR_PRE_BODY field. Document internal
16975 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
16976 * tree.def (OMP_FOR): Make documentation consistent with the
16977 Texinfo manual, to fill some gaps and correct errors.
16979 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
16982 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
16983 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
16984 (handle_move_double): Call it before handle_movsi.
16985 * config/m68k/m68k-protos.h: Declare it.
16987 2023-03-26 Jakub Jelinek <jakub@redhat.com>
16989 PR tree-optimization/109230
16990 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
16992 2023-03-26 Jakub Jelinek <jakub@redhat.com>
16995 * predict.cc (compute_function_frequency): Don't call
16996 warn_function_cold if function already has cold attribute.
16998 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
17000 * doc/install.texi: Remove anachronistic note
17001 related to languages built and separate source tarballs.
17003 2023-03-25 David Malcolm <dmalcolm@redhat.com>
17006 * diagnostic-format-sarif.cc (read_until_eof): Delete.
17007 (maybe_read_file): Delete.
17008 (sarif_builder::maybe_make_artifact_content_object): Use
17009 get_source_file_content rather than maybe_read_file.
17010 Reject it if it's not valid UTF-8.
17011 * input.cc (file_cache_slot::get_full_file_content): New.
17012 (get_source_file_content): New.
17013 (selftest::check_cpp_valid_utf8_p): New.
17014 (selftest::test_cpp_valid_utf8_p): New.
17015 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
17016 * input.h (get_source_file_content): New prototype.
17018 2023-03-24 David Malcolm <dmalcolm@redhat.com>
17020 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
17022 (Special Functions for Debugging the Analyzer): Convert to a
17023 table, and rewrite in places.
17024 (Other Debugging Techniques): Add notes on how to compare two
17025 different exploded graphs.
17027 2023-03-24 David Malcolm <dmalcolm@redhat.com>
17030 * json.cc: Update comments to indicate that we now preserve
17031 insertion order of keys within objects.
17032 (object::print): Traverse keys in insertion order.
17033 (object::set): Preserve insertion order of keys.
17034 (selftest::test_writing_objects): Add an additional key to verify
17035 that we preserve insertion order.
17036 * json.h (object::m_keys): New field.
17038 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
17040 PR tree-optimization/109238
17041 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
17042 predecessors which this block dominates.
17044 2023-03-24 Richard Biener <rguenther@suse.de>
17046 PR tree-optimization/106912
17047 * tree-profile.cc (tree_profiling): Update stmts only when
17048 profiling or testing coverage. Make sure to update calls
17049 fntype, stripping 'const' there.
17051 2023-03-24 Jakub Jelinek <jakub@redhat.com>
17053 PR middle-end/109258
17054 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
17055 if target == const0_rtx.
17057 2023-03-24 Alexandre Oliva <oliva@adacore.com>
17059 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
17060 Document options and effective targets.
17062 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
17064 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
17067 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
17069 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
17070 non-earlyclobber alternative.
17072 2023-03-23 Andrew Pinski <apinski@marvell.com>
17075 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
17078 2023-03-23 Richard Biener <rguenther@suse.de>
17080 PR tree-optimization/107569
17081 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
17082 Do not push SSA names with zero uses as available leader.
17083 (process_bb): Likewise.
17085 2023-03-23 Richard Biener <rguenther@suse.de>
17087 PR tree-optimization/109262
17088 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
17089 combining a piecewise complex load avoid touching loads
17090 that throw internally. Use fun, not cfun throughout.
17092 2023-03-23 Jakub Jelinek <jakub@redhat.com>
17094 * value-range.cc (irange::irange_union, irange::intersect): Fix
17095 comment spelling bugs.
17096 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
17097 * gimple-range-trace.h: Likewise.
17098 * gimple-range-edge.cc: Likewise.
17099 (gimple_outgoing_range_stmt_p,
17100 gimple_outgoing_range::switch_edge_range,
17101 gimple_outgoing_range::edge_range_p): Likewise.
17102 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
17103 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
17104 assume_query::assume_query, assume_query::calculate_phi): Likewise.
17105 * gimple-range-edge.h: Likewise.
17106 * value-range.h (Value_Range::set, Value_Range::lower_bound,
17107 Value_Range::upper_bound, frange::set_undefined): Likewise.
17108 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
17109 gori_compute): Likewise.
17110 * gimple-range-fold.h (fold_using_range): Likewise.
17111 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
17113 * gimple-range-gori.cc (range_def_chain::in_chain_p,
17114 range_def_chain::dump, gori_map::calculate_gori,
17115 gori_compute::compute_operand_range_switch,
17116 gori_compute::logical_combine, gori_compute::refine_using_relation,
17117 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
17119 * gimple-range.h: Likewise.
17120 (enable_ranger): Likewise.
17121 * range-op.h (empty_range_varying): Likewise.
17122 * value-query.h (value_query): Likewise.
17123 * gimple-range-cache.cc (block_range_cache::set_bb_range,
17124 block_range_cache::dump, ssa_global_cache::clear_global_range,
17125 temporal_cache::temporal_value, temporal_cache::current_p,
17126 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
17127 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
17129 * gimple-range-fold.cc (fur_edge::get_phi_operand,
17130 fur_stmt::get_operand, gimple_range_adjustment,
17131 fold_using_range::range_of_phi,
17132 fold_using_range::relation_fold_and_or): Likewise.
17133 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
17134 * value-query.cc (range_query::value_of_expr,
17135 range_query::value_on_edge, range_query::query_relation): Likewise.
17136 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
17137 intersect_range_with_nonzero_bits): Likewise.
17138 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
17139 exit_range): Likewise.
17140 * value-relation.h: Likewise.
17141 (equiv_oracle, relation_trio::relation_trio, value_relation,
17142 value_relation::value_relation, pe_min): Likewise.
17143 * range-op-float.cc (range_operator_float::rv_fold,
17144 frange_arithmetic, foperator_unordered_equal::op1_range,
17145 foperator_div::rv_fold): Likewise.
17146 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
17147 * value-relation.cc (equiv_oracle::query_relation,
17148 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
17149 value_relation::apply_transitive, relation_chain_head::find_relation,
17150 dom_oracle::query_relation, dom_oracle::find_relation_block,
17151 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
17152 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
17153 create_possibly_reversed_range, adjust_op1_for_overflow,
17154 operator_mult::wi_fold, operator_exact_divide::op1_range,
17155 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
17156 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
17157 range_op_lshift_tests): Likewise.
17159 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
17161 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
17162 (move_callee_saved_registers): Detect the bug condition early.
17164 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
17166 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
17167 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
17169 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
17170 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
17171 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
17172 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
17173 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
17175 2023-03-23 Jakub Jelinek <jakub@redhat.com>
17177 PR tree-optimization/109176
17178 * tree-vect-generic.cc (expand_vector_condition): If a has
17179 vector boolean type and is a comparison, also check if both
17180 the comparison and VEC_COND_EXPR could be successfully expanded
17183 2023-03-23 Pan Li <pan2.li@intel.com>
17184 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17188 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
17189 for vector mask modes.
17190 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
17191 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
17193 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
17195 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
17197 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17200 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
17201 (emit_vlmax_op): Ditto.
17202 * config/riscv/riscv-v.cc (get_sew): New function.
17203 (emit_vlmax_vsetvl): Adapt function.
17204 (emit_pred_op): Ditto.
17205 (emit_vlmax_op): Ditto.
17206 (emit_nonvlmax_op): Ditto.
17207 (legitimize_move): Fix LRA ICE.
17208 (gen_no_side_effects_vsetvl_rtx): Adapt function.
17209 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
17210 (@mov<VB:mode><P:mode>_lra): Ditto.
17211 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
17212 (*mov<VB:mode><P:mode>_lra): Ditto.
17214 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17217 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
17218 __riscv_vlenb support.
17220 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17221 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
17222 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
17224 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17225 * config/riscv/riscv-vector-builtins.cc: Ditto.
17227 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17228 kito-cheng <kito.cheng@sifive.com>
17230 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
17231 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
17232 (pass_vsetvl::need_vsetvl): Fix bugs.
17233 (pass_vsetvl::backward_demand_fusion): Fix bugs.
17234 (pass_vsetvl::demand_fusion): Fix bugs.
17235 (eliminate_insn): Fix bugs.
17236 (insert_vsetvl): Ditto.
17237 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
17238 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
17239 * config/riscv/vector.md: Ditto.
17241 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17242 kito-cheng <kito.cheng@sifive.com>
17244 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
17245 * config/riscv/vector-iterators.md (nmsac): Ditto.
17251 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
17252 (@pred_mul_plus<mode>): Ditto.
17253 (*pred_madd<mode>): Ditto.
17254 (*pred_macc<mode>): Ditto.
17255 (*pred_mul_plus<mode>): Ditto.
17256 (@pred_mul_plus<mode>_scalar): Ditto.
17257 (*pred_madd<mode>_scalar): Ditto.
17258 (*pred_macc<mode>_scalar): Ditto.
17259 (*pred_mul_plus<mode>_scalar): Ditto.
17260 (*pred_madd<mode>_extended_scalar): Ditto.
17261 (*pred_macc<mode>_extended_scalar): Ditto.
17262 (*pred_mul_plus<mode>_extended_scalar): Ditto.
17263 (@pred_minus_mul<mode>): Ditto.
17264 (*pred_<madd_nmsub><mode>): Ditto.
17265 (*pred_nmsub<mode>): Ditto.
17266 (*pred_<macc_nmsac><mode>): Ditto.
17267 (*pred_nmsac<mode>): Ditto.
17268 (*pred_mul_<optab><mode>): Ditto.
17269 (*pred_minus_mul<mode>): Ditto.
17270 (@pred_mul_<optab><mode>_scalar): Ditto.
17271 (@pred_minus_mul<mode>_scalar): Ditto.
17272 (*pred_<madd_nmsub><mode>_scalar): Ditto.
17273 (*pred_nmsub<mode>_scalar): Ditto.
17274 (*pred_<macc_nmsac><mode>_scalar): Ditto.
17275 (*pred_nmsac<mode>_scalar): Ditto.
17276 (*pred_mul_<optab><mode>_scalar): Ditto.
17277 (*pred_minus_mul<mode>_scalar): Ditto.
17278 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
17279 (*pred_nmsub<mode>_extended_scalar): Ditto.
17280 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
17281 (*pred_nmsac<mode>_extended_scalar): Ditto.
17282 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
17283 (*pred_minus_mul<mode>_extended_scalar): Ditto.
17284 (*pred_<madd_msub><mode>): Ditto.
17285 (*pred_<macc_msac><mode>): Ditto.
17286 (*pred_<madd_msub><mode>_scalar): Ditto.
17287 (*pred_<macc_msac><mode>_scalar): Ditto.
17288 (@pred_neg_mul_<optab><mode>): Ditto.
17289 (@pred_mul_neg_<optab><mode>): Ditto.
17290 (*pred_<nmadd_msub><mode>): Ditto.
17291 (*pred_<nmsub_nmadd><mode>): Ditto.
17292 (*pred_<nmacc_msac><mode>): Ditto.
17293 (*pred_<nmsac_nmacc><mode>): Ditto.
17294 (*pred_neg_mul_<optab><mode>): Ditto.
17295 (*pred_mul_neg_<optab><mode>): Ditto.
17296 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
17297 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
17298 (*pred_<nmadd_msub><mode>_scalar): Ditto.
17299 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
17300 (*pred_<nmacc_msac><mode>_scalar): Ditto.
17301 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
17302 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
17303 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
17304 (@pred_widen_neg_mul_<optab><mode>): Ditto.
17305 (@pred_widen_mul_neg_<optab><mode>): Ditto.
17306 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
17307 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
17309 2023-03-23 liuhongt <hongtao.liu@intel.com>
17311 * builtins.cc (builtin_memset_read_str): Replace
17312 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
17313 (builtin_memset_gen_str): Ditto.
17314 * config/i386/i386-expand.cc
17315 (ix86_convert_const_wide_int_to_broadcast): Replace
17316 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
17317 (ix86_expand_vector_move): Ditto.
17318 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
17320 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
17321 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
17322 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
17323 * doc/tm.texi.in: Ditto.
17324 * target.def: Ditto.
17326 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
17328 * lra.cc (lra): Do not repeat inheritance and live range splitting
17329 when asm error is found.
17331 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
17333 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
17334 (gcn_expand_dpp_distribute_even_insn)
17335 (gcn_expand_dpp_distribute_odd_insn): Declare.
17336 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
17337 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
17338 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
17339 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
17340 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
17341 (fms<mode>4_negop2): New patterns.
17342 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
17343 (gcn_expand_dpp_distribute_even_insn)
17344 (gcn_expand_dpp_distribute_odd_insn): New functions.
17345 * config/gcn/gcn.md: Add entries to unspec enum.
17347 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
17349 PR tree-optimization/109008
17350 * value-range.cc (frange::set): Add nan_state argument.
17351 * value-range.h (class nan_state): New.
17352 (frange::get_nan_state): New.
17354 2023-03-22 Martin Liska <mliska@suse.cz>
17356 * configure: Regenerate.
17358 2023-03-21 Joseph Myers <joseph@codesourcery.com>
17360 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
17363 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
17365 PR tree-optimization/109192
17366 * gimple-range-gori.cc (gori_compute::compute_operand_range):
17367 Terminate gori calculations if a relation is not relevant.
17368 * value-relation.h (value_relation::set_relation): Allow
17369 equality between op1 and op2 if they are the same.
17371 2023-03-21 Richard Biener <rguenther@suse.de>
17373 PR tree-optimization/109219
17374 * tree-vect-loop.cc (vectorizable_reduction): Check
17375 slp_node, not STMT_SLP_TYPE.
17376 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
17377 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
17378 Remove assertion on STMT_SLP_TYPE.
17380 2023-03-21 Jakub Jelinek <jakub@redhat.com>
17382 PR tree-optimization/109215
17383 * tree.h (enum special_array_member): Adjust comments for int_0
17385 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
17386 has zero sized element type and the array has variable number of
17387 elements or constant one or more elements.
17388 (component_ref_size): Adjust comments, formatting fix.
17390 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17392 * configure.ac: Add check for the Texinfo 6.8
17393 CONTENTS_OUTPUT_LOCATION customization variable and set it if
17395 * configure: Regenerate.
17396 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
17397 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
17398 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
17399 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
17401 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17403 * doc/extend.texi: Associate use_hazard_barrier_return index
17404 entry with its attribute.
17405 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
17408 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17410 * doc/implement-c.texi: Remove usage of @gol.
17411 * doc/invoke.texi: Ditto.
17412 * doc/sourcebuild.texi: Ditto.
17413 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
17414 texinfo.tex versions, the bug it was working around appears to
17417 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17419 * doc/include/texinfo.tex: Update to 2023-01-17.19.
17421 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17423 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
17424 @enddefbuiltin for defining built-in functions.
17425 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
17426 places where it should be used.
17428 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17430 * doc/extend.texi (Formatted Output Function Checking): New
17431 subsection for grouping together printf et al.
17432 (Exception handling) Fix missing @ sign before copyright
17433 header, which lead to the copyright line leaking into
17434 '(gcc)Exception handling'.
17435 * doc/gcc.texi: Set document language to en_US.
17436 (@copying): Wrap front cover texts in quotations, move in manual
17439 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17441 * doc/gcc.texi: Add the Indices appendix, to make texinfo
17442 generate nice indices overview page.
17444 2023-03-21 Richard Biener <rguenther@suse.de>
17446 PR tree-optimization/109170
17447 * gimple-range-op.cc (cfn_pass_through_arg1): New.
17448 (gimple_range_op_handler::maybe_builtin_call): Handle
17449 __builtin_expect via cfn_pass_through_arg1.
17451 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
17454 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
17455 (init_float128_ieee): Delete code to switch complex multiply and divide
17457 (complex_multiply_builtin_code): New helper function.
17458 (complex_divide_builtin_code): Likewise.
17459 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
17460 of complex 128-bit multiply and divide built-in functions.
17462 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
17465 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
17467 2023-03-19 Jonny Grant <jg@jguk.org>
17469 * doc/extend.texi (Common Function Attributes) <nonnull>:
17472 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
17474 PR rtl-optimization/109179
17475 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
17476 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
17478 2023-03-17 Jakub Jelinek <jakub@redhat.com>
17481 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
17483 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
17484 to allocate_struct_function instead of false.
17485 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
17486 nor DECL_RESULT here. Pass true as ABSTRACT_P to
17487 push_struct_function. Call targetm.target_option.relayout_function
17489 (tree_function_versioning): Formatting fix.
17491 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
17493 * lra-constraints.cc: Include hooks.h.
17494 (combine_reload_insn): New function.
17495 (lra_constraints): Call it.
17497 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17498 kito-cheng <kito.cheng@sifive.com>
17500 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
17501 as legitimate value.
17502 * config/riscv/riscv-vector-builtins.cc
17503 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
17504 (function_expander::use_widen_ternop_insn): Ditto.
17505 * config/riscv/vector.md (@vundefined<mode>): New pattern.
17506 (pred_mul_<optab><mode>_undef_merge): Remove.
17507 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
17508 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
17509 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
17510 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
17512 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17515 * config/riscv/riscv.md: Fix subreg bug.
17517 2023-03-17 Jakub Jelinek <jakub@redhat.com>
17519 PR middle-end/108685
17520 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
17521 use its loop_father rather than BODY_BB's loop_father.
17522 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
17523 If broken_loop with ordered > collapse and at least one of those
17524 extra loops aren't guaranteed to have at least one iteration, change
17525 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
17526 loop_father to l0_bb's loop_father rather than l1_bb's.
17528 2023-03-17 Jakub Jelinek <jakub@redhat.com>
17531 * gdbhooks.py (TreePrinter.to_string): Wrap
17532 gdb.parse_and_eval('tree_code_type') in a try block, parse
17533 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
17534 raises exception. Update comments for the recent tree_code_type
17537 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
17539 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
17540 issues. Add more line breaks to example so it doesn't overflow
17543 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
17545 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
17546 line breaks in examples.
17547 <malloc>: Fix bad line breaks in running text, also copy-edit
17549 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
17550 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
17552 (C++ Dialect Options) <-fcontracts>: Add line break in example.
17553 <-Wctad-maybe-unsupported>: Likewise.
17554 <-Winvalid-constexpr>: Likewise.
17555 (Warning Options) <-Wdangling-pointer>: Likewise.
17556 <-Winterference-size>: Likewise.
17557 <-Wvla-parameter>: Likewise.
17558 (Static Analyzer Options): Fix bad line breaks in running text,
17559 plus add some missing markup.
17560 (Optimize Options) <openacc-privatization>: Fix more bad line
17561 breaks in running text.
17563 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
17565 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
17566 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
17567 (expand_vec_perm_2perm_pblendv): Ditto.
17569 2023-03-16 Martin Liska <mliska@suse.cz>
17571 PR middle-end/106133
17572 * gcc.cc (driver_handle_option): Use x_main_input_basename
17573 if x_dump_base_name is null.
17574 * opts.cc (common_handle_option): Likewise.
17576 2023-03-16 Richard Biener <rguenther@suse.de>
17578 PR tree-optimization/109123
17579 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
17580 Do not emit -Wuse-after-free late.
17581 (pass_waccess::check_call): Always check call pointer uses.
17583 2023-03-16 Richard Biener <rguenther@suse.de>
17585 PR tree-optimization/109141
17586 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
17587 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
17589 (renumber_gimple_stmt_uids): ... here and
17590 (renumber_gimple_stmt_uids_in_blocks): ... here.
17591 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
17592 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
17594 (pass_waccess::check_pointer_uses): Process all PHIs.
17596 2023-03-15 David Malcolm <dmalcolm@redhat.com>
17599 * diagnostic-format-sarif.cc (class sarif_invocation): New.
17600 (class sarif_ice_notification): New.
17601 (sarif_builder::m_invocation_obj): New field.
17602 (sarif_invocation::add_notification_for_ice): New.
17603 (sarif_invocation::prepare_to_flush): New.
17604 (sarif_ice_notification::sarif_ice_notification): New.
17605 (sarif_builder::sarif_builder): Add m_invocation_obj.
17606 (sarif_builder::end_diagnostic): Special-case DK_ICE and
17608 (sarif_builder::flush_to_file): Call prepare_to_flush on
17609 m_invocation_obj. Pass the latter to make_top_level_object.
17610 (sarif_builder::make_result_object): Move creation of "locations"
17612 (sarif_builder::make_locations_arr): ...this new function.
17613 (sarif_builder::make_top_level_object): Add "invocation_obj" param
17614 and pass it to make_run_object.
17615 (sarif_builder::make_run_object): Add "invocation_obj" param and
17617 (sarif_ice_handler): New callback.
17618 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
17619 * diagnostic.cc (diagnostic_initialize): Initialize new field
17621 (diagnostic_action_after_output): If it is set, make one attempt
17622 to call ice_handler_cb.
17623 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
17625 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
17627 * config/i386/i386-expand.cc (expand_vec_perm_blend):
17628 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
17629 and fix V2HImode handling.
17630 (expand_vec_perm_1): Try to emit BLEND instruction
17631 before MOVSS/MOVSD.
17632 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
17634 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
17636 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
17638 2023-03-15 Richard Biener <rguenther@suse.de>
17640 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
17641 Do not diagnose clobbers.
17643 2023-03-15 Richard Biener <rguenther@suse.de>
17645 PR tree-optimization/109139
17646 * tree-ssa-live.cc (remove_unused_locals): Look at the
17647 base address for unused decls on the LHS of .DEFERRED_INIT.
17649 2023-03-15 Xi Ruoyao <xry111@xry111.site>
17652 * builtins.cc (inline_string_cmp): Force the character
17653 difference into "result" pseudo-register, instead of reassign
17654 the pseudo-register.
17656 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17658 * config.gcc: Add thead.o to RISC-V extra_objs.
17659 * config/riscv/peephole.md: Add mempair peephole passes.
17660 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
17662 (th_mempair_operands_p): Likewise.
17663 (th_mempair_order_operands): Likewise.
17664 (th_mempair_prepare_save_restore_operands): Likewise.
17665 (th_mempair_save_restore_regs): Likewise.
17666 (th_mempair_output_move): Likewise.
17667 * config/riscv/riscv.cc (riscv_save_reg): Move code.
17668 (riscv_restore_reg): Move code.
17669 (riscv_for_each_saved_reg): Add code to emit mempair insns.
17670 * config/riscv/t-riscv: Add thead.cc.
17671 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
17673 (*th_mempair_store_<GPR:mode>2): Likewise.
17674 (*th_mempair_load_extendsidi2): Likewise.
17675 (*th_mempair_load_zero_extendsidi2): Likewise.
17676 * config/riscv/thead.cc: New file.
17678 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17680 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
17681 New constraint "th_f_fmv".
17682 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
17684 * config/riscv/riscv.cc (riscv_split_doubleword_move):
17685 Add split code for XTheadFmv.
17686 (riscv_secondary_memory_needed): XTheadFmv does not need
17688 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
17689 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
17690 movdf_hardfloat_rv32.
17691 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
17692 (th_fmv_x_w): New INSN.
17693 (th_fmv_x_hw): New INSN.
17695 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17697 * config/riscv/riscv.md (maddhisi4): New expand.
17698 (msubhisi4): New expand.
17699 * config/riscv/thead.md (*th_mula<mode>): New pattern.
17700 (*th_mulawsi): New pattern.
17701 (*th_mulawsi2): New pattern.
17702 (*th_maddhisi4): New pattern.
17703 (*th_sextw_maddhisi4): New pattern.
17704 (*th_muls<mode>): New pattern.
17705 (*th_mulswsi): New pattern.
17706 (*th_mulswsi2): New pattern.
17707 (*th_msubhisi4): New pattern.
17708 (*th_sextw_msubhisi4): New pattern.
17710 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17712 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
17713 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
17715 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
17717 (riscv_expand_conditional_move): New function.
17718 (riscv_expand_conditional_move_onesided): New function.
17719 * config/riscv/riscv.md: Add support for XTheadCondMov.
17720 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
17721 support for XTheadCondMov.
17722 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
17724 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17726 * config/riscv/bitmanip.md (clzdi2): New expand.
17727 (clzsi2): New expand.
17728 (ctz<mode>2): New expand.
17729 (popcount<mode>2): New expand.
17730 (<bitmanip_optab>si2): Rename INSN.
17731 (*<bitmanip_optab>si2): Hide INSN name.
17732 (<bitmanip_optab>di2): Rename INSN.
17733 (*<bitmanip_optab>di2): Hide INSN name.
17734 (rotrsi3): Remove INSN.
17735 (rotr<mode>3): Add expand.
17736 (*rotrsi3): New INSN.
17737 (rotrdi3): Rename INSN.
17738 (*rotrdi3): Hide INSN name.
17739 (rotrsi3_sext): Rename INSN.
17740 (*rotrsi3_sext): Hide INSN name.
17741 (bswap<mode>2): Remove INSN.
17742 (bswapdi2): Add expand.
17743 (bswapsi2): Add expand.
17744 (*bswap<mode>2): Hide INSN name.
17745 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
17747 * config/riscv/riscv.md (extv<mode>): New expand.
17748 (extzv<mode>): New expand.
17749 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
17750 (*th_ext<mode>): New INSN.
17751 (*th_extu<mode>): New INSN.
17752 (*th_clz<mode>2): New INSN.
17753 (*th_rev<mode>2): New INSN.
17755 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17757 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
17758 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
17760 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17762 * config/riscv/riscv.md: Include thead.md
17763 * config/riscv/thead.md: New file.
17765 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17767 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
17769 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17771 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
17772 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
17773 (MASK_XTHEADBB): New.
17774 (MASK_XTHEADBS): New.
17775 (MASK_XTHEADCMO): New.
17776 (MASK_XTHEADCONDMOV): New.
17777 (MASK_XTHEADFMEMIDX): New.
17778 (MASK_XTHEADFMV): New.
17779 (MASK_XTHEADINT): New.
17780 (MASK_XTHEADMAC): New.
17781 (MASK_XTHEADMEMIDX): New.
17782 (MASK_XTHEADMEMPAIR): New.
17783 (MASK_XTHEADSYNC): New.
17784 (TARGET_XTHEADBA): New.
17785 (TARGET_XTHEADBB): New.
17786 (TARGET_XTHEADBS): New.
17787 (TARGET_XTHEADCMO): New.
17788 (TARGET_XTHEADCONDMOV): New.
17789 (TARGET_XTHEADFMEMIDX): New.
17790 (TARGET_XTHEADFMV): New.
17791 (TARGET_XTHEADINT): New.
17792 (TARGET_XTHEADMAC): New.
17793 (TARGET_XTHEADMEMIDX): New.
17794 (TARGET_XTHEADMEMPAIR): new.
17795 (TARGET_XTHEADSYNC): New.
17796 * config/riscv/riscv.opt: Add riscv_xthead_subext.
17798 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
17801 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
17802 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
17803 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
17805 2023-03-14 Jakub Jelinek <jakub@redhat.com>
17808 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
17809 when lo is equal to dhi and hi is a MEM which uses dlo register.
17811 2023-03-14 Martin Jambor <mjambor@suse.cz>
17814 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
17815 global0 instead of zeroing when it does not have as many counts as
17818 2023-03-14 Martin Jambor <mjambor@suse.cz>
17821 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
17822 ipa count, remove assert, lenient_count_portion_handling, dump
17823 also orig_node_count.
17825 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
17827 * config/i386/i386-expand.cc (expand_vec_perm_movs):
17828 Handle V2SImode for TARGET_MMX_WITH_SSE.
17829 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
17830 using V2FI mode iterator to handle both V2SI and V2SF modes.
17832 2023-03-14 Sam James <sam@gentoo.org>
17834 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
17835 including <sstream> earlier.
17836 * system.h: Add INCLUDE_SSTREAM.
17838 2023-03-14 Richard Biener <rguenther@suse.de>
17840 * tree-ssa-live.cc (remove_unused_locals): Do not treat
17841 the .DEFERRED_INIT of a variable as use, instead remove
17842 that if it is the only use.
17844 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
17846 PR rtl-optimization/107762
17847 * expr.cc (emit_group_store): Revert latest change.
17849 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
17851 PR tree-optimization/109005
17852 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
17853 aggregate type check.
17855 2023-03-14 Jakub Jelinek <jakub@redhat.com>
17857 PR tree-optimization/109115
17858 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
17859 r.upper_bound () on r.undefined_p () range.
17861 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
17863 PR tree-optimization/106896
17864 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
17865 implementatoin with probability_in; avoid some asserts.
17867 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
17869 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
17871 2023-03-13 Sean Bright <sean@seanbright.com>
17873 * doc/invoke.texi (Warning Options): Remove errant 'See'
17876 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17878 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
17879 REG_OK_FOR_BASE_P): Remove.
17881 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17883 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
17884 (=vd,vd,vr,vr): Ditto.
17885 * config/riscv/vector.md: Ditto.
17887 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17889 * config/riscv/riscv-vector-builtins.cc
17890 (function_expander::use_compare_insn): Add operand predicate check.
17892 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17894 * config/riscv/vector.md: Fine tune RA constraints.
17896 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
17898 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
17899 hsaco assemble/link.
17901 2023-03-13 Richard Biener <rguenther@suse.de>
17903 PR tree-optimization/109046
17904 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
17905 piecewise complex loads.
17907 2023-03-12 Jakub Jelinek <jakub@redhat.com>
17909 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
17910 (aarch64_bf16_ptr_type_node): Adjust comment.
17911 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
17912 bfloat16_type_node rather than aarch64_bf16_type_node.
17913 (aarch64_libgcc_floating_mode_supported_p,
17914 aarch64_scalar_mode_supported_p): Also support BFmode.
17915 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
17916 (aarch64_invalid_binary_op): Remove BFmode related rejections.
17917 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
17918 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
17919 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
17920 aarch64_bf16_type_node.
17921 (aarch64_init_simd_builtin_types): Likewise.
17922 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
17923 which is created in tree.cc already.
17924 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
17926 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
17928 PR middle-end/109031
17929 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
17930 ensure that the type of x is as wide or wider than the type of a.
17932 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17935 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
17936 (*bitmask_shift_plus<mode>): New.
17937 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
17938 (@aarch64_bitmask_udiv<mode>3): Remove.
17939 * config/aarch64/aarch64.cc
17940 (aarch64_vectorize_can_special_div_by_constant,
17941 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
17942 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
17943 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
17945 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17948 * target.def (preferred_div_as_shifts_over_mult): New.
17949 * doc/tm.texi.in: Document it.
17950 * doc/tm.texi: Regenerate.
17951 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
17952 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
17953 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
17955 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17956 Richard Sandiford <richard.sandiford@arm.com>
17959 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
17962 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17963 Andrew MacLeod <amacleod@redhat.com>
17966 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
17967 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
17969 (gimple_range_op_handler::maybe_non_standard): New.
17970 * range-op.cc (class operator_widen_plus_signed,
17971 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
17972 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
17973 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
17974 operator_widen_mult_unsigned::wi_fold,
17975 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
17976 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
17977 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
17978 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
17980 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17983 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
17984 * doc/tm.texi.in: Likewise.
17985 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
17986 * expmed.cc (expand_divmod): Likewise.
17987 * expmed.h (expand_divmod): Likewise.
17988 * expr.cc (force_operand, expand_expr_divmod): Likewise.
17989 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
17990 * target.def (can_special_div_by_const): Remove.
17991 * target.h: Remove tree-core.h include
17992 * targhooks.cc (default_can_special_div_by_const): Remove.
17993 * targhooks.h (default_can_special_div_by_const): Remove.
17994 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
17995 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
17996 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
17998 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
18000 * doc/install.texi2html: Fix issue number typo in comment.
18002 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
18004 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
18007 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
18009 * doc/invoke.texi (Optimize Options): Add markup to
18010 description of asan-kernel-mem-intrinsic-prefix, and clarify
18013 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
18015 * doc/extend.texi (Named Address Spaces): Drop a redundant link
18018 2023-03-11 Jeff Law <jlaw@ventanamicro>
18021 * doc/extend.texi: Clarify Attribute Syntax a bit.
18023 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
18025 * doc/install.texi (Prerequisites): Suggest using newer versions
18027 (Final install): Clean up and modernize discussion of how to
18028 build or obtain the GCC manuals.
18029 * doc/install.texi2html: Update comment to point to the PR instead
18030 of "makeinfo 4.7 brokenness" (it's not specific to that version).
18032 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18035 * optabs.cc (expand_fix): For conversions from BFmode to integral,
18036 use shifts to convert it to SFmode first and then convert SFmode
18039 2023-03-10 Andrew Pinski <apinski@marvell.com>
18041 * config/aarch64/aarch64.md: Add a new define_split
18044 2023-03-10 Richard Biener <rguenther@suse.de>
18046 * tree-ssa-structalias.cc (solve_graph): Immediately
18047 iterate self-cycles.
18049 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18051 PR tree-optimization/109008
18052 * range-op-float.cc (float_widen_lhs_range): If not
18053 -frounding-math and not IBM double double format, extend lhs
18054 range just by 0.5ulp rather than 1ulp in each direction.
18056 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18059 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
18061 * config/i386/t-cygwin-w64: Remove.
18063 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18066 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
18067 C++14, don't declare as extern const arrays.
18068 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
18069 static constexpr member arrays for C++11 or C++14.
18070 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
18071 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
18072 (TREE_CODE_LENGTH): For C++11 or C++14 use
18073 tree_code_length_tmpl <0>::tree_code_length instead of
18075 * tree.cc (tree_code_type, tree_code_length): Remove.
18077 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18080 * common.opt (fcanon-prefix-map): New option.
18081 * opts.cc: Include file-prefix-map.h.
18082 (flag_canon_prefix_map): New variable.
18083 (common_handle_option): Handle OPT_fcanon_prefix_map.
18084 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
18085 * file-prefix-map.h (flag_canon_prefix_map): Declare.
18086 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
18088 (add_prefix_map): Initialize canonicalize member from
18089 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
18090 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
18091 use lrealpath result only for map->canonicalize map entries.
18092 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
18093 * opts-global.cc (handle_common_deferred_options): Clear
18094 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
18095 * doc/invoke.texi (-fcanon-prefix-map): Document.
18096 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
18097 see also for -fcanon-prefix-map.
18098 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
18100 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18103 * cgraphunit.cc (check_global_declaration): Don't warn for unused
18104 variables which have OPT_Wunused_variable warning suppressed.
18106 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18108 PR tree-optimization/109008
18109 * range-op-float.cc (float_widen_lhs_range): If lb is
18110 minimum representable finite number or ub is maximum
18111 representable finite number, instead of widening it to
18112 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
18113 Temporarily clear flag_finite_math_only when canonicalizing
18116 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18118 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
18119 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
18120 (gimple_fold_builtin): Ditto.
18121 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
18122 (class vleff): Ditto.
18124 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18125 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
18127 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
18128 (struct fault_load_def): Ditto.
18130 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18131 * config/riscv/riscv-vector-builtins.cc
18132 (rvv_arg_type_info::get_tree_type): Add size_ptr.
18133 (gimple_folder::gimple_folder): New class.
18134 (gimple_folder::fold): Ditto.
18135 (gimple_fold_builtin): New function.
18136 (get_read_vl_instance): Ditto.
18137 (get_read_vl_decl): Ditto.
18138 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
18139 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
18140 (get_read_vl_instance): New function.
18141 (get_read_vl_decl): Ditto.
18142 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
18143 (read_vl_insn_p): Ditto.
18144 (available_occurrence_p): Ditto.
18145 (backward_propagate_worthwhile_p): Ditto.
18146 (gen_vsetvl_pat): Adapt for vleff support.
18147 (get_forward_read_vl_insn): New function.
18148 (get_backward_fault_first_load_insn): Ditto.
18149 (source_equal_p): Adapt for vleff support.
18150 (first_ratio_invalid_for_second_sew_p): Remove.
18151 (first_ratio_invalid_for_second_lmul_p): Ditto.
18152 (first_lmul_less_than_second_lmul_p): Ditto.
18153 (first_ratio_less_than_second_ratio_p): Ditto.
18154 (support_relaxed_compatible_p): New function.
18155 (vector_insn_info::operator>): Remove.
18156 (vector_insn_info::operator>=): Refine.
18157 (vector_insn_info::parse_insn): Adapt for vleff support.
18158 (vector_insn_info::compatible_p): Ditto.
18159 (vector_insn_info::update_fault_first_load_avl): New function.
18160 (pass_vsetvl::transfer_after): Adapt for vleff support.
18161 (pass_vsetvl::demand_fusion): Ditto.
18162 (pass_vsetvl::cleanup_insns): Ditto.
18163 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
18164 redundant condtions.
18165 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
18166 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
18167 * config/riscv/riscv.md: Adapt for vleff support.
18168 * config/riscv/t-riscv: Ditto.
18169 * config/riscv/vector-iterators.md: New iterator.
18170 * config/riscv/vector.md (read_vlsi): New pattern.
18171 (read_vldi_zero_extend): Ditto.
18172 (@pred_fault_load<mode>): Ditto.
18174 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18176 * config/riscv/riscv-vector-builtins.cc
18177 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
18178 (function_expander::use_widen_ternop_insn): Ditto.
18179 * optabs.cc (maybe_gen_insn): Extend nops handling.
18181 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18183 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
18184 patterns according to RVV ISA.
18185 * config/riscv/vector-iterators.md: New iterators.
18186 * config/riscv/vector.md
18187 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
18188 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
18189 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
18190 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
18191 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
18192 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
18193 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
18194 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
18195 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
18196 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
18197 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
18198 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
18199 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
18200 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
18202 2023-03-10 Michael Collison <collison@rivosinc.com>
18204 * tree-vect-loop-manip.cc (vect_do_peeling): Use
18205 result of constant_lower_bound instead of vf for the lower
18206 bound of the epilog loop trip count.
18208 2023-03-09 Tamar Christina <tamar.christina@arm.com>
18210 * passes.cc (emergency_dump_function): Finish graph generation.
18212 2023-03-09 Tamar Christina <tamar.christina@arm.com>
18214 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
18215 and bottom bit only.
18217 2023-03-09 Andrew Pinski <apinski@marvell.com>
18219 PR tree-optimization/108980
18220 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
18221 Reorgnize the call to warning for not strict flexible arrays
18222 to be before the check of warned.
18224 2023-03-09 Jason Merrill <jason@redhat.com>
18226 * doc/extend.texi: Comment out __is_deducible docs.
18228 2023-03-09 Jason Merrill <jason@redhat.com>
18231 * doc/extend.texi (Type Traits):: Document __is_deducible.
18233 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
18236 * config.host: add object for x86_64-*-mingw*.
18237 * config/i386/sym-mingw32.cc: dummy file to attach
18239 * config/i386/utf8-mingw32.rc: windres resource file.
18240 * config/i386/winnt-utf8.manifest: XML manifest to
18242 * config/i386/x-mingw32: reference to x-mingw32-utf8.
18243 * config/i386/x-mingw32-utf8: Makefile fragment to
18244 embed UTF-8 manifest.
18246 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
18248 * lra-constraints.cc (process_alt_operands): Use operand modes for
18249 clobbered regs instead of the biggest access mode.
18251 2023-03-09 Richard Biener <rguenther@suse.de>
18253 PR middle-end/108995
18254 * fold-const.cc (extract_muldiv_1): Avoid folding
18255 (CST * b) / CST2 when sanitizing overflow and we rely on
18256 overflow being undefined.
18258 2023-03-09 Jakub Jelinek <jakub@redhat.com>
18259 Richard Biener <rguenther@suse.de>
18261 PR tree-optimization/109008
18262 * range-op-float.cc (float_widen_lhs_range): New function.
18263 (foperator_plus::op1_range, foperator_minus::op1_range,
18264 foperator_minus::op2_range, foperator_mult::op1_range,
18265 foperator_div::op1_range, foperator_div::op2_range): Use it.
18267 2023-03-07 Jonathan Grant <jg@jguk.org>
18270 * doc/invoke.texi (Instrumentation Options): Clarify
18271 LeakSanitizer behavior.
18273 2023-03-07 Benson Muite <benson_muite@emailplus.org>
18275 * doc/install.texi (Prerequisites): Add link to gmplib.org.
18277 2023-03-07 Pan Li <pan2.li@intel.com>
18278 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18282 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
18284 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
18285 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
18286 * genmodes.cc (adj_precision): New.
18287 (ADJUST_PRECISION): New.
18288 (emit_mode_adjustments): Handle ADJUST_PRECISION.
18290 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
18292 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
18294 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
18296 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
18297 {s|u}{max|min} in QI, HI and DI modes.
18298 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
18299 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
18300 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
18301 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
18304 2023-03-06 Richard Biener <rguenther@suse.de>
18306 PR tree-optimization/109025
18307 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
18308 the inner LC PHI use is the inner loop PHI latch definition
18309 before classifying an outer PHI as double reduction.
18311 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
18314 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
18316 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
18317 (X86_TUNE_USE_SCATTER): Likewise.
18319 2023-03-06 Xi Ruoyao <xry111@xry111.site>
18322 * config/loongarch/loongarch.h (FP_RETURN): Use
18323 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
18324 (UNITS_PER_FP_ARG): Likewise.
18326 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18328 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
18329 (pass_vsetvl::backward_demand_fusion): Ditto.
18331 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18332 SiYu Wu <siyu@isrc.iscas.ac.cn>
18334 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
18336 (riscv_sm3p1_<mode>): New.
18337 (riscv_sm4ed_<mode>): New.
18338 (riscv_sm4ks_<mode>): New.
18339 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
18340 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
18341 ZKSH's built-in functions.
18343 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18344 SiYu Wu <siyu@isrc.iscas.ac.cn>
18346 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
18347 (riscv_sha256sig1_<mode>): New.
18348 (riscv_sha256sum0_<mode>): New.
18349 (riscv_sha256sum1_<mode>): New.
18350 (riscv_sha512sig0h): New.
18351 (riscv_sha512sig0l): New.
18352 (riscv_sha512sig1h): New.
18353 (riscv_sha512sig1l): New.
18354 (riscv_sha512sum0r): New.
18355 (riscv_sha512sum1r): New.
18356 (riscv_sha512sig0): New.
18357 (riscv_sha512sig1): New.
18358 (riscv_sha512sum0): New.
18359 (riscv_sha512sum1): New.
18360 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
18361 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
18362 built-in functions.
18363 (DIRECT_BUILTIN): Add new.
18365 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18366 SiYu Wu <siyu@isrc.iscas.ac.cn>
18368 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
18370 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
18371 (riscv_aes32dsmi): New.
18372 (riscv_aes64ds): New.
18373 (riscv_aes64dsm): New.
18374 (riscv_aes64im): New.
18375 (riscv_aes64ks1i): New.
18376 (riscv_aes64ks2): New.
18377 (riscv_aes32esi): New.
18378 (riscv_aes32esmi): New.
18379 (riscv_aes64es): New.
18380 (riscv_aes64esm): New.
18381 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
18382 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
18383 ZKNE's built-in functions.
18385 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18386 SiYu Wu <siyu@isrc.iscas.ac.cn>
18388 * config/riscv/bitmanip.md: Add ZBKB's instructions.
18389 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
18390 * config/riscv/riscv.md: Add new type for crypto instructions.
18391 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
18393 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
18394 extension's built-in function file.
18396 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18397 SiYu Wu <siyu@isrc.iscas.ac.cn>
18399 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
18400 (RISCV_FTYPE_NAME3): New.
18401 (RISCV_ATYPE_QI): New.
18402 (RISCV_ATYPE_HI): New.
18403 (RISCV_FTYPE_ATYPES2): New.
18404 (RISCV_FTYPE_ATYPES3): New.
18405 * config/riscv/riscv-ftypes.def (2): New.
18408 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
18410 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
18413 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18414 kito-cheng <kito.cheng@sifive.com>
18416 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
18417 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
18418 (riscv_register_pragmas): Add builtin function check call.
18419 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
18420 (check_builtin_call): New function.
18421 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
18422 (class vreinterpret): Ditto.
18423 (class vlmul_ext): Ditto.
18424 (class vlmul_trunc): Ditto.
18425 (class vset): Ditto.
18426 (class vget): Ditto.
18428 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18429 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
18445 (vundefined): Add new intrinsic.
18446 (vreinterpret): Ditto.
18447 (vlmul_ext): Ditto.
18448 (vlmul_trunc): Ditto.
18451 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
18452 (struct narrow_alu_def): Ditto.
18453 (struct reduc_alu_def): Ditto.
18454 (struct vundefined_def): Ditto.
18455 (struct misc_def): Ditto.
18456 (struct vset_def): Ditto.
18457 (struct vget_def): Ditto.
18459 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18460 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
18461 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
18462 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
18463 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
18464 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
18465 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
18466 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
18467 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
18468 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
18469 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
18470 (DEF_RVV_LMUL1_OPS): Ditto.
18471 (DEF_RVV_LMUL2_OPS): Ditto.
18472 (DEF_RVV_LMUL4_OPS): Ditto.
18473 (vint16mf4_t): Ditto.
18474 (vint16mf2_t): Ditto.
18475 (vint16m1_t): Ditto.
18476 (vint16m2_t): Ditto.
18477 (vint16m4_t): Ditto.
18478 (vint16m8_t): Ditto.
18479 (vint32mf2_t): Ditto.
18480 (vint32m1_t): Ditto.
18481 (vint32m2_t): Ditto.
18482 (vint32m4_t): Ditto.
18483 (vint32m8_t): Ditto.
18484 (vint64m1_t): Ditto.
18485 (vint64m2_t): Ditto.
18486 (vint64m4_t): Ditto.
18487 (vint64m8_t): Ditto.
18488 (vuint16mf4_t): Ditto.
18489 (vuint16mf2_t): Ditto.
18490 (vuint16m1_t): Ditto.
18491 (vuint16m2_t): Ditto.
18492 (vuint16m4_t): Ditto.
18493 (vuint16m8_t): Ditto.
18494 (vuint32mf2_t): Ditto.
18495 (vuint32m1_t): Ditto.
18496 (vuint32m2_t): Ditto.
18497 (vuint32m4_t): Ditto.
18498 (vuint32m8_t): Ditto.
18499 (vuint64m1_t): Ditto.
18500 (vuint64m2_t): Ditto.
18501 (vuint64m4_t): Ditto.
18502 (vuint64m8_t): Ditto.
18503 (vint8mf4_t): Ditto.
18504 (vint8mf2_t): Ditto.
18505 (vint8m1_t): Ditto.
18506 (vint8m2_t): Ditto.
18507 (vint8m4_t): Ditto.
18508 (vint8m8_t): Ditto.
18509 (vuint8mf4_t): Ditto.
18510 (vuint8mf2_t): Ditto.
18511 (vuint8m1_t): Ditto.
18512 (vuint8m2_t): Ditto.
18513 (vuint8m4_t): Ditto.
18514 (vuint8m8_t): Ditto.
18515 (vint8mf8_t): Ditto.
18516 (vuint8mf8_t): Ditto.
18517 (vfloat32mf2_t): Ditto.
18518 (vfloat32m1_t): Ditto.
18519 (vfloat32m2_t): Ditto.
18520 (vfloat32m4_t): Ditto.
18521 (vfloat64m1_t): Ditto.
18522 (vfloat64m2_t): Ditto.
18523 (vfloat64m4_t): Ditto.
18524 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
18525 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
18526 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
18527 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
18528 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
18529 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
18530 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
18531 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
18532 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
18533 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
18534 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
18535 (DEF_RVV_LMUL1_OPS): Ditto.
18536 (DEF_RVV_LMUL2_OPS): Ditto.
18537 (DEF_RVV_LMUL4_OPS): Ditto.
18538 (DEF_RVV_TYPE_INDEX): Ditto.
18539 (required_extensions_p): Adapt for new intrinsic support/
18540 (get_required_extensions): New function.
18541 (check_required_extensions): Ditto.
18542 (unsigned_base_type_p): Remove.
18543 (rvv_arg_type_info::get_scalar_ptr_type): New function.
18544 (get_mode_for_bitsize): Remove.
18545 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
18546 (rvv_arg_type_info::get_base_vector_type): Ditto.
18547 (rvv_arg_type_info::get_function_type_index): Ditto.
18548 (DEF_RVV_BASE_TYPE): New def.
18549 (function_builder::apply_predication): New class.
18550 (function_expander::mask_mode): Ditto.
18551 (function_checker::function_checker): Ditto.
18552 (function_checker::report_non_ice): Ditto.
18553 (function_checker::report_out_of_range): Ditto.
18554 (function_checker::require_immediate): Ditto.
18555 (function_checker::require_immediate_range): Ditto.
18556 (function_checker::check): Ditto.
18557 (check_builtin_call): Ditto.
18558 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
18559 (DEF_RVV_BASE_TYPE): Ditto.
18560 (DEF_RVV_TYPE_INDEX): Ditto.
18561 (vbool64_t): Ditto.
18562 (vbool32_t): Ditto.
18563 (vbool16_t): Ditto.
18568 (vuint8mf8_t): Ditto.
18569 (vuint8mf4_t): Ditto.
18570 (vuint8mf2_t): Ditto.
18571 (vuint8m1_t): Ditto.
18572 (vuint8m2_t): Ditto.
18573 (vint8m4_t): Ditto.
18574 (vuint8m4_t): Ditto.
18575 (vint8m8_t): Ditto.
18576 (vuint8m8_t): Ditto.
18577 (vint16mf4_t): Ditto.
18578 (vuint16mf2_t): Ditto.
18579 (vuint16m1_t): Ditto.
18580 (vuint16m2_t): Ditto.
18581 (vuint16m4_t): Ditto.
18582 (vuint16m8_t): Ditto.
18583 (vint32mf2_t): Ditto.
18584 (vuint32m1_t): Ditto.
18585 (vuint32m2_t): Ditto.
18586 (vuint32m4_t): Ditto.
18587 (vuint32m8_t): Ditto.
18588 (vuint64m1_t): Ditto.
18589 (vuint64m2_t): Ditto.
18590 (vuint64m4_t): Ditto.
18591 (vuint64m8_t): Ditto.
18592 (vfloat32mf2_t): Ditto.
18593 (vfloat32m1_t): Ditto.
18594 (vfloat32m2_t): Ditto.
18595 (vfloat32m4_t): Ditto.
18596 (vfloat32m8_t): Ditto.
18597 (vfloat64m1_t): Ditto.
18598 (vfloat64m4_t): Ditto.
18599 (vector): Move it def.
18602 (signed_vector): Ditto.
18603 (unsigned_vector): Ditto.
18604 (unsigned_scalar): Ditto.
18605 (vector_ptr): Ditto.
18606 (scalar_ptr): Ditto.
18607 (scalar_const_ptr): Ditto.
18611 (unsigned_long): Ditto.
18613 (eew8_index): Ditto.
18614 (eew16_index): Ditto.
18615 (eew32_index): Ditto.
18616 (eew64_index): Ditto.
18617 (shift_vector): Ditto.
18618 (double_trunc_vector): Ditto.
18619 (quad_trunc_vector): Ditto.
18620 (oct_trunc_vector): Ditto.
18621 (double_trunc_scalar): Ditto.
18622 (double_trunc_signed_vector): Ditto.
18623 (double_trunc_unsigned_vector): Ditto.
18624 (double_trunc_unsigned_scalar): Ditto.
18625 (double_trunc_float_vector): Ditto.
18626 (float_vector): Ditto.
18627 (lmul1_vector): Ditto.
18628 (widen_lmul1_vector): Ditto.
18629 (eew8_interpret): Ditto.
18630 (eew16_interpret): Ditto.
18631 (eew32_interpret): Ditto.
18632 (eew64_interpret): Ditto.
18633 (vlmul_ext_x2): Ditto.
18634 (vlmul_ext_x4): Ditto.
18635 (vlmul_ext_x8): Ditto.
18636 (vlmul_ext_x16): Ditto.
18637 (vlmul_ext_x32): Ditto.
18638 (vlmul_ext_x64): Ditto.
18639 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
18640 (struct function_type_info): New function.
18641 (struct rvv_arg_type_info): Ditto.
18642 (class function_checker): New class.
18643 (rvv_arg_type_info::get_scalar_type): New function.
18644 (rvv_arg_type_info::get_vector_type): Ditto.
18645 (function_expander::ret_mode): New function.
18646 (function_checker::arg_mode): Ditto.
18647 (function_checker::ret_mode): Ditto.
18648 * config/riscv/t-riscv: Add generator.
18649 * config/riscv/vector-iterators.md: New iterators.
18650 * config/riscv/vector.md (vundefined<mode>): New pattern.
18651 (@vundefined<mode>): Ditto.
18652 (@vreinterpret<mode>): Ditto.
18653 (@vlmul_extx2<mode>): Ditto.
18654 (@vlmul_extx4<mode>): Ditto.
18655 (@vlmul_extx8<mode>): Ditto.
18656 (@vlmul_extx16<mode>): Ditto.
18657 (@vlmul_extx32<mode>): Ditto.
18658 (@vlmul_extx64<mode>): Ditto.
18659 (*vlmul_extx2<mode>): Ditto.
18660 (*vlmul_extx4<mode>): Ditto.
18661 (*vlmul_extx8<mode>): Ditto.
18662 (*vlmul_extx16<mode>): Ditto.
18663 (*vlmul_extx32<mode>): Ditto.
18664 (*vlmul_extx64<mode>): Ditto.
18665 * config/riscv/genrvv-type-indexer.cc: New file.
18667 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18669 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
18670 (slide1_sew64_helper): New function.
18671 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
18672 (get_unknown_min_value): Ditto.
18673 (force_vector_length_operand): Ditto.
18674 (gen_no_side_effects_vsetvl_rtx): Ditto.
18675 (get_vl_x2_rtx): Ditto.
18676 (slide1_sew64_helper): Ditto.
18677 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
18678 (class vrgather): Ditto.
18679 (class vrgatherei16): Ditto.
18680 (class vcompress): Ditto.
18682 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18683 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
18684 (vslidedown): Ditto.
18685 (vslide1up): Ditto.
18686 (vslide1down): Ditto.
18687 (vfslide1up): Ditto.
18688 (vfslide1down): Ditto.
18690 (vrgatherei16): Ditto.
18691 (vcompress): Ditto.
18692 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
18693 (vint8mf8_t): Ditto.
18694 (vint8mf4_t): Ditto.
18695 (vint8mf2_t): Ditto.
18696 (vint8m1_t): Ditto.
18697 (vint8m2_t): Ditto.
18698 (vint8m4_t): Ditto.
18699 (vint16mf4_t): Ditto.
18700 (vint16mf2_t): Ditto.
18701 (vint16m1_t): Ditto.
18702 (vint16m2_t): Ditto.
18703 (vint16m4_t): Ditto.
18704 (vint16m8_t): Ditto.
18705 (vint32mf2_t): Ditto.
18706 (vint32m1_t): Ditto.
18707 (vint32m2_t): Ditto.
18708 (vint32m4_t): Ditto.
18709 (vint32m8_t): Ditto.
18710 (vint64m1_t): Ditto.
18711 (vint64m2_t): Ditto.
18712 (vint64m4_t): Ditto.
18713 (vint64m8_t): Ditto.
18714 (vuint8mf8_t): Ditto.
18715 (vuint8mf4_t): Ditto.
18716 (vuint8mf2_t): Ditto.
18717 (vuint8m1_t): Ditto.
18718 (vuint8m2_t): Ditto.
18719 (vuint8m4_t): Ditto.
18720 (vuint16mf4_t): Ditto.
18721 (vuint16mf2_t): Ditto.
18722 (vuint16m1_t): Ditto.
18723 (vuint16m2_t): Ditto.
18724 (vuint16m4_t): Ditto.
18725 (vuint16m8_t): Ditto.
18726 (vuint32mf2_t): Ditto.
18727 (vuint32m1_t): Ditto.
18728 (vuint32m2_t): Ditto.
18729 (vuint32m4_t): Ditto.
18730 (vuint32m8_t): Ditto.
18731 (vuint64m1_t): Ditto.
18732 (vuint64m2_t): Ditto.
18733 (vuint64m4_t): Ditto.
18734 (vuint64m8_t): Ditto.
18735 (vfloat32mf2_t): Ditto.
18736 (vfloat32m1_t): Ditto.
18737 (vfloat32m2_t): Ditto.
18738 (vfloat32m4_t): Ditto.
18739 (vfloat32m8_t): Ditto.
18740 (vfloat64m1_t): Ditto.
18741 (vfloat64m2_t): Ditto.
18742 (vfloat64m4_t): Ditto.
18743 (vfloat64m8_t): Ditto.
18744 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
18745 * config/riscv/riscv.md: Adjust RVV instruction types.
18746 * config/riscv/vector-iterators.md (down): New iterator.
18747 (=vd,vr): New attribute.
18748 (UNSPEC_VSLIDE1UP): New unspec.
18749 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
18750 (*pred_slide<ud><mode>): Ditto.
18751 (*pred_slide<ud><mode>_extended): Ditto.
18752 (@pred_gather<mode>): Ditto.
18753 (@pred_gather<mode>_scalar): Ditto.
18754 (@pred_gatherei16<mode>): Ditto.
18755 (@pred_compress<mode>): Ditto.
18757 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18759 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
18761 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18763 * config/riscv/constraints.md (Wb1): New constraint.
18764 * config/riscv/predicates.md
18765 (vector_least_significant_set_mask_operand): New predicate.
18766 (vector_broadcast_mask_operand): Ditto.
18767 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
18768 (gen_scalar_move_mask): New function.
18769 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
18770 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
18771 (class vmv_s): Ditto.
18773 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18774 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
18778 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
18780 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18781 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
18782 (function_expander::use_exact_insn): New function.
18783 (function_expander::use_contiguous_load_insn): New function.
18784 (function_expander::use_contiguous_store_insn): New function.
18785 (function_expander::use_ternop_insn): New function.
18786 (function_expander::use_widen_ternop_insn): New function.
18787 (function_expander::use_scalar_move_insn): New function.
18788 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
18789 * config/riscv/riscv-vector-builtins.h
18790 (function_expander::add_scalar_move_mask_operand): New class.
18791 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
18792 (scalar_move_insn_p): Ditto.
18793 (has_vsetvl_killed_avl_p): Ditto.
18794 (anticipatable_occurrence_p): Ditto.
18795 (insert_vsetvl): Ditto.
18796 (get_vl_vtype_info): Ditto.
18797 (calculate_sew): Ditto.
18798 (calculate_vlmul): Ditto.
18799 (incompatible_avl_p): Ditto.
18800 (different_sew_p): Ditto.
18801 (different_lmul_p): Ditto.
18802 (different_ratio_p): Ditto.
18803 (different_tail_policy_p): Ditto.
18804 (different_mask_policy_p): Ditto.
18805 (possible_zero_avl_p): Ditto.
18806 (first_ratio_invalid_for_second_sew_p): Ditto.
18807 (first_ratio_invalid_for_second_lmul_p): Ditto.
18808 (second_ratio_invalid_for_first_sew_p): Ditto.
18809 (second_ratio_invalid_for_first_lmul_p): Ditto.
18810 (second_sew_less_than_first_sew_p): Ditto.
18811 (first_sew_less_than_second_sew_p): Ditto.
18812 (compare_lmul): Ditto.
18813 (second_lmul_less_than_first_lmul_p): Ditto.
18814 (first_lmul_less_than_second_lmul_p): Ditto.
18815 (first_ratio_less_than_second_ratio_p): Ditto.
18816 (second_ratio_less_than_first_ratio_p): Ditto.
18817 (DEF_INCOMPATIBLE_COND): Ditto.
18818 (greatest_sew): Ditto.
18819 (first_sew): Ditto.
18820 (second_sew): Ditto.
18821 (first_vlmul): Ditto.
18822 (second_vlmul): Ditto.
18823 (first_ratio): Ditto.
18824 (second_ratio): Ditto.
18825 (vlmul_for_first_sew_second_ratio): Ditto.
18826 (ratio_for_second_sew_first_vlmul): Ditto.
18827 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
18828 (always_unavailable): Ditto.
18829 (avl_unavailable_p): Ditto.
18830 (sew_unavailable_p): Ditto.
18831 (lmul_unavailable_p): Ditto.
18832 (ge_sew_unavailable_p): Ditto.
18833 (ge_sew_lmul_unavailable_p): Ditto.
18834 (ge_sew_ratio_unavailable_p): Ditto.
18835 (DEF_UNAVAILABLE_COND): Ditto.
18836 (same_sew_lmul_demand_p): Ditto.
18837 (propagate_avl_across_demands_p): Ditto.
18838 (reg_available_p): Ditto.
18839 (avl_info::has_non_zero_avl): Ditto.
18840 (vl_vtype_info::has_non_zero_avl): Ditto.
18841 (vector_insn_info::operator>=): Refactor.
18842 (vector_insn_info::parse_insn): Adjust for scalar move.
18843 (vector_insn_info::demand_vl_vtype): Remove.
18844 (vector_insn_info::compatible_p): New function.
18845 (vector_insn_info::compatible_avl_p): Ditto.
18846 (vector_insn_info::compatible_vtype_p): Ditto.
18847 (vector_insn_info::available_p): Ditto.
18848 (vector_insn_info::merge): Ditto.
18849 (vector_insn_info::fuse_avl): Ditto.
18850 (vector_insn_info::fuse_sew_lmul): Ditto.
18851 (vector_insn_info::fuse_tail_policy): Ditto.
18852 (vector_insn_info::fuse_mask_policy): Ditto.
18853 (vector_insn_info::dump): Ditto.
18854 (vector_infos_manager::release): Ditto.
18855 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
18856 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
18857 (pass_vsetvl::hard_empty_block_p): Ditto.
18858 (pass_vsetvl::backward_demand_fusion): Ditto.
18859 (pass_vsetvl::forward_demand_fusion): Ditto.
18860 (pass_vsetvl::refine_vsetvls): Ditto.
18861 (pass_vsetvl::cleanup_vsetvls): Ditto.
18862 (pass_vsetvl::commit_vsetvls): Ditto.
18863 (pass_vsetvl::propagate_avl): Ditto.
18864 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
18865 (struct demands_pair): Ditto.
18866 (struct demands_cond): Ditto.
18867 (struct demands_fuse_rule): Ditto.
18868 * config/riscv/vector-iterators.md: New iterator.
18869 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
18870 (*pred_broadcast<mode>): Ditto.
18871 (*pred_broadcast<mode>_extended_scalar): Ditto.
18872 (@pred_extract_first<mode>): Ditto.
18873 (*pred_extract_first<mode>): Ditto.
18874 (@pred_extract_first_trunc<mode>): Ditto.
18875 * config/riscv/riscv-vsetvl.def: New file.
18877 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
18879 * config/riscv/bitmanip.md: allow 0 constant in max/min
18882 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
18884 * config/riscv/bitmanip.md: Fix wrong index in the check.
18886 2023-03-04 Jakub Jelinek <jakub@redhat.com>
18888 PR middle-end/109006
18889 * vec.cc (test_auto_alias): Adjust comment for removal of
18891 * read-rtl-function.cc (function_reader::parse_block): Likewise.
18892 * gdbhooks.py: Likewise.
18894 2023-03-04 Jakub Jelinek <jakub@redhat.com>
18896 PR testsuite/108973
18897 * selftest-diagnostic.cc
18898 (test_diagnostic_context::test_diagnostic_context): Set
18899 caret_max_width to 80.
18901 2023-03-03 Alexandre Oliva <oliva@adacore.com>
18903 * gimple-ssa-warn-access.cc
18904 (pass_waccess::check_dangling_stores): Skip non-stores.
18906 2023-03-03 Alexandre Oliva <oliva@adacore.com>
18908 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
18909 after vmsr and vmrs, and lower the case of P0.
18911 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
18913 PR middle-end/109006
18914 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
18916 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
18918 PR middle-end/109006
18919 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
18921 2023-03-03 Jakub Jelinek <jakub@redhat.com>
18924 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
18925 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
18926 suppressed on stmt. For [static %E] warning, print access_nelts
18927 rather than access_size. Fix up comment wording.
18929 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
18931 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
18932 arch14 instead of z16.
18934 2023-03-03 Anthony Green <green@moxielogic.com>
18936 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
18938 2023-03-03 Anthony Green <green@moxielogic.com>
18940 * config/moxie/constraints.md (A, B, W): Change
18941 define_constraint to define_memory_constraint.
18943 2023-03-03 Xi Ruoyao <xry111@xry111.site>
18945 * toplev.cc (process_options): Fix the spelling of
18946 "-fstack-clash-protection".
18948 2023-03-03 Richard Biener <rguenther@suse.de>
18950 PR tree-optimization/109002
18951 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
18952 PHI-translate ANTIC_IN.
18954 2023-03-03 Jakub Jelinek <jakub@redhat.com>
18956 PR tree-optimization/108988
18957 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
18958 size_type_node before passing it as argument to fwrite. Formatting
18961 2023-03-03 Richard Biener <rguenther@suse.de>
18964 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
18965 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
18966 * config/i386/i386-features.h (scalar_chain::max_visits): New.
18967 (scalar_chain::build): Add bitmap parameter, return boolean.
18968 (scalar_chain::add_insn): Likewise.
18969 (scalar_chain::analyze_register_chain): Likewise.
18970 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
18971 Initialize max_visits.
18972 (scalar_chain::analyze_register_chain): When we exhaust
18973 max_visits, abort. Also abort when running into any
18975 (scalar_chain::add_insn): Propagate abort.
18976 (scalar_chain::build): Likewise. When aborting amend
18977 the set of disallowed insn with the insns set.
18978 (convert_scalars_to_vector): Adjust. Do not convert aborted
18981 2023-03-03 Richard Biener <rguenther@suse.de>
18984 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
18985 generate a DIE for a function scope static.
18987 2023-03-03 Alexandre Oliva <oliva@adacore.com>
18989 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
18991 2023-03-02 Jakub Jelinek <jakub@redhat.com>
18994 * target.h (emit_support_tinfos_callback): New typedef.
18995 * targhooks.h (default_emit_support_tinfos): Declare.
18996 * targhooks.cc (default_emit_support_tinfos): New function.
18997 * target.def (emit_support_tinfos): New target hook.
18998 * doc/tm.texi.in (emit_support_tinfos): Document it.
18999 * doc/tm.texi: Regenerated.
19000 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
19001 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
19003 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
19005 * ira-costs.cc: Include print-rtl.h.
19006 (record_reg_classes, scan_one_insn): Add code to print debug info.
19007 (record_operand_costs): Find and use smaller cost for hard reg
19010 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
19011 Paul-Antoine Arras <pa@codesourcery.com>
19013 * builtins.cc (mathfn_built_in_explicit): New.
19014 * config/gcn/gcn.cc: Include case-cfn-macros.h.
19015 (mathfn_built_in_explicit): Add prototype.
19016 (gcn_vectorize_builtin_vectorized_function): New.
19017 (gcn_libc_has_function): New.
19018 (TARGET_LIBC_HAS_FUNCTION): Define.
19019 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
19021 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
19023 PR tree-optimization/108979
19024 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
19025 operations on invariants.
19027 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
19029 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
19030 * config/s390/s390.cc (s390_option_override_internal): Make
19031 partial vector usage the default from z13 on.
19032 * config/s390/vector.md (len_load_v16qi): Add.
19033 (len_store_v16qi): Add.
19035 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19037 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
19038 of constant 0 offset.
19040 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
19042 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
19044 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
19046 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
19048 * config.gcc: add -with-{no-}msa build option.
19049 * config/mips/mips.h: Likewise.
19050 * doc/install.texi: Likewise.
19052 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
19054 PR tree-optimization/108603
19055 * explow.cc (convert_memory_address_addr_space_1): Only wrap
19056 the result of a recursive call in a CONST if no instructions
19059 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
19061 PR tree-optimization/108430
19062 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
19063 of inverted condition.
19065 2023-03-02 Jakub Jelinek <jakub@redhat.com>
19068 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
19069 comparison copy the bytes from ptr to a temporary buffer and clearing
19070 padding bits in there.
19072 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
19074 PR middle-end/108545
19075 * gimplify.cc (struct tree_operand_hash_no_se): New.
19076 (omp_index_mapping_groups_1, omp_index_mapping_groups,
19077 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
19078 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
19079 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
19080 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
19081 of tree_operand_hash.
19083 2023-03-01 LIU Hao <lh_mouse@126.com>
19086 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
19087 Remove the size limit `pch_VA_max_size`
19089 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
19091 PR middle-end/108546
19092 * omp-low.cc (lower_omp_target): Remove optional handling
19093 on the receiver side, i.e. inside target (data), for
19096 2023-03-01 Jakub Jelinek <jakub@redhat.com>
19099 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
19100 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
19102 2023-03-01 Richard Biener <rguenther@suse.de>
19104 PR tree-optimization/108970
19105 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
19106 Check we can copy the BBs.
19107 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
19109 (vect_do_peeling): Streamline error handling.
19111 2023-03-01 Richard Biener <rguenther@suse.de>
19113 PR tree-optimization/108950
19114 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
19115 Check oprnd0 is defined in the loop.
19116 * tree-vect-loop.cc (vectorizable_reduction): Record all
19117 operands vector types, compute that of invariants and
19118 properly update their SLP nodes.
19120 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
19123 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
19124 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
19126 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
19128 PR middle-end/107411
19129 PR middle-end/107411
19130 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
19132 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
19133 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
19135 2023-02-28 Jakub Jelinek <jakub@redhat.com>
19137 PR sanitizer/108894
19138 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
19139 comparison rather than index > bound.
19140 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
19141 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
19142 * doc/invoke.texi (-fsanitize=bounds): Document that whether
19143 flexible array member-like arrays are instrumented or not depends
19144 on -fstrict-flex-arrays* options of strict_flex_array attributes.
19145 (-fsanitize=bounds-strict): Document that flexible array members
19146 are not instrumented.
19148 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
19152 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
19153 (fmod<mode>3): Ditto.
19154 (fpremxf4_i387): Ditto.
19155 (reminderxf3): Ditto.
19156 (reminder<mode>3): Ditto.
19157 (fprem1xf4_i387): Ditto.
19159 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
19161 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
19162 generating FFS with mismatched operand and result modes, by using
19163 an explicit SIGN_EXTEND/ZERO_EXTEND.
19164 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
19165 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
19167 2023-02-27 Patrick Palka <ppalka@redhat.com>
19169 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
19170 * lra-int.h (lra_change_class): Likewise.
19171 * recog.h (which_op_alt): Likewise.
19172 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
19175 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19177 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
19179 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
19181 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
19182 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
19184 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
19186 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
19187 (xtensa_get_config_v3): New functions.
19189 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19191 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
19193 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
19195 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
19196 the macro to 0x1000000000.
19198 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
19201 * doc/gm2.texi (-fm2-pathname): New option documented.
19202 (-fm2-pathnameI): New option documented.
19203 (-fm2-prefix=): New option documented.
19204 (-fruntime-modules=): Update default module list.
19206 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
19209 * config/xtensa/xtensa-protos.h
19210 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
19211 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
19212 to xtensa_expand_call.
19213 (xtensa_expand_call): Emit the call and add a clobber expression
19214 for the static chain to it in case of windowed ABI.
19215 * config/xtensa/xtensa.md (call, call_value, sibcall)
19216 (sibcall_value): Call xtensa_expand_call and complete expansion
19217 right after that call.
19219 2023-02-24 Richard Biener <rguenther@suse.de>
19221 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
19222 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
19223 changing alignment of vec<T, A, vl_embed> and simplifying
19225 (vec<T, A, vl_embed>::address): Compute as this + 1.
19226 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
19227 vector instead of the offset of the m_vecdata member.
19228 (auto_vec<T, N>::m_data): Turn storage into
19229 uninitialized unsigned char.
19230 (auto_vec<T, N>::auto_vec): Allow allocation of one
19231 stack member. Initialize m_vec in a special way to
19232 avoid later stringop overflow diagnostics.
19233 * vec.cc (test_auto_alias): New.
19234 (vec_cc_tests): Call it.
19236 2023-02-24 Richard Biener <rguenther@suse.de>
19238 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
19239 take a const reference to the object, use address to
19241 (vec<T, A, vl_embed>::contains): Use address to access data.
19242 (vec<T, A, vl_embed>::operator[]): Use address instead of
19243 m_vecdata to access data.
19244 (vec<T, A, vl_embed>::iterate): Likewise.
19245 (vec<T, A, vl_embed>::copy): Likewise.
19246 (vec<T, A, vl_embed>::quick_push): Likewise.
19247 (vec<T, A, vl_embed>::pop): Likewise.
19248 (vec<T, A, vl_embed>::quick_insert): Likewise.
19249 (vec<T, A, vl_embed>::ordered_remove): Likewise.
19250 (vec<T, A, vl_embed>::unordered_remove): Likewise.
19251 (vec<T, A, vl_embed>::block_remove): Likewise.
19252 (vec<T, A, vl_heap>::address): Likewise.
19254 2023-02-24 Martin Liska <mliska@suse.cz>
19256 PR sanitizer/108834
19257 * asan.cc (asan_add_global): Use proper TU name for normal
19258 global variables (and aux_base_name for the artificial one).
19260 2023-02-24 Jakub Jelinek <jakub@redhat.com>
19262 * config/i386/i386-builtin.def: Update description of BDESC
19263 and BDESC_FIRST in file comment to include mask2.
19265 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19267 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
19269 2023-02-24 Jakub Jelinek <jakub@redhat.com>
19271 PR middle-end/108854
19272 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
19273 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
19274 nodes and adjust their DECL_CONTEXT.
19276 2023-02-24 Jakub Jelinek <jakub@redhat.com>
19279 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
19280 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
19281 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
19282 __builtin_ia32_cvtne2ps2bf16_v8bf,
19283 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
19284 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
19285 __builtin_ia32_cvtneps2bf16_v8sf_mask,
19286 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
19287 __builtin_ia32_cvtneps2bf16_v4sf_mask,
19288 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
19289 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
19290 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
19291 __builtin_ia32_dpbf16ps_v4sf_mask,
19292 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
19293 OPTION_MASK_ISA_AVX512VL.
19295 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
19297 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
19298 Add non-compact 32-bit multilibs.
19300 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
19302 * config/mips/mips.md (*clo<mode>2): New pattern.
19304 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
19306 * config/mips/mips.h (machine_function): New variable
19307 use_hazard_barrier_return_p.
19308 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
19309 (mips_hb_return_internal): New insn pattern.
19310 * config/mips/mips.cc (mips_attribute_table): Add attribute
19311 use_hazard_barrier_return.
19312 (mips_use_hazard_barrier_return_p): New static function.
19313 (mips_function_attr_inlinable_p): Likewise.
19314 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
19315 Emit error for unsupported architecture choice.
19316 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
19317 Return false for use_hazard_barrier_return.
19318 (mips_expand_epilogue): Emit hazard barrier return.
19319 * doc/extend.texi: Document use_hazard_barrier_return.
19321 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19323 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
19324 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
19325 for the gcc-internal headers.
19327 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19329 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
19330 and $(POSTCOMPILE) instead of manual dependency listing.
19331 * config/xtensa/xtensa-dynconfig.c: Rename to ...
19332 * config/xtensa/xtensa-dynconfig.cc: ... this.
19334 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
19336 * doc/cfg.texi: Reorder index entries around @items.
19337 * doc/cpp.texi: Ditto.
19338 * doc/cppenv.texi: Ditto.
19339 * doc/cppopts.texi: Ditto.
19340 * doc/generic.texi: Ditto.
19341 * doc/install.texi: Ditto.
19342 * doc/extend.texi: Ditto.
19343 * doc/invoke.texi: Ditto.
19344 * doc/md.texi: Ditto.
19345 * doc/rtl.texi: Ditto.
19346 * doc/tm.texi.in: Ditto.
19347 * doc/trouble.texi: Ditto.
19348 * doc/tm.texi: Regenerate.
19350 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19352 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
19353 the occurrence of general-purpose register used only once and for
19354 transferring intermediate value.
19356 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19358 * config/xtensa/xtensa.cc (machine_function): Add new member
19359 'eliminated_callee_saved_bmp'.
19360 (xtensa_can_eliminate_callee_saved_reg_p): New function to
19361 determine whether the register can be eliminated or not.
19362 (xtensa_expand_prologue): Add invoking the above function and
19363 elimination the use of callee-saved register by using its stack
19364 slot through the stack pointer (or the frame pointer if needed)
19366 (xtensa_expand_prologue): Modify to not emit register restoration
19367 insn from its stack slot if the register is already eliminated.
19369 2023-02-23 Jakub Jelinek <jakub@redhat.com>
19371 PR translation/108890
19372 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
19373 around fatal_error format strings.
19375 2023-02-23 Richard Biener <rguenther@suse.de>
19377 * tree-ssa-structalias.cc (handle_lhs_call): Do not
19378 re-create rhsc, only truncate it.
19380 2023-02-23 Jakub Jelinek <jakub@redhat.com>
19382 PR middle-end/106258
19383 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
19384 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
19386 2023-02-23 Richard Biener <rguenther@suse.de>
19388 * tree-if-conv.cc (tree_if_conversion): Properly manage
19389 memory of refs and the contained data references.
19391 2023-02-23 Richard Biener <rguenther@suse.de>
19393 PR tree-optimization/108888
19394 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
19395 calls to predicate.
19396 (predicate_statements): Only predicate calls with PLF_2.
19398 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19400 * config/xtensa/xtensa.md
19401 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
19402 Add missing "SI:" to PLUS RTXes.
19404 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19407 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
19408 Emit (use (reg:SI A0_REG)) at the end in the sibling call
19409 (i.e. the same place as (return) in the normal call).
19411 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19414 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
19417 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
19419 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
19420 (sibcall_value, sibcall_value_internal): Add 'use' expression
19423 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
19425 * doc/cppdiropts.texi: Reorder @opindex commands to precede
19426 @items they relate to.
19427 * doc/cppopts.texi: Ditto.
19428 * doc/cppwarnopts.texi: Ditto.
19429 * doc/invoke.texi: Ditto.
19430 * doc/lto.texi: Ditto.
19432 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
19434 * internal-fn.cc (expand_MASK_CALL): New.
19435 * internal-fn.def (MASK_CALL): New.
19436 * internal-fn.h (expand_MASK_CALL): New prototype.
19437 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
19438 for mask arguments also.
19439 * tree-if-conv.cc: Include cgraph.h.
19440 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
19441 (predicate_statements): Convert functions to IFN_MASK_CALL.
19442 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
19443 IFN_MASK_CALL as a SIMD function call.
19444 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
19445 IFN_MASK_CALL as an inbranch SIMD function call.
19446 Generate the mask vector arguments.
19448 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19450 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
19451 (class widen_reducop): Ditto.
19452 (class freducop): Ditto.
19453 (class widen_freducop): Ditto.
19455 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19456 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
19465 (vwredsumu): Ditto.
19466 (vfredusum): Ditto.
19467 (vfredosum): Ditto.
19470 (vfwredosum): Ditto.
19471 (vfwredusum): Ditto.
19472 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
19474 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19475 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
19476 (DEF_RVV_WU_OPS): Ditto.
19477 (DEF_RVV_WF_OPS): Ditto.
19478 (vint8mf8_t): Ditto.
19479 (vint8mf4_t): Ditto.
19480 (vint8mf2_t): Ditto.
19481 (vint8m1_t): Ditto.
19482 (vint8m2_t): Ditto.
19483 (vint8m4_t): Ditto.
19484 (vint8m8_t): Ditto.
19485 (vint16mf4_t): Ditto.
19486 (vint16mf2_t): Ditto.
19487 (vint16m1_t): Ditto.
19488 (vint16m2_t): Ditto.
19489 (vint16m4_t): Ditto.
19490 (vint16m8_t): Ditto.
19491 (vint32mf2_t): Ditto.
19492 (vint32m1_t): Ditto.
19493 (vint32m2_t): Ditto.
19494 (vint32m4_t): Ditto.
19495 (vint32m8_t): Ditto.
19496 (vuint8mf8_t): Ditto.
19497 (vuint8mf4_t): Ditto.
19498 (vuint8mf2_t): Ditto.
19499 (vuint8m1_t): Ditto.
19500 (vuint8m2_t): Ditto.
19501 (vuint8m4_t): Ditto.
19502 (vuint8m8_t): Ditto.
19503 (vuint16mf4_t): Ditto.
19504 (vuint16mf2_t): Ditto.
19505 (vuint16m1_t): Ditto.
19506 (vuint16m2_t): Ditto.
19507 (vuint16m4_t): Ditto.
19508 (vuint16m8_t): Ditto.
19509 (vuint32mf2_t): Ditto.
19510 (vuint32m1_t): Ditto.
19511 (vuint32m2_t): Ditto.
19512 (vuint32m4_t): Ditto.
19513 (vuint32m8_t): Ditto.
19514 (vfloat32mf2_t): Ditto.
19515 (vfloat32m1_t): Ditto.
19516 (vfloat32m2_t): Ditto.
19517 (vfloat32m4_t): Ditto.
19518 (vfloat32m8_t): Ditto.
19519 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
19520 (DEF_RVV_WU_OPS): Ditto.
19521 (DEF_RVV_WF_OPS): Ditto.
19522 (required_extensions_p): Add reduction support.
19523 (rvv_arg_type_info::get_base_vector_type): Ditto.
19524 (rvv_arg_type_info::get_tree_type): Ditto.
19525 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
19526 * config/riscv/riscv.md: Ditto.
19527 * config/riscv/vector-iterators.md (minu): Ditto.
19528 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
19529 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
19530 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
19531 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
19532 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
19533 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
19534 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
19536 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19538 * config/riscv/iterators.md: New iterator.
19539 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
19540 (enum ternop_type): New enum.
19541 (class vmacc): New class.
19542 (class imac): Ditto.
19543 (class vnmsac): Ditto.
19544 (enum widen_ternop_type): New enum.
19545 (class vmadd): Ditto.
19546 (class vnmsub): Ditto.
19547 (class iwmac): Ditto.
19548 (class vwmacc): Ditto.
19549 (class vwmaccu): Ditto.
19550 (class vwmaccsu): Ditto.
19551 (class vwmaccus): Ditto.
19552 (class reverse_binop): Ditto.
19553 (class vfmacc): Ditto.
19554 (class vfnmsac): Ditto.
19555 (class vfmadd): Ditto.
19556 (class vfnmsub): Ditto.
19557 (class vfnmacc): Ditto.
19558 (class vfmsac): Ditto.
19559 (class vfnmadd): Ditto.
19560 (class vfmsub): Ditto.
19561 (class vfwmacc): Ditto.
19562 (class vfwnmacc): Ditto.
19563 (class vfwmsac): Ditto.
19564 (class vfwnmsac): Ditto.
19565 (class float_misc): Ditto.
19566 (class fcmp): Ditto.
19567 (class vfclass): Ditto.
19568 (class vfcvt_x): Ditto.
19569 (class vfcvt_rtz_x): Ditto.
19570 (class vfcvt_f): Ditto.
19571 (class vfwcvt_x): Ditto.
19572 (class vfwcvt_rtz_x): Ditto.
19573 (class vfwcvt_f): Ditto.
19574 (class vfncvt_x): Ditto.
19575 (class vfncvt_rtz_x): Ditto.
19576 (class vfncvt_f): Ditto.
19577 (class vfncvt_rod_f): Ditto.
19579 * config/riscv/riscv-vector-builtins-bases.h:
19580 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
19624 (vfcvt_rtz_x): Ditto.
19625 (vfcvt_rtz_xu): Ditto.
19628 (vfwcvt_xu): Ditto.
19629 (vfwcvt_rtz_x): Ditto.
19630 (vfwcvt_rtz_xu): Ditto.
19633 (vfncvt_xu): Ditto.
19634 (vfncvt_rtz_x): Ditto.
19635 (vfncvt_rtz_xu): Ditto.
19637 (vfncvt_rod_f): Ditto.
19638 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
19639 (struct move_def): Ditto.
19640 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
19641 (DEF_RVV_CONVERT_I_OPS): Ditto.
19642 (DEF_RVV_CONVERT_U_OPS): Ditto.
19643 (DEF_RVV_WCONVERT_I_OPS): Ditto.
19644 (DEF_RVV_WCONVERT_U_OPS): Ditto.
19645 (DEF_RVV_WCONVERT_F_OPS): Ditto.
19646 (vfloat64m1_t): Ditto.
19647 (vfloat64m2_t): Ditto.
19648 (vfloat64m4_t): Ditto.
19649 (vfloat64m8_t): Ditto.
19650 (vint32mf2_t): Ditto.
19651 (vint32m1_t): Ditto.
19652 (vint32m2_t): Ditto.
19653 (vint32m4_t): Ditto.
19654 (vint32m8_t): Ditto.
19655 (vint64m1_t): Ditto.
19656 (vint64m2_t): Ditto.
19657 (vint64m4_t): Ditto.
19658 (vint64m8_t): Ditto.
19659 (vuint32mf2_t): Ditto.
19660 (vuint32m1_t): Ditto.
19661 (vuint32m2_t): Ditto.
19662 (vuint32m4_t): Ditto.
19663 (vuint32m8_t): Ditto.
19664 (vuint64m1_t): Ditto.
19665 (vuint64m2_t): Ditto.
19666 (vuint64m4_t): Ditto.
19667 (vuint64m8_t): Ditto.
19668 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
19669 (DEF_RVV_CONVERT_U_OPS): Ditto.
19670 (DEF_RVV_WCONVERT_I_OPS): Ditto.
19671 (DEF_RVV_WCONVERT_U_OPS): Ditto.
19672 (DEF_RVV_WCONVERT_F_OPS): Ditto.
19673 (DEF_RVV_F_OPS): Ditto.
19674 (DEF_RVV_WEXTF_OPS): Ditto.
19675 (required_extensions_p): Adjust for floating-point support.
19676 (check_required_extensions): Ditto.
19677 (unsigned_base_type_p): Ditto.
19678 (get_mode_for_bitsize): Ditto.
19679 (rvv_arg_type_info::get_base_vector_type): Ditto.
19680 (rvv_arg_type_info::get_tree_type): Ditto.
19681 * config/riscv/riscv-vector-builtins.def (v_f): New define.
19684 (xu_v): New define.
19686 (xu_w): New define.
19687 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
19688 (function_expander::arg_mode): New function.
19689 * config/riscv/vector-iterators.md (sof): New iterator.
19695 (fixuns_trunc): Ditto.
19697 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
19698 (@pred_<optab><mode>): Ditto.
19699 (@pred_<optab><mode>_scalar): Ditto.
19700 (@pred_<optab><mode>_reverse_scalar): Ditto.
19701 (@pred_<copysign><mode>): Ditto.
19702 (@pred_<copysign><mode>_scalar): Ditto.
19703 (@pred_mul_<optab><mode>): Ditto.
19704 (pred_mul_<optab><mode>_undef_merge): Ditto.
19705 (*pred_<madd_nmsub><mode>): Ditto.
19706 (*pred_<macc_nmsac><mode>): Ditto.
19707 (*pred_mul_<optab><mode>): Ditto.
19708 (@pred_mul_<optab><mode>_scalar): Ditto.
19709 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
19710 (*pred_<madd_nmsub><mode>_scalar): Ditto.
19711 (*pred_<macc_nmsac><mode>_scalar): Ditto.
19712 (*pred_mul_<optab><mode>_scalar): Ditto.
19713 (@pred_neg_mul_<optab><mode>): Ditto.
19714 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
19715 (*pred_<nmadd_msub><mode>): Ditto.
19716 (*pred_<nmacc_msac><mode>): Ditto.
19717 (*pred_neg_mul_<optab><mode>): Ditto.
19718 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
19719 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
19720 (*pred_<nmadd_msub><mode>_scalar): Ditto.
19721 (*pred_<nmacc_msac><mode>_scalar): Ditto.
19722 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
19723 (@pred_<misc_op><mode>): Ditto.
19724 (@pred_class<mode>): Ditto.
19725 (@pred_dual_widen_<optab><mode>): Ditto.
19726 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
19727 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
19728 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
19729 (@pred_widen_mul_<optab><mode>): Ditto.
19730 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
19731 (@pred_widen_neg_mul_<optab><mode>): Ditto.
19732 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
19733 (@pred_cmp<mode>): Ditto.
19734 (*pred_cmp<mode>): Ditto.
19735 (*pred_cmp<mode>_narrow): Ditto.
19736 (@pred_cmp<mode>_scalar): Ditto.
19737 (*pred_cmp<mode>_scalar): Ditto.
19738 (*pred_cmp<mode>_scalar_narrow): Ditto.
19739 (@pred_eqne<mode>_scalar): Ditto.
19740 (*pred_eqne<mode>_scalar): Ditto.
19741 (*pred_eqne<mode>_scalar_narrow): Ditto.
19742 (@pred_merge<mode>_scalar): Ditto.
19743 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
19744 (@pred_<fix_cvt><mode>): Ditto.
19745 (@pred_<float_cvt><mode>): Ditto.
19746 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
19747 (@pred_widen_<fix_cvt><mode>): Ditto.
19748 (@pred_widen_<float_cvt><mode>): Ditto.
19749 (@pred_extend<mode>): Ditto.
19750 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
19751 (@pred_narrow_<fix_cvt><mode>): Ditto.
19752 (@pred_narrow_<float_cvt><mode>): Ditto.
19753 (@pred_trunc<mode>): Ditto.
19754 (@pred_rod_trunc<mode>): Ditto.
19756 2023-02-22 Jakub Jelinek <jakub@redhat.com>
19758 PR middle-end/106258
19759 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
19760 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
19761 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
19762 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
19764 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
19766 * common.opt (-Wcomplain-wrong-lang): New.
19767 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
19768 * opts-common.cc (prune_options): Handle it.
19769 * opts-global.cc (complain_wrong_lang): Use it.
19771 2023-02-21 David Malcolm <dmalcolm@redhat.com>
19774 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
19776 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
19779 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
19781 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
19782 (sibcall_value, sibcall_value_internal): Add 'use' expression
19785 2023-02-21 Richard Biener <rguenther@suse.de>
19787 PR tree-optimization/108691
19788 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
19789 assert about calls_setjmp not becoming true when it was false.
19791 2023-02-21 Richard Biener <rguenther@suse.de>
19793 PR tree-optimization/108793
19794 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
19795 Use convert operands to niter_type when computing num.
19797 2023-02-21 Richard Biener <rguenther@suse.de>
19800 2023-02-13 Richard Biener <rguenther@suse.de>
19802 PR tree-optimization/108691
19803 * tree-cfg.cc (notice_special_calls): When the CFG is built
19804 honor gimple_call_ctrl_altering_p.
19805 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
19806 temporarily if the call is not control-altering.
19807 * calls.cc (emit_call_1): Do not add REG_SETJMP if
19808 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
19810 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19812 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
19813 true if register A0 (return address register) when -Og is specified.
19815 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
19817 * config/i386/predicates.md
19818 (general_x64constmem_operand): New predicate.
19819 * config/i386/i386.md (*cmpqi_ext<mode>_1):
19820 Use nonimm_x64constmem_operand.
19821 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
19822 (*addqi_ext<mode>_1): Ditto.
19823 (*testqi_ext<mode>_1): Ditto.
19824 (*andqi_ext<mode>_1): Ditto.
19825 (*andqi_ext<mode>_1_cc): Ditto.
19826 (*<any_or:code>qi_ext<mode>_1): Ditto.
19827 (*xorqi_ext<mode>_1_cc): Ditto.
19829 2023-02-20 Jakub Jelinek <jakub2redhat.com>
19832 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
19833 gen_umadddi4_highpart{,_le}.
19835 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
19837 * config/riscv/riscv.md (prefetch): Use r instead of p for the
19839 (riscv_prefetchi_<mode>): Ditto.
19841 2023-02-20 Richard Biener <rguenther@suse.de>
19843 PR tree-optimization/108816
19844 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
19845 versioning condition split prerequesite, assert required
19848 2023-02-20 Richard Biener <rguenther@suse.de>
19850 PR tree-optimization/108825
19851 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
19852 loop-local verfication only verify there's no pending SSA
19855 2023-02-20 Richard Biener <rguenther@suse.de>
19857 PR tree-optimization/108819
19858 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
19859 we have an SSA name as iv_2 as expected.
19861 2023-02-18 Jakub Jelinek <jakub@redhat.com>
19863 PR tree-optimization/108819
19864 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
19866 2023-02-18 Jakub Jelinek <jakub@redhat.com>
19869 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
19870 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
19872 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
19873 with ix86_replace_reg_with_reg.
19875 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
19877 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
19879 2023-02-18 Xi Ruoyao <xry111@xry111.site>
19881 * config.gcc (triplet_abi): Set its value based on $with_abi,
19882 instead of $target.
19883 (la_canonical_triplet): Set it after $triplet_abi is set
19885 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
19886 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
19889 2023-02-18 Andrew Pinski <apinski@marvell.com>
19891 * match.pd: Remove #if GIMPLE around the
19894 2023-02-18 Andrew Pinski <apinski@marvell.com>
19896 * value-query.h (get_range_query): Return the global ranges
19897 for a nullptr func.
19899 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
19901 * doc/invoke.texi (@item -Wall): Fix typo in
19904 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
19907 * config/i386/predicates.md
19908 (nonimm_x64constmem_operand): New predicate.
19909 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
19910 (*subqi_ext<mode>_0): Ditto.
19911 (*andqi_ext<mode>_0): Ditto.
19912 (*<any_or:code>qi_ext<mode>_0): Ditto.
19914 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
19917 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
19918 int_outermode instead of GET_MODE (tem) to prevent
19919 VOIDmode from entering simplify_gen_subreg.
19921 2023-02-17 Richard Biener <rguenther@suse.de>
19923 PR tree-optimization/108821
19924 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
19925 move volatile accesses.
19927 2023-02-17 Richard Biener <rguenther@suse.de>
19929 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
19930 called on virtual operands.
19931 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
19932 ssa_undefined_value_p calls.
19933 (vn_phi_insert): Likewise.
19934 (set_ssa_val_to): Likewise.
19935 (visit_phi): Avoid extra work with equivalences for
19936 virtual operand PHIs.
19938 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19940 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
19942 (class mask_nlogic): Ditto.
19943 (class mask_notlogic): Ditto.
19944 (class vmmv): Ditto.
19945 (class vmclr): Ditto.
19946 (class vmset): Ditto.
19947 (class vmnot): Ditto.
19948 (class vcpop): Ditto.
19949 (class vfirst): Ditto.
19950 (class mask_misc): Ditto.
19951 (class viota): Ditto.
19952 (class vid): Ditto.
19954 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19955 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
19974 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
19975 (struct mask_alu_def): Ditto.
19977 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19978 * config/riscv/riscv-vector-builtins.cc: Ditto.
19979 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
19980 for dest it scalar RVV intrinsics.
19981 * config/riscv/vector-iterators.md (sof): New iterator.
19982 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
19983 (@pred_<optab>not<mode>): New pattern.
19984 (@pred_popcount<VB:mode><P:mode>): New pattern.
19985 (@pred_ffs<VB:mode><P:mode>): New pattern.
19986 (@pred_<misc_op><mode>): New pattern.
19987 (@pred_iota<mode>): New pattern.
19988 (@pred_series<mode>): New pattern.
19990 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19992 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
19996 * config/riscv/riscv-vector-builtins.cc: Ditto.
19998 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19999 kito-cheng <kito.cheng@sifive.com>
20001 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
20002 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
20003 (sew64_scalar_helper): New function.
20004 * config/riscv/vector.md: Normalization.
20006 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20008 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
20070 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20072 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
20073 (@pred_<optab><mode>_scalar): Ditto.
20074 (*pred_<optab><mode>_scalar): Ditto.
20075 (*pred_<optab><mode>_extended_scalar): Ditto.
20077 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20079 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
20080 (init_builtins): Ditto.
20081 (mangle_builtin_type): Ditto.
20082 (verify_type_context): Ditto.
20083 (handle_pragma_vector): Ditto.
20084 (builtin_decl): Ditto.
20085 (expand_builtin): Ditto.
20086 (const_vec_all_same_in_range_p): Ditto.
20087 (legitimize_move): Ditto.
20088 (emit_vlmax_op): Ditto.
20089 (emit_nonvlmax_op): Ditto.
20090 (get_vlmul): Ditto.
20091 (get_ratio): Ditto.
20094 (get_avl_type): Ditto.
20095 (calculate_ratio): Ditto.
20096 (enum vlmul_type): Ditto.
20098 (neg_simm5_p): Ditto.
20099 (has_vi_variant_p): Ditto.
20101 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20103 * config/riscv/riscv-protos.h (simm32_p): Remove.
20104 * config/riscv/riscv-v.cc (simm32_p): Ditto.
20105 * config/riscv/vector.md: Use immediate_operand
20106 instead of riscv_vector::simm32_p.
20108 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
20110 * doc/invoke.texi (Optimize Options): Reword the explanation
20111 getting minimal, maximal and default values of a parameter.
20113 2023-02-16 Patrick Palka <ppalka@redhat.com>
20115 * addresses.h: Mechanically drop 'static' from 'static inline'
20116 functions via s/^static inline/inline/g.
20117 * asan.h: Likewise.
20118 * attribs.h: Likewise.
20119 * basic-block.h: Likewise.
20120 * bitmap.h: Likewise.
20121 * cfghooks.h: Likewise.
20122 * cfgloop.h: Likewise.
20123 * cgraph.h: Likewise.
20124 * cselib.h: Likewise.
20125 * data-streamer.h: Likewise.
20126 * debug.h: Likewise.
20128 * diagnostic.h: Likewise.
20129 * dominance.h: Likewise.
20130 * dumpfile.h: Likewise.
20131 * emit-rtl.h: Likewise.
20132 * except.h: Likewise.
20133 * expmed.h: Likewise.
20134 * expr.h: Likewise.
20135 * fixed-value.h: Likewise.
20136 * gengtype.h: Likewise.
20137 * gimple-expr.h: Likewise.
20138 * gimple-iterator.h: Likewise.
20139 * gimple-predict.h: Likewise.
20140 * gimple-range-fold.h: Likewise.
20141 * gimple-ssa.h: Likewise.
20142 * gimple.h: Likewise.
20143 * graphite.h: Likewise.
20144 * hard-reg-set.h: Likewise.
20145 * hash-map.h: Likewise.
20146 * hash-set.h: Likewise.
20147 * hash-table.h: Likewise.
20148 * hwint.h: Likewise.
20149 * input.h: Likewise.
20150 * insn-addr.h: Likewise.
20151 * internal-fn.h: Likewise.
20152 * ipa-fnsummary.h: Likewise.
20153 * ipa-icf-gimple.h: Likewise.
20154 * ipa-inline.h: Likewise.
20155 * ipa-modref.h: Likewise.
20156 * ipa-prop.h: Likewise.
20157 * ira-int.h: Likewise.
20159 * lra-int.h: Likewise.
20161 * lto-streamer.h: Likewise.
20162 * memmodel.h: Likewise.
20163 * omp-general.h: Likewise.
20164 * optabs-query.h: Likewise.
20165 * optabs.h: Likewise.
20166 * plugin.h: Likewise.
20167 * pretty-print.h: Likewise.
20168 * range.h: Likewise.
20169 * read-md.h: Likewise.
20170 * recog.h: Likewise.
20171 * regs.h: Likewise.
20172 * rtl-iter.h: Likewise.
20174 * sbitmap.h: Likewise.
20175 * sched-int.h: Likewise.
20176 * sel-sched-ir.h: Likewise.
20177 * sese.h: Likewise.
20178 * sparseset.h: Likewise.
20179 * ssa-iterators.h: Likewise.
20180 * system.h: Likewise.
20181 * target-globals.h: Likewise.
20182 * target.h: Likewise.
20183 * timevar.h: Likewise.
20184 * tree-chrec.h: Likewise.
20185 * tree-data-ref.h: Likewise.
20186 * tree-iterator.h: Likewise.
20187 * tree-outof-ssa.h: Likewise.
20188 * tree-phinodes.h: Likewise.
20189 * tree-scalar-evolution.h: Likewise.
20190 * tree-sra.h: Likewise.
20191 * tree-ssa-alias.h: Likewise.
20192 * tree-ssa-live.h: Likewise.
20193 * tree-ssa-loop-manip.h: Likewise.
20194 * tree-ssa-loop.h: Likewise.
20195 * tree-ssa-operands.h: Likewise.
20196 * tree-ssa-propagate.h: Likewise.
20197 * tree-ssa-sccvn.h: Likewise.
20198 * tree-ssa.h: Likewise.
20199 * tree-ssanames.h: Likewise.
20200 * tree-streamer.h: Likewise.
20201 * tree-switch-conversion.h: Likewise.
20202 * tree-vectorizer.h: Likewise.
20203 * tree.h: Likewise.
20204 * wide-int.h: Likewise.
20206 2023-02-16 Jakub Jelinek <jakub@redhat.com>
20208 PR tree-optimization/108657
20209 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
20210 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
20211 is a call to internal or builtin function.
20213 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
20215 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
20216 using-declaration to unhide functions.
20218 2023-02-16 Jakub Jelinek <jakub@redhat.com>
20220 PR tree-optimization/108783
20221 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
20222 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
20223 t to curr->op. Otherwise, punt if either newop1 or newop2 are
20224 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
20226 2023-02-16 Richard Biener <rguenther@suse.de>
20228 PR tree-optimization/108791
20229 * tree-ssa-forwprop.cc (optimize_vector_load): Build
20230 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
20233 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
20236 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
20237 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
20238 (ix86_expand_prologue): Likewise.
20240 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
20242 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
20244 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
20246 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
20247 int248_register_operand predicate in zero_extract sub-RTX.
20248 (*cmpqi_ext<mode>_2): Ditto.
20249 (*cmpqi_ext<mode>_3): Ditto.
20250 (*cmpqi_ext<mode>_4): Ditto.
20251 (*extzvqi_mem_rex64): Ditto.
20253 (*insvqi_1_mem_rex64): Ditto.
20254 (@insv<mode>_1): Ditto.
20255 (*insvqi_1): Ditto.
20256 (*insvqi_2): Ditto.
20257 (*insvqi_3): Ditto.
20258 (*extendqi<SWI24:mode>_ext_1): Ditto.
20259 (*addqi_ext<mode>_1): Ditto.
20260 (*addqi_ext<mode>_2): Ditto.
20261 (*subqi_ext<mode>_2): Ditto.
20262 (*testqi_ext<mode>_1): Ditto.
20263 (*testqi_ext<mode>_2): Ditto.
20264 (*andqi_ext<mode>_1): Ditto.
20265 (*andqi_ext<mode>_1_cc): Ditto.
20266 (*andqi_ext<mode>_2): Ditto.
20267 (*<any_or:code>qi_ext<mode>_1): Ditto.
20268 (*<any_or:code>qi_ext<mode>_2): Ditto.
20269 (*xorqi_ext<mode>_1_cc): Ditto.
20270 (*negqi_ext<mode>_2): Ditto.
20271 (*ashlqi_ext<mode>_2): Ditto.
20272 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
20274 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
20276 * config/i386/predicates.md (int248_register_operand):
20277 Rename from extr_register_operand.
20278 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
20279 (*extzx<mode>): Ditto.
20280 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
20281 (*ashl<mode>3_mask): Ditto.
20282 (*<any_shiftrt:insn><mode>3_mask): Ditto.
20283 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
20284 (*<any_rotate:insn><mode>3_mask): Ditto.
20285 (*<btsc><mode>_mask): Ditto.
20286 (*btr<mode>_mask): Ditto.
20287 (*jcc_bt<mode>_mask_1): Ditto.
20289 2023-02-15 Richard Biener <rguenther@suse.de>
20291 PR middle-end/26854
20292 * df-core.cc (df_worklist_propagate_forward): Put later
20293 blocks on worklist and only earlier blocks on pending.
20294 (df_worklist_propagate_backward): Likewise.
20295 (df_worklist_dataflow_doublequeue): Change the iteration
20296 to process new blocks in the same iteration if that
20297 maintains the iteration order.
20299 2023-02-15 Marek Polacek <polacek@redhat.com>
20301 PR middle-end/106080
20302 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
20305 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20307 * config/riscv/predicates.md: Refine codes.
20308 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
20309 * config/riscv/riscv-v.cc: Refine codes.
20310 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
20312 (class imac): New class.
20313 (enum widen_ternop_type): New enum.
20314 (class iwmac): New class.
20316 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20317 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
20325 * config/riscv/riscv-vector-builtins.cc
20326 (function_builder::apply_predication): Adjust for multiply-add support.
20327 (function_expander::add_vundef_operand): Refine codes.
20328 (function_expander::use_ternop_insn): New function.
20329 (function_expander::use_widen_ternop_insn): Ditto.
20330 * config/riscv/riscv-vector-builtins.h: New function.
20331 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
20332 (pred_mul_<optab><mode>_undef_merge): Ditto.
20333 (*pred_<madd_nmsub><mode>): Ditto.
20334 (*pred_<macc_nmsac><mode>): Ditto.
20335 (*pred_mul_<optab><mode>): Ditto.
20336 (@pred_mul_<optab><mode>_scalar): Ditto.
20337 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
20338 (*pred_<madd_nmsub><mode>_scalar): Ditto.
20339 (*pred_<macc_nmsac><mode>_scalar): Ditto.
20340 (*pred_mul_<optab><mode>_scalar): Ditto.
20341 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
20342 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
20343 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
20344 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
20345 (@pred_widen_mul_plus<su><mode>): Ditto.
20346 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
20347 (@pred_widen_mul_plussu<mode>): Ditto.
20348 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
20349 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
20351 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20353 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
20354 (vector_all_trues_mask_operand): New predicate.
20355 (vector_undef_operand): New predicate.
20356 (ltge_operator): New predicate.
20357 (comparison_except_ltge_operator): New predicate.
20358 (comparison_except_eqge_operator): New predicate.
20359 (ge_operator): New predicate.
20360 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
20361 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
20363 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20364 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
20374 * config/riscv/riscv-vector-builtins-shapes.cc
20375 (struct return_mask_def): Adjust for compare support.
20376 * config/riscv/riscv-vector-builtins.cc
20377 (function_expander::use_compare_insn): New function.
20378 * config/riscv/riscv-vector-builtins.h
20379 (function_expander::add_integer_operand): Ditto.
20380 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
20381 * config/riscv/riscv.md: Add vector min/max attributes.
20382 * config/riscv/vector-iterators.md (xnor): New iterator.
20383 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
20384 (*pred_cmp<mode>): Ditto.
20385 (*pred_cmp<mode>_narrow): Ditto.
20386 (@pred_ltge<mode>): Ditto.
20387 (*pred_ltge<mode>): Ditto.
20388 (*pred_ltge<mode>_narrow): Ditto.
20389 (@pred_cmp<mode>_scalar): Ditto.
20390 (*pred_cmp<mode>_scalar): Ditto.
20391 (*pred_cmp<mode>_scalar_narrow): Ditto.
20392 (@pred_eqne<mode>_scalar): Ditto.
20393 (*pred_eqne<mode>_scalar): Ditto.
20394 (*pred_eqne<mode>_scalar_narrow): Ditto.
20395 (*pred_cmp<mode>_extended_scalar): Ditto.
20396 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
20397 (*pred_eqne<mode>_extended_scalar): Ditto.
20398 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
20399 (@pred_ge<mode>_scalar): Ditto.
20400 (@pred_<optab><mode>): Ditto.
20401 (@pred_n<optab><mode>): Ditto.
20402 (@pred_<optab>n<mode>): Ditto.
20403 (@pred_not<mode>): Ditto.
20405 2023-02-15 Martin Jambor <mjambor@suse.cz>
20408 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
20409 creation of non-scalar replacements even if IPA-CP knows their
20412 2023-02-15 Jakub Jelinek <jakub@redhat.com>
20416 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
20417 expander, change operand 3 to be TImode, emit maddlddi4 and
20418 umadddi4_highpart{,_le} with its low half and finally add the high
20419 half to the result.
20421 2023-02-15 Martin Liska <mliska@suse.cz>
20423 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
20425 2023-02-15 Richard Biener <rguenther@suse.de>
20427 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
20428 for with_poison and alias worklist to it.
20429 (sanitize_asan_mark_poison): Likewise.
20431 2023-02-15 Richard Biener <rguenther@suse.de>
20434 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
20435 Combine bitmap test and set.
20436 (scalar_chain::add_insn): Likewise.
20437 (scalar_chain::analyze_register_chain): Remove redundant
20438 attempt to add to queue and instead strengthen assert.
20439 Sink common attempts to mark the def dual-mode.
20440 (scalar_chain::add_to_queue): Remove redundant insn bitmap
20443 2023-02-15 Richard Biener <rguenther@suse.de>
20446 * config/i386/i386-features.cc (convert_scalars_to_vector):
20447 Switch candidates bitmaps to tree view before building the chains.
20449 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
20451 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
20452 "failure trying to reload" call.
20454 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
20456 * gdbinit.in (phrs): New command.
20457 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
20458 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
20460 2023-02-14 David Faust <david.faust@oracle.com>
20463 * config/bpf/constraints.md (q): New memory constraint.
20464 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
20465 (zero_extendqidi2): Likewise.
20466 (zero_extendsidi2): Likewise.
20467 (*mov<MM:mode>): Likewise.
20469 2023-02-14 Andrew Pinski <apinski@marvell.com>
20471 PR tree-optimization/108355
20472 PR tree-optimization/96921
20473 * match.pd: Add pattern for "1 - bool_val".
20475 2023-02-14 Richard Biener <rguenther@suse.de>
20477 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
20478 basic block index hashing on the availability of ->cclhs.
20479 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
20480 rely on ->cclhs availability.
20481 (vn_phi_lookup): Set ->cclhs only when we are eventually
20482 going to CSE the PHI.
20483 (vn_phi_insert): Likewise.
20485 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
20487 * gimplify.cc (gimplify_save_expr): Add missing guard.
20489 2023-02-14 Richard Biener <rguenther@suse.de>
20491 PR tree-optimization/108782
20492 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
20493 Make sure we're not vectorizing an inner loop.
20495 2023-02-14 Jakub Jelinek <jakub@redhat.com>
20497 PR sanitizer/108777
20498 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
20499 * asan.h (asan_memfn_rtl): Declare.
20500 * asan.cc (asan_memfn_rtls): New variable.
20501 (asan_memfn_rtl): New function.
20502 * builtins.cc (expand_builtin): If
20503 param_asan_kernel_mem_intrinsic_prefix and function is
20504 kernel-{,hw}address sanitized, emit calls to
20505 __{,hw}asan_{memcpy,memmove,memset} rather than
20506 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
20507 instead of flag_sanitize & SANITIZE_ADDRESS to check if
20508 asan_intercepted_p functions shouldn't be expanded inline.
20510 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
20512 PR tree-optimization/96373
20513 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
20514 operations on the loop mask. Reject partial vectors if this isn't
20517 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
20519 PR rtl-optimization/108681
20520 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
20521 code to handle bare uses and clobbers.
20523 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
20525 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
20526 caller_save_p flag when clearing defined_p flag.
20527 (setup_reg_equiv): Ditto.
20528 * lra-constraints.cc (lra_constraints): Ditto.
20530 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
20533 * config/i386/predicates.md (extr_register_operand):
20534 New special predicate.
20535 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
20536 as operand 1 predicate.
20537 (*exzv<mode>): Ditto.
20538 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
20540 2023-02-13 Richard Biener <rguenther@suse.de>
20542 PR tree-optimization/28614
20543 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
20544 walking all edges in most cases.
20545 (vn_nary_op_insert_pieces_predicated): Avoid repeated
20546 calls to can_track_predicate_on_edge unless checking is
20548 (process_bb): Instead call it once here for each edge
20549 we register possibly multiple predicates on.
20551 2023-02-13 Richard Biener <rguenther@suse.de>
20553 PR tree-optimization/108691
20554 * tree-cfg.cc (notice_special_calls): When the CFG is built
20555 honor gimple_call_ctrl_altering_p.
20556 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
20557 temporarily if the call is not control-altering.
20558 * calls.cc (emit_call_1): Do not add REG_SETJMP if
20559 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
20561 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20564 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
20565 (struct s390_sched_state): Initialise to zero.
20566 (s390_sched_variable_issue): For better debuggability also emit
20568 (s390_sched_init): Unconditionally reset scheduler state.
20570 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
20572 * ifcvt.h (noce_if_info::cond_inverted): New field.
20573 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
20574 values when cond_inverted is true.
20575 (noce_find_if_block): Allow the condition to be inverted when
20576 handling conditional moves.
20578 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20580 * config/s390/predicates.md (execute_operation): Use
20581 constrain_operands instead of extract_constrain_insn in order to
20582 determine wheter there exists a valid alternative.
20584 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
20586 * common/config/arc/arc-common.cc (arc_option_optimization_table):
20587 Remove millicode from list.
20589 2023-02-13 Martin Liska <mliska@suse.cz>
20591 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
20593 2023-02-13 Richard Biener <rguenther@suse.de>
20595 PR tree-optimization/106722
20596 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
20597 whether we marked a stmt.
20598 (mark_control_dependent_edges_necessary): When
20599 mark_last_stmt_necessary didn't mark any stmt make sure
20600 to mark its control dependent edges.
20601 (propagate_necessity): Likewise.
20603 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
20605 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
20606 (DWARF_FRAME_REGISTERS): New.
20607 (DWARF_REG_TO_UNWIND_COLUMN): New.
20609 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
20611 * doc/sourcebuild.texi: Remove (broken) direct reference to
20612 "The GNU configure and build system".
20614 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
20616 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
20617 gen_add3_insn to gen_rtx_SET.
20618 (riscv_adjust_libcall_cfi_epilogue): Likewise.
20620 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20622 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
20623 (class vnclip): Ditto.
20625 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20626 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
20635 * config/riscv/vector-iterators.md (su): Add instruction.
20638 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
20639 (@pred_<sat_op><mode>_scalar): Ditto.
20640 (*pred_<sat_op><mode>_scalar): Ditto.
20641 (*pred_<sat_op><mode>_extended_scalar): Ditto.
20642 (@pred_narrow_clip<v_su><mode>): Ditto.
20643 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
20645 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20647 * config/riscv/constraints.md (Wbr): Remove unused constraint.
20648 * config/riscv/predicates.md: Fix move operand predicate.
20649 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
20650 (class vncvt_x): Ditto.
20651 (class vmerge): Ditto.
20652 (class vmv_v): Ditto.
20654 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20655 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
20662 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
20663 (struct move_def): Ditto.
20665 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20666 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
20667 (DEF_RVV_WEXTU_OPS): Ditto
20668 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
20673 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
20674 * config/riscv/vector-iterators.md (nmsac):New iterator.
20675 (nmsub): New iterator.
20676 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
20677 (@pred_merge<mode>_scalar): New pattern.
20678 (*pred_merge<mode>_scalar): New pattern.
20679 (*pred_merge<mode>_extended_scalar): New pattern.
20680 (@pred_narrow_<optab><mode>): New pattern.
20681 (@pred_narrow_<optab><mode>_scalar): New pattern.
20682 (@pred_trunc<mode>): New pattern.
20684 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20686 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
20687 (class vmsbc): Ditto.
20688 (BASE): Define new class.
20689 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20690 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
20692 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
20695 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20696 * config/riscv/riscv-vector-builtins.cc
20697 (function_expander::use_exact_insn): Adjust for new support
20698 * config/riscv/riscv-vector-builtins.h
20699 (function_base::has_merge_operand_p): New function.
20700 * config/riscv/vector-iterators.md: New iterator.
20701 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
20702 (@pred_msbc<mode>): Ditto.
20703 (@pred_madc<mode>_scalar): Ditto.
20704 (@pred_msbc<mode>_scalar): Ditto.
20705 (*pred_madc<mode>_scalar): Ditto.
20706 (*pred_madc<mode>_extended_scalar): Ditto.
20707 (*pred_msbc<mode>_scalar): Ditto.
20708 (*pred_msbc<mode>_extended_scalar): Ditto.
20709 (@pred_madc<mode>_overflow): Ditto.
20710 (@pred_msbc<mode>_overflow): Ditto.
20711 (@pred_madc<mode>_overflow_scalar): Ditto.
20712 (@pred_msbc<mode>_overflow_scalar): Ditto.
20713 (*pred_madc<mode>_overflow_scalar): Ditto.
20714 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
20715 (*pred_msbc<mode>_overflow_scalar): Ditto.
20716 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
20718 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20720 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
20721 * config/riscv/riscv-v.cc (simm32_p): Ditto.
20722 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
20723 (class vsbc): Ditto.
20725 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20726 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
20728 * config/riscv/riscv-vector-builtins-shapes.cc
20729 (struct no_mask_policy_def): Ditto.
20731 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20732 * config/riscv/riscv-vector-builtins.cc
20733 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
20734 (rvv_arg_type_info::get_tree_type): Ditto.
20735 (function_expander::use_exact_insn): Ditto.
20736 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
20737 (function_base::use_mask_predication_p): New function.
20738 * config/riscv/vector-iterators.md: New iterator.
20739 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
20740 (@pred_sbc<mode>): Ditto.
20741 (@pred_adc<mode>_scalar): Ditto.
20742 (@pred_sbc<mode>_scalar): Ditto.
20743 (*pred_adc<mode>_scalar): Ditto.
20744 (*pred_adc<mode>_extended_scalar): Ditto.
20745 (*pred_sbc<mode>_scalar): Ditto.
20746 (*pred_sbc<mode>_extended_scalar): Ditto.
20748 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20750 * config/riscv/vector.md: use "zero" reg.
20752 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20754 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
20756 (class vwmulsu): Ditto.
20757 (class vwcvt): Ditto.
20758 (BASE): Add integer widening support.
20759 * config/riscv/riscv-vector-builtins-bases.h: Ditto
20760 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
20761 (vwsub): New class.
20762 (vwmul): New class.
20763 (vwmulu): New class.
20764 (vwmulsu): New class.
20765 (vwaddu): New class.
20766 (vwsubu): New class.
20767 (vwcvt_x): New class.
20768 (vwcvtu_x): New class.
20769 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
20771 (struct widen_alu_def): New class.
20772 (SHAPE): New class.
20773 * config/riscv/riscv-vector-builtins-shapes.h: New class.
20774 * config/riscv/riscv-vector-builtins.cc
20775 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
20776 (rvv_arg_type_info::get_tree_type): Ditto.
20777 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
20779 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
20781 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
20782 * config/riscv/riscv.h (X0_REGNUM): New constant.
20783 * config/riscv/vector-iterators.md: New iterators.
20784 * config/riscv/vector.md
20785 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
20787 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
20789 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
20790 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
20792 (@pred_widen_mulsu<mode>): Ditto.
20793 (@pred_widen_mulsu<mode>_scalar): Ditto.
20794 (@pred_<optab><mode>): Ditto.
20796 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20797 kito-cheng <kito.cheng@sifive.com>
20799 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
20800 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
20802 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20803 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
20807 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
20809 (DEF_RVV_FULL_V_U_OPS): Ditto.
20810 (vint8mf8_t): Ditto.
20811 (vint8mf4_t): Ditto.
20812 (vint8mf2_t): Ditto.
20813 (vint8m1_t): Ditto.
20814 (vint8m2_t): Ditto.
20815 (vint8m4_t): Ditto.
20816 (vint8m8_t): Ditto.
20817 (vint16mf4_t): Ditto.
20818 (vint16mf2_t): Ditto.
20819 (vint16m1_t): Ditto.
20820 (vint16m2_t): Ditto.
20821 (vint16m4_t): Ditto.
20822 (vint16m8_t): Ditto.
20823 (vint32mf2_t): Ditto.
20824 (vint32m1_t): Ditto.
20825 (vint32m2_t): Ditto.
20826 (vint32m4_t): Ditto.
20827 (vint32m8_t): Ditto.
20828 (vint64m1_t): Ditto.
20829 (vint64m2_t): Ditto.
20830 (vint64m4_t): Ditto.
20831 (vint64m8_t): Ditto.
20832 (vuint8mf8_t): Ditto.
20833 (vuint8mf4_t): Ditto.
20834 (vuint8mf2_t): Ditto.
20835 (vuint8m1_t): Ditto.
20836 (vuint8m2_t): Ditto.
20837 (vuint8m4_t): Ditto.
20838 (vuint8m8_t): Ditto.
20839 (vuint16mf4_t): Ditto.
20840 (vuint16mf2_t): Ditto.
20841 (vuint16m1_t): Ditto.
20842 (vuint16m2_t): Ditto.
20843 (vuint16m4_t): Ditto.
20844 (vuint16m8_t): Ditto.
20845 (vuint32mf2_t): Ditto.
20846 (vuint32m1_t): Ditto.
20847 (vuint32m2_t): Ditto.
20848 (vuint32m4_t): Ditto.
20849 (vuint32m8_t): Ditto.
20850 (vuint64m1_t): Ditto.
20851 (vuint64m2_t): Ditto.
20852 (vuint64m4_t): Ditto.
20853 (vuint64m8_t): Ditto.
20854 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
20855 (DEF_RVV_FULL_V_U_OPS): Ditto.
20856 (check_required_extensions): Add vmulh support.
20857 (rvv_arg_type_info::get_tree_type): Ditto.
20858 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
20859 (enum rvv_base_type): Ditto.
20860 * config/riscv/riscv.opt: Add 'V' extension flag.
20861 * config/riscv/vector-iterators.md (su): New iterator.
20862 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
20863 (@pred_mulh<v_su><mode>_scalar): Ditto.
20864 (*pred_mulh<v_su><mode>_scalar): Ditto.
20865 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
20867 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20869 * config/riscv/iterators.md: Add sign_extend/zero_extend.
20870 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
20872 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
20873 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
20876 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
20877 for vsext/vzext support.
20878 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
20880 (DEF_RVV_QEXTI_OPS): Ditto.
20881 (DEF_RVV_OEXTI_OPS): Ditto.
20882 (DEF_RVV_WEXTU_OPS): Ditto.
20883 (DEF_RVV_QEXTU_OPS): Ditto.
20884 (DEF_RVV_OEXTU_OPS): Ditto.
20885 (vint16mf4_t): Ditto.
20886 (vint16mf2_t): Ditto.
20887 (vint16m1_t): Ditto.
20888 (vint16m2_t): Ditto.
20889 (vint16m4_t): Ditto.
20890 (vint16m8_t): Ditto.
20891 (vint32mf2_t): Ditto.
20892 (vint32m1_t): Ditto.
20893 (vint32m2_t): Ditto.
20894 (vint32m4_t): Ditto.
20895 (vint32m8_t): Ditto.
20896 (vint64m1_t): Ditto.
20897 (vint64m2_t): Ditto.
20898 (vint64m4_t): Ditto.
20899 (vint64m8_t): Ditto.
20900 (vuint16mf4_t): Ditto.
20901 (vuint16mf2_t): Ditto.
20902 (vuint16m1_t): Ditto.
20903 (vuint16m2_t): Ditto.
20904 (vuint16m4_t): Ditto.
20905 (vuint16m8_t): Ditto.
20906 (vuint32mf2_t): Ditto.
20907 (vuint32m1_t): Ditto.
20908 (vuint32m2_t): Ditto.
20909 (vuint32m4_t): Ditto.
20910 (vuint32m8_t): Ditto.
20911 (vuint64m1_t): Ditto.
20912 (vuint64m2_t): Ditto.
20913 (vuint64m4_t): Ditto.
20914 (vuint64m8_t): Ditto.
20915 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
20916 (DEF_RVV_QEXTI_OPS): Ditto.
20917 (DEF_RVV_OEXTI_OPS): Ditto.
20918 (DEF_RVV_WEXTU_OPS): Ditto.
20919 (DEF_RVV_QEXTU_OPS): Ditto.
20920 (DEF_RVV_OEXTU_OPS): Ditto.
20921 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
20923 (rvv_arg_type_info::get_tree_type): Ditto.
20924 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
20925 * config/riscv/vector-iterators.md (z): New attribute.
20926 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
20927 (@pred_<optab><mode>_vf4): Ditto.
20928 (@pred_<optab><mode>_vf8): Ditto.
20930 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20932 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
20933 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
20934 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
20935 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20936 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
20940 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
20945 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
20946 (@pred_<optab><mode>_scalar): New pattern.
20947 (*pred_<optab><mode>_scalar): New pattern.
20948 (*pred_<optab><mode>_extended_scalar): New pattern.
20950 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20952 * config/riscv/iterators.md: Add neg and not.
20953 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
20955 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20956 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
20977 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
20978 (struct alu_def): Ditto.
20980 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20981 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
20982 * config/riscv/vector-iterators.md: New iterator.
20983 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
20985 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20987 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
20989 2023-02-11 Jakub Jelinek <jakub@redhat.com>
20992 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
20993 item->offset bit position is too large to be representable as
20994 unsigned int byte position.
20996 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
20998 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
21000 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
21002 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
21003 valid_combine only when ira_use_lra_p is true.
21005 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
21007 * params.opt (ira-simple-lra-insn-threshold): Add new param.
21008 * ira.cc (ira): Use the param to switch on simple LRA.
21010 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
21012 PR tree-optimization/108687
21013 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
21014 back to RFD_NONE mode for calculations.
21015 (ranger_cache::propagate_cache): Call the internal edge range API
21016 with RFD_READ_ONLY instead of changing the external routine.
21018 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
21020 PR tree-optimization/108520
21021 * gimple-range-infer.cc (check_assume_func): Invoke
21022 gimple_range_global directly instead using global_range_query.
21023 * value-query.cc (get_range_global): Add function context and
21024 avoid calling nonnull_arg_p if not cfun.
21025 (gimple_range_global): Add function context pointer.
21026 * value-query.h (imple_range_global): Add function context.
21028 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21030 * config/riscv/constraints.md (Wdm): Adjust constraint.
21031 (Wbr): New constraint.
21032 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
21033 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
21034 (emit_vlmax_op): New function.
21035 (emit_nonvlmax_op): Ditto.
21037 (neg_simm5_p): Ditto.
21038 (has_vi_variant_p): Ditto.
21039 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
21040 (emit_vlmax_op): New function.
21041 (emit_nonvlmax_op): Ditto.
21042 (expand_const_vector): Adjust function.
21043 (legitimize_move): Ditto.
21044 (simm32_p): New function.
21046 (neg_simm5_p): Ditto.
21047 (has_vi_variant_p): Ditto.
21048 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
21050 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21051 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
21054 (vminu): Remove signed cases.
21056 (vdiv): Remove unsigned cases.
21058 (vdivu): Remove signed cases.
21062 (vrsub): New class.
21067 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
21068 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
21069 * config/riscv/vector-iterators.md: New iterators.
21070 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
21072 (@pred_<optab><mode>_scalar): New pattern.
21073 (@pred_sub<mode>_reverse_scalar): Ditto.
21074 (*pred_<optab><mode>_scalar): Ditto.
21075 (*pred_<optab><mode>_extended_scalar): Ditto.
21076 (*pred_sub<mode>_reverse_scalar): Ditto.
21077 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
21079 2023-02-10 Richard Biener <rguenther@suse.de>
21081 PR tree-optimization/108724
21082 * tree-vect-stmts.cc (vectorizable_operation): Avoid
21083 using word_mode vectors when vector lowering will
21084 decompose them to elementwise operations.
21086 2023-02-10 Jakub Jelinek <jakub@redhat.com>
21089 2023-02-09 Martin Liska <mliska@suse.cz>
21092 * doc/extend.texi: Document that the function
21093 does not work correctly for old VIA processors.
21095 2023-02-10 Andrew Pinski <apinski@marvell.com>
21096 Andrew Macleod <amacleod@redhat.com>
21098 PR tree-optimization/108684
21099 * tree-ssa-dce.cc (simple_dce_from_worklist):
21100 Check all ssa names and not just non-vdef ones
21101 before accepting the inline-asm.
21102 Call unlink_stmt_vdef on the statement before
21105 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
21107 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
21108 * ira.cc (validate_equiv_mem): Check memref address variance.
21109 (no_equiv): Clear caller_save_p flag.
21110 (update_equiv_regs): Define caller save equivalence for
21112 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
21113 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
21114 call_save_p. Use caller save equivalence depending on the arg.
21115 (split_reg): Adjust the call.
21117 2023-02-09 Jakub Jelinek <jakub@redhat.com>
21120 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
21121 (cpu_indicator_init): Call get_available_features for all CPUs with
21122 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
21125 2023-02-09 Jakub Jelinek <jakub@redhat.com>
21127 PR tree-optimization/108688
21128 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
21129 of BIT_INSERT_EXPR extracting exactly all inserted bits even
21130 when without mode precision. Formatting fixes.
21132 2023-02-09 Andrew Pinski <apinski@marvell.com>
21134 PR tree-optimization/108688
21135 * match.pd (bit_field_ref [bit_insert]): Avoid generating
21136 BIT_FIELD_REFs of non-mode-precision integral operands.
21138 2023-02-09 Martin Liska <mliska@suse.cz>
21141 * doc/extend.texi: Document that the function
21142 does not work correctly for old VIA processors.
21144 2023-02-09 Andreas Schwab <schwab@suse.de>
21146 * lto-wrapper.cc (merge_and_complain): Handle
21147 -funwind-tables and -fasynchronous-unwind-tables.
21148 (append_compiler_options): Likewise.
21150 2023-02-09 Richard Biener <rguenther@suse.de>
21152 PR tree-optimization/26854
21153 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
21154 view around insert_updated_phi_nodes_for.
21155 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
21157 (walk_aliased_vdefs_1): Likewise.
21159 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
21161 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
21163 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21166 * config.gcc (tm_mlib_file): Define new variable.
21168 2023-02-08 Jakub Jelinek <jakub@redhat.com>
21170 PR tree-optimization/108692
21171 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
21172 widened_code which is different from code, don't call
21173 vect_look_through_possible_promotion but instead just check op is
21174 SSA_NAME with integral type for which vect_is_simple_use is true
21175 and call set_op on this_unprom.
21177 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
21179 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
21181 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
21183 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
21184 to 'aarch_ra_sign_key'.
21185 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
21187 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
21188 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
21189 * config/arm/arm.opt: Define.
21191 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
21193 PR tree-optimization/108316
21194 * tree-vect-stmts.cc (get_load_store_type): When using
21195 internal functions for gather/scatter, make sure that the type
21196 of the offset argument is consistent with the offset vector type.
21198 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
21201 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
21203 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
21204 * ira.cc (validate_equiv_mem): Check memref address variance.
21205 (update_equiv_regs): Define caller save equivalence for
21207 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
21208 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
21209 call_save_p. Use caller save equivalence depending on the arg.
21210 (split_reg): Adjust the call.
21212 2023-02-08 Jakub Jelinek <jakub@redhat.com>
21214 * tree.def (SAD_EXPR): Remove outdated comment about missing
21217 2023-02-07 Marek Polacek <polacek@redhat.com>
21219 * doc/invoke.texi: Update -fchar8_t documentation.
21221 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
21223 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
21224 * ira.cc (validate_equiv_mem): Check memref address variance.
21225 (update_equiv_regs): Define caller save equivalence for
21227 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
21228 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
21229 call_save_p. Use caller save equivalence depending on the arg.
21230 (split_reg): Adjust the call.
21232 2023-02-07 Richard Biener <rguenther@suse.de>
21234 PR tree-optimization/26854
21235 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
21236 instead of immediate uses.
21238 2023-02-07 Jakub Jelinek <jakub@redhat.com>
21240 PR tree-optimization/106923
21241 * ipa-split.cc (execute_split_functions): Don't split returns_twice
21244 2023-02-07 Jakub Jelinek <jakub@redhat.com>
21246 PR tree-optimization/106433
21247 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
21248 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
21250 2023-02-07 Jan Hubicka <jh@suse.cz>
21252 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
21255 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
21257 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
21258 (process_asm): Create a constructor for GCN_STACK_SIZE.
21259 (main): Parse the -mstack-size option.
21261 2023-02-06 Alex Coplan <alex.coplan@arm.com>
21264 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
21265 Use correct constraint for operand 3.
21267 2023-02-06 Martin Jambor <mjambor@suse.cz>
21269 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
21271 2023-02-06 Xi Ruoyao <xry111@xry111.site>
21273 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
21274 New define_int_iterator.
21275 (bytepick_d_ashift_amount): Likewise.
21276 (bytepick_imm): New define_int_attr.
21277 (bytepick_w_lshiftrt_amount): Likewise.
21278 (bytepick_d_lshiftrt_amount): Likewise.
21279 (bytepick_w_<bytepick_imm>): New define_insn template.
21280 (bytepick_w_<bytepick_imm>_extend): Likewise.
21281 (bytepick_d_<bytepick_imm>): Likewise.
21282 (bytepick_w): Remove unused define_insn.
21283 (bytepick_d): Likewise.
21284 (UNSPEC_BYTEPICK_W): Remove unused unspec.
21285 (UNSPEC_BYTEPICK_D): Likewise.
21286 * config/loongarch/predicates.md (const_0_to_3_operand):
21287 Remove unused define_predicate.
21288 (const_0_to_7_operand): Likewise.
21290 2023-02-06 Jakub Jelinek <jakub@redhat.com>
21292 PR tree-optimization/108655
21293 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
21294 or -fsanitize=unreachable -fsanitize-trap=unreachable return
21295 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
21297 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
21299 * doc/install.texi (Specific): Remove PW32.
21301 2023-02-03 Jakub Jelinek <jakub@redhat.com>
21303 PR tree-optimization/108647
21304 * range-op.cc (operator_equal::op1_range,
21305 operator_not_equal::op1_range): Don't test op2 bound
21306 equality if op2.undefined_p (), instead set_varying.
21307 (operator_lt::op1_range, operator_le::op1_range,
21308 operator_gt::op1_range, operator_ge::op1_range): Return false if
21309 op2.undefined_p ().
21310 (operator_lt::op2_range, operator_le::op2_range,
21311 operator_gt::op2_range, operator_ge::op2_range): Return false if
21312 op1.undefined_p ().
21314 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
21316 PR tree-optimization/108639
21317 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
21319 (irange::operator==): Same.
21321 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
21323 PR tree-optimization/108647
21324 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
21325 (foperator_lt::op2_range): Same.
21326 (foperator_le::op1_range): Same.
21327 (foperator_le::op2_range): Same.
21328 (foperator_gt::op1_range): Same.
21329 (foperator_gt::op2_range): Same.
21330 (foperator_ge::op1_range): Same.
21331 (foperator_ge::op2_range): Same.
21332 (foperator_unordered_lt::op1_range): Same.
21333 (foperator_unordered_lt::op2_range): Same.
21334 (foperator_unordered_le::op1_range): Same.
21335 (foperator_unordered_le::op2_range): Same.
21336 (foperator_unordered_gt::op1_range): Same.
21337 (foperator_unordered_gt::op2_range): Same.
21338 (foperator_unordered_ge::op1_range): Same.
21339 (foperator_unordered_ge::op2_range): Same.
21341 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
21343 PR tree-optimization/107570
21344 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
21346 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
21348 * doc/gm2.texi (Internals): Remove from menu.
21349 (Using): Comment out ifnohtml conditional.
21350 (Documentation): Use gcc url.
21351 (License): Node simplified.
21352 (Copying): New node. Include gpl_v3_without_node.
21353 (Contributing): Node simplified.
21354 (Internals): Commented out.
21355 (Libraries): Node simplified.
21358 (Functions): Ditto.
21360 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
21362 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
21364 (mve_vqshluq_m_n_s<mode>): Likewise.
21365 (mve_vshlq_m_<supf><mode>): Likewise.
21366 (mve_vsriq_m_n_<supf><mode>): Likewise.
21367 (mve_vsubq_m_<supf><mode>): Likewise.
21369 2023-02-03 Martin Jambor <mjambor@suse.cz>
21372 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
21373 when comparing to an IPA-CP value.
21374 (dump_list_of_param_indices): New function.
21375 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
21376 Dump removed candidates using dump_list_of_param_indices.
21377 * ipa-param-manipulation.cc
21378 (ipa_param_body_adjustments::modify_expression): Add assert checking
21379 sizes of a VIEW_CONVERT_EXPR will match.
21380 (ipa_param_body_adjustments::modify_assignment): Likewise.
21382 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
21384 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
21385 * config/riscv/riscv.cc: Ditto.
21387 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21389 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
21393 * config/riscv/vector.md: Ditto.
21395 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21397 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
21398 * config/riscv/riscv-vector-builtins-bases.cc: New class.
21399 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
21402 * config/riscv/riscv-vector-builtins.cc: Ditto.
21403 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
21405 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
21407 * toplev.cc (toplev::main): Only print the version information header
21408 from toplevel main().
21410 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
21412 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
21413 cond_{ashl|ashr|lshr}
21415 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
21417 PR rtl-optimization/108086
21418 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
21419 Adjust size-related commentary accordingly.
21421 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
21423 PR rtl-optimization/108508
21424 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
21425 the splay tree search gives the first clobber in the second group,
21426 make sure that the root of the first clobber group is updated
21427 correctly. Enter the new clobber group into the definition splay
21430 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
21432 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
21433 Fix finding best match score.
21435 2023-02-02 Jakub Jelinek <jakub@redhat.com>
21438 PR rtl-optimization/108463
21440 * cselib.cc (cselib_current_insn): Move declaration earlier.
21441 (cselib_hasher::equal): For debug only locs, temporarily override
21442 cselib_current_insn to their l->setting_insn for the
21443 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
21444 promote some debug locs.
21445 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
21446 when using cselib call cselib_lookup_from_insn on the address but
21447 don't substitute it.
21449 2023-02-02 Richard Biener <rguenther@suse.de>
21451 PR middle-end/108625
21452 * genmatch.cc (expr::gen_transform): Also disallow resimplification
21453 from pushing to lseq with force_leaf.
21454 (dt_simplify::gen_1): Likewise.
21456 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
21458 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
21459 (struct kernargs): Replace the common content with kernargs_abi.
21460 (struct heap): Delete.
21461 (main): Read GCN_STACK_SIZE envvar.
21462 Allocate space for the device stacks.
21463 Write the new kernargs fields.
21464 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
21465 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
21466 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
21467 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
21468 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
21469 Set up the stacks from the values in the kernargs, not private.
21470 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
21471 (gcn_hsa_declare_function_name): Turn off the private segment.
21472 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
21473 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
21474 * config/gcn/gcn.opt (mstack-size): Change the description.
21476 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21479 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
21480 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
21481 addressing MVE predicate modes.
21482 (mve_bool_vec_to_const): Change to represent correct MVE predicate
21484 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
21486 (arm_vector_mode_supported_p): Likewise.
21487 (arm_mode_to_pred_mode): Add V2QI.
21488 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
21490 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
21491 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
21492 (v2qi_UP): New macro.
21493 (v4bi_UP): New macro.
21494 (v8bi_UP): New macro.
21495 (v16bi_UP): New macro.
21496 (arm_expand_builtin_args): Make it able to expand the new predicate
21498 * config/arm/arm-modes.def (V2QI): New mode.
21499 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
21500 Pred4x4_t): Remove unused predicate builtin types.
21501 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
21502 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
21503 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
21504 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
21505 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
21506 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
21507 of MODE_VECTOR_BOOL.
21508 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
21509 (MVE_VPRED): Likewise.
21510 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
21511 (MVE_vctp): New mode attribute.
21515 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
21516 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
21518 (mve_vpnothi): Rename this...
21519 (mve_vpnotv16bi): ... to this.
21520 (mve_vctp<mode1>q_mhi): Rename this...
21521 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
21522 (mve_vldrdq_gather_base_z_<supf>v2di,
21523 mve_vldrdq_gather_offset_z_<supf>v2di,
21524 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
21525 mve_vstrdq_scatter_base_p_<supf>v2di,
21526 mve_vstrdq_scatter_offset_p_<supf>v2di,
21527 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
21528 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
21529 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
21530 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
21531 mve_vldrdq_gather_base_wb_z_<supf>v2di,
21532 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
21533 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
21535 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
21537 (VCTP): ... with this.
21538 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
21539 (VCTP_M): ... with this.
21540 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
21541 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
21543 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21546 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
21547 (arm_modes_tieable_p): Make MVE predicate modes tieable.
21548 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
21549 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
21550 simplify_subreg to simplify subregs where the outermode is not scalar.
21552 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21555 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
21556 new qualifiers parameter and use unsigned short type for MVE predicate.
21557 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
21559 (arm_init_crypto_builtins): Likewise.
21561 2023-02-02 Jakub Jelinek <jakub@redhat.com>
21564 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
21565 * internal-fn.def (TRAP): Remove.
21566 * internal-fn.cc (expand_TRAP): Remove.
21567 * tree.cc (build_common_builtin_nodes): Define
21568 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
21569 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
21570 instead of BUILT_IN_TRAP.
21571 * gimple.cc (gimple_build_builtin_unreachable): Remove
21572 emitting internal function for BUILT_IN_TRAP.
21573 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
21574 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
21575 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
21576 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
21577 BUILT_IN_UNREACHABLE_TRAP.
21578 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
21579 * tree-cfg.cc (verify_gimple_call,
21580 pass_warn_function_return::execute): Likewise.
21581 * attribs.cc (decl_attributes): Don't report exclusions on
21582 BUILT_IN_UNREACHABLE_TRAP either.
21584 2023-02-02 liuhongt <hongtao.liu@intel.com>
21586 PR tree-optimization/108601
21587 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
21588 * tree-vect-loop.cc
21589 (vectorizable_nonlinear_induction): Remove
21590 vect_can_peel_nonlinear_iv_p.
21591 (vect_can_peel_nonlinear_iv_p): Don't peel
21592 nonlinear iv(mult or shift) for epilog when vf is not
21593 constant and moved the defination to ..
21594 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
21597 2023-02-02 Jakub Jelinek <jakub@redhat.com>
21599 PR middle-end/108435
21600 * tree-nested.cc (convert_nonlocal_omp_clauses)
21601 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
21602 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
21603 before calling declare_vars.
21604 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
21605 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
21606 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
21607 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
21609 2023-02-01 Tamar Christina <tamar.christina@arm.com>
21611 * common/config/aarch64/aarch64-common.cc
21612 (struct aarch64_option_extension): Add native_detect and document struct
21614 (all_extensions): Set new field native_detect.
21615 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
21618 2023-02-01 Martin Liska <mliska@suse.cz>
21620 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
21623 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
21625 PR tree-optimization/108356
21626 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
21627 do a search of the DOM tree for a range.
21629 2023-02-01 Martin Liska <mliska@suse.cz>
21632 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
21633 ony non-null values.
21634 * ipa.cc (walk_polymorphic_call_targets): Likewise.
21636 2023-02-01 Martin Liska <mliska@suse.cz>
21639 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
21642 2023-02-01 Jakub Jelinek <jakub@redhat.com>
21645 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
21646 subregs in DEBUG_INSNs.
21648 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
21650 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
21652 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
21654 * config/s390/s390.cc (s390_restore_gpr_p): New function.
21655 (s390_preserve_gpr_arg_in_range_p): New function.
21656 (s390_preserve_gpr_arg_p): New function.
21657 (s390_preserve_fpr_arg_p): New function.
21658 (s390_register_info_stdarg_fpr): Rename to ...
21659 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
21660 (s390_register_info_stdarg_gpr): Rename to ...
21661 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
21662 (s390_register_info): Use the renamed functions above.
21663 (s390_optimize_register_info): Likewise.
21664 (save_fpr): Generate CFI for -mpreserve-args.
21665 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
21666 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
21667 (s390_optimize_prologue): Likewise.
21668 * config/s390/s390.opt: New option -mpreserve-args
21670 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
21672 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
21673 (restore_gprs): Likewise.
21674 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
21675 frame pointer if a frame-pointer is used.
21676 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
21677 * config/s390/s390.md (stack_tie): Add a register operand and
21679 (@stack_tie<mode>): ... this.
21681 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
21683 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
21684 EMIT_CFI parameter.
21685 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
21686 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
21688 2023-02-01 Richard Biener <rguenther@suse.de>
21690 PR middle-end/108500
21691 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
21692 with tree traversal algorithm.
21694 2023-02-01 Jason Merrill <jason@redhat.com>
21696 * doc/invoke.texi: Document -Wno-changes-meaning.
21698 2023-02-01 David Malcolm <dmalcolm@redhat.com>
21700 * doc/invoke.texi (Static Analyzer Options): Add notes about
21701 limitations of -fanalyzer.
21703 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21705 * config/riscv/constraints.md (vj): New.
21707 * config/riscv/iterators.md: Add more opcode.
21708 * config/riscv/predicates.md (vector_arith_operand): New.
21709 (vector_neg_arith_operand): New.
21710 (vector_shift_operand): New.
21711 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
21712 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
21729 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
21746 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
21747 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
21748 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
21749 (DEF_RVV_U_OPS): New.
21750 (rvv_arg_type_info::get_base_vector_type): Handle
21751 RVV_BASE_shift_vector.
21752 (rvv_arg_type_info::get_tree_type): Ditto.
21753 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
21754 RVV_BASE_shift_vector.
21755 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
21756 * config/riscv/vector-iterators.md: Handle more opcode.
21757 * config/riscv/vector.md (@pred_<optab><mode>): New.
21759 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
21762 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
21765 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
21767 PR tree-optimization/108608
21768 * tree-vect-loop.cc (vect_transform_reduction): Handle single
21769 def-use cycles that involve function calls rather than tree codes.
21771 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
21773 PR tree-optimization/108385
21774 * gimple-range-gori.cc (gori_compute::compute_operand_range):
21775 Allow VARYING computations to continue if there is a relation.
21776 * range-op.cc (pointer_plus_operator::op2_range): New.
21778 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
21780 PR tree-optimization/108359
21781 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
21782 (range_operator::fold_range): If op1 is equivalent to op2 then
21783 invoke new fold_in_parts_equiv to operate on sub-components.
21784 * range-op.h (wi_fold_in_parts_equiv): New prototype.
21786 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
21788 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
21789 not abort calculations if there is a valid relation available.
21790 (gori_compute::refine_using_relation): Pass correct relation trio.
21791 (gori_compute::compute_operand1_range): Create trio and use it.
21792 (gori_compute::compute_operand2_range): Ditto.
21793 * range-op.cc (operator_plus::op1_range): Use correct trio member.
21794 (operator_minus::op1_range): Use correct trio member.
21795 * value-relation.cc (value_relation::create_trio): New.
21796 * value-relation.h (value_relation::create_trio): New prototype.
21798 2023-01-31 Jakub Jelinek <jakub@redhat.com>
21801 * config/i386/i386-expand.cc
21802 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
21803 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
21804 equal to bitsize of mode.
21806 2023-01-31 Jakub Jelinek <jakub@redhat.com>
21808 PR rtl-optimization/108596
21809 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
21810 ends with asm goto and has a crossing fallthrough edge to the same bb
21811 that contains at least one of its labels by restoring EDGE_CROSSING
21812 flag even on possible edge from cur_bb to new_bb successor.
21814 2023-01-31 Jakub Jelinek <jakub@redhat.com>
21817 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
21818 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
21819 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
21820 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
21821 uninitialized automatic variable __W.
21823 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
21825 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
21827 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21829 * config/riscv/riscv-protos.h (get_vector_mode): New function.
21830 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
21831 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
21832 (class loadstore): Adjust for indexed loads/stores support.
21834 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
21835 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
21851 * config/riscv/riscv-vector-builtins-shapes.cc
21852 (struct indexed_loadstore_def): New class.
21854 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21855 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
21856 for indexed loads/stores support.
21857 (check_required_extensions): Ditto.
21858 (rvv_arg_type_info::get_base_vector_type): New function.
21859 (rvv_arg_type_info::get_tree_type): Ditto.
21860 (function_builder::add_unique_function): Adjust for indexed loads/stores
21862 (function_expander::use_exact_insn): New function.
21863 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
21864 indexed loads/stores support.
21865 (struct rvv_arg_type_info): Ditto.
21866 (function_expander::index_mode): New function.
21867 (function_base::apply_tail_policy_p): Ditto.
21868 (function_base::apply_mask_policy_p): Ditto.
21869 * config/riscv/vector-iterators.md (unspec): New unspec.
21870 * config/riscv/vector.md (unspec): Ditto.
21871 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
21873 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
21874 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
21875 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
21876 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
21877 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
21878 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
21879 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
21880 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
21881 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
21882 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
21883 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
21884 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
21885 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
21887 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
21889 * config.gcc: Recognize x86_64-*-gnu* targets and include
21891 * config/i386/gnu64.h: Define configuration for new target
21892 including ld.so location.
21894 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
21896 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
21897 ampere1a to include SM4.
21899 2023-01-30 Andrew Pinski <apinski@marvell.com>
21901 PR tree-optimization/108582
21902 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
21903 for middlebb to have no phi nodes.
21905 2023-01-30 Richard Biener <rguenther@suse.de>
21907 PR tree-optimization/108574
21908 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
21909 sameval and def, ignore the equivalence if there's the
21910 danger of oscillating between two values.
21912 2023-01-30 Andreas Schwab <schwab@suse.de>
21914 * common/config/riscv/riscv-common.cc
21915 (riscv_option_optimization_table)
21916 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
21917 -fasynchronous-unwind-tables and -funwind-tables.
21918 * config.gcc (riscv*-*-linux*): Define
21919 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
21921 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
21923 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
21924 value of includedir.
21926 2023-01-30 Richard Biener <rguenther@suse.de>
21929 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
21932 2023-01-30 liuhongt <hongtao.liu@intel.com>
21934 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
21935 * doc/invoke.texi: Ditto.
21937 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
21939 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
21940 (stmt_may_terminate_function_p): If assuming return or EH
21941 volatile asm is safe.
21942 (find_always_executed_bbs): Fix handling of terminating BBS and
21943 infinite loops; add debug output.
21944 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
21946 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
21948 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
21949 off-by-one in checking the permissible shift-amount.
21951 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21953 * doc/extend.texi (Named Address Spaces): Update link to the
21956 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21958 * doc/standards.texi (Standards): Fix markup.
21960 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21962 * doc/standards.texi (Standards): Update link to Objective-C book.
21964 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21966 * doc/invoke.texi (Instrumentation Options): Update reference to
21969 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21971 * doc/standards.texi: Update Go1 link.
21973 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21975 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
21976 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
21979 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21980 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
21982 * config/riscv/riscv-vector-builtins.cc
21983 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
21984 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
21985 (@pred_strided_store<mode>): Ditto.
21987 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21989 * config/riscv/vector.md (tail_policy_op_idx): Remove.
21990 (mask_policy_op_idx): Remove.
21991 (avl_type_op_idx): Remove.
21993 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
21995 PR tree-optimization/96373
21996 * tree.h (sign_mask_for): Declare.
21997 * tree.cc (sign_mask_for): New function.
21998 (signed_or_unsigned_type_for): For vector types, try to use the
21999 related_int_vector_mode.
22000 * genmatch.cc (commutative_op): Handle conditional internal functions.
22001 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
22003 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
22005 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
22006 Use the likely minimum VF when bounding the denominators to
22007 the estimated number of iterations.
22009 2023-01-27 Richard Biener <rguenther@suse.de>
22012 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
22013 and -Ofast FP environment side-effects.
22015 2023-01-27 Richard Biener <rguenther@suse.de>
22018 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
22019 Don't add crtfastmath.o for -shared.
22021 2023-01-27 Richard Biener <rguenther@suse.de>
22024 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
22027 2023-01-27 Richard Biener <rguenther@suse.de>
22030 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
22031 crtfastmath.o for -shared.
22033 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
22035 PR tree-optimization/108306
22036 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
22037 varying for shifts that are always out of void range.
22038 (operator_rshift::fold_range): Return [0, 0] not
22039 varying for shifts that are always out of void range.
22041 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
22043 PR tree-optimization/108447
22044 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
22045 Do not attempt to fold HONOR_NAN types.
22047 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22049 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
22050 Remove _m suffix for "vop_m" C++ overloaded API name.
22052 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22054 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
22055 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22056 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
22058 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
22059 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
22060 (vbool64_t): Ditto.
22061 (vbool32_t): Ditto.
22062 (vbool16_t): Ditto.
22067 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
22068 (rvv_arg_type_info::get_tree_type): Ditto.
22069 (function_expander::use_contiguous_load_insn): Ditto.
22070 * config/riscv/vector.md (@pred_store<mode>): Ditto.
22072 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22074 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
22075 (vsetvl_discard_result_insn_p): New function.
22076 (reg_killed_by_bb_p): rename to find_reg_killed_by.
22077 (find_reg_killed_by): New name.
22078 (get_vl): allow it to be called by more functions.
22079 (has_vsetvl_killed_avl_p): Add condition.
22080 (get_avl): allow it to be called by more functions.
22081 (insn_should_be_added_p): New function.
22082 (get_all_nonphi_defs): Refine function.
22083 (get_all_sets): Ditto.
22084 (get_same_bb_set): New function.
22085 (any_insn_in_bb_p): Ditto.
22086 (any_set_in_bb_p): Ditto.
22087 (get_vl_vtype_info): Add VLMAX forward optimization.
22088 (source_equal_p): Fix issues.
22089 (extract_single_source): Refine.
22090 (avl_info::multiple_source_equal_p): New function.
22091 (avl_info::operator==): Adjust for final version.
22092 (vl_vtype_info::operator==): Ditto.
22093 (vl_vtype_info::same_avl_p): Ditto.
22094 (vector_insn_info::parse_insn): Ditto.
22095 (vector_insn_info::available_p): New function.
22096 (vector_insn_info::merge): Adjust for final version.
22097 (vector_insn_info::dump): Add hard_empty.
22098 (pass_vsetvl::hard_empty_block_p): New function.
22099 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
22100 (pass_vsetvl::forward_demand_fusion): Ditto.
22101 (pass_vsetvl::demand_fusion): Ditto.
22102 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
22103 (pass_vsetvl::compute_local_properties): Adjust for final version.
22104 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
22105 (pass_vsetvl::refine_vsetvls): Ditto.
22106 (pass_vsetvl::commit_vsetvls): Ditto.
22107 (pass_vsetvl::propagate_avl): New function.
22108 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
22109 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
22111 2023-01-27 Jakub Jelinek <jakub@redhat.com>
22114 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
22115 from size_t to int.
22117 2023-01-27 Jakub Jelinek <jakub@redhat.com>
22120 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
22121 redirection of calls to __builtin_trap in addition to redirection
22122 to __builtin_unreachable.
22124 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22126 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
22128 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22130 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
22131 (emit_vsetvl_insn): Ditto.
22133 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22135 * config/riscv/vector.md: Fix constraints.
22137 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22139 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
22141 2023-01-27 Patrick Palka <ppalka@redhat.com>
22142 Jakub Jelinek <jakub@redhat.com>
22144 * tree-core.h (tree_code_type, tree_code_length): For
22145 C++17 and later, add inline keyword, otherwise don't define
22146 the arrays, but declare extern arrays.
22147 * tree.cc (tree_code_type, tree_code_length): Define these
22148 arrays for C++14 and older.
22150 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22152 * config/riscv/riscv-vsetvl.h: Change it into public.
22154 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22156 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
22159 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22161 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
22163 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22165 * config/riscv/vector.md: Fix incorrect attributes.
22167 2023-01-27 Richard Biener <rguenther@suse.de>
22170 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
22171 Don't add crtfastmath.o for -shared.
22173 2023-01-27 Alexandre Oliva <oliva@gnu.org>
22175 * doc/options.texi (option, RejectNegative): Mention that
22176 -g-started options are also implicitly negatable.
22178 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
22180 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
22181 Use get_typenode_from_name to get fixed-width integer type
22183 * config/riscv/riscv-vector-builtins.def: Update define with
22184 fixed-width integer type nodes.
22186 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22188 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
22189 (real_insn_and_same_bb_p): New function.
22190 (same_bb_and_after_or_equal_p): Remove it.
22191 (before_p): New function.
22192 (reg_killed_by_bb_p): Ditto.
22193 (has_vsetvl_killed_avl_p): Ditto.
22194 (get_vl): Move location so that we can call it.
22195 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
22196 (available_occurrence_p): Ditto.
22197 (dominate_probability_p): Remove it.
22198 (can_backward_propagate_p): Remove it.
22199 (get_all_nonphi_defs): New function.
22200 (get_all_predecessors): Ditto.
22201 (any_insn_in_bb_p): Ditto.
22202 (insert_vsetvl): Adjust AVL REG.
22203 (source_equal_p): New function.
22204 (extract_single_source): Ditto.
22205 (avl_info::single_source_equal_p): Ditto.
22206 (avl_info::operator==): Adjust for AVL=REG.
22207 (vl_vtype_info::same_avl_p): Ditto.
22208 (vector_insn_info::set_demand_info): Remove it.
22209 (vector_insn_info::compatible_p): Adjust for AVL=REG.
22210 (vector_insn_info::compatible_avl_p): New function.
22211 (vector_insn_info::merge): Adjust AVL=REG.
22212 (vector_insn_info::dump): Ditto.
22213 (pass_vsetvl::merge_successors): Remove it.
22214 (enum fusion_type): New enum.
22215 (pass_vsetvl::get_backward_fusion_type): New function.
22216 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
22217 (pass_vsetvl::forward_demand_fusion): Ditto.
22218 (pass_vsetvl::demand_fusion): Ditto.
22219 (pass_vsetvl::prune_expressions): Ditto.
22220 (pass_vsetvl::compute_local_properties): Ditto.
22221 (pass_vsetvl::cleanup_vsetvls): Ditto.
22222 (pass_vsetvl::commit_vsetvls): Ditto.
22223 (pass_vsetvl::init): Ditto.
22224 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
22225 (enum merge_type): New enum.
22227 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22229 * config/riscv/riscv-vsetvl.cc
22230 (vector_infos_manager::vector_infos_manager): Add probability.
22231 (vector_infos_manager::dump): Ditto.
22232 (pass_vsetvl::compute_probabilities): Ditto.
22233 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
22235 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22237 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
22238 (vector_insn_info::merge): Ditto.
22239 (vector_insn_info::dump): Ditto.
22240 (pass_vsetvl::merge_successors): Ditto.
22241 (pass_vsetvl::backward_demand_fusion): Ditto.
22242 (pass_vsetvl::forward_demand_fusion): Ditto.
22243 (pass_vsetvl::commit_vsetvls): Ditto.
22244 * config/riscv/riscv-vsetvl.h: Ditto.
22246 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22248 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
22251 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22253 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
22255 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22257 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
22258 Add pre-check for redundant flow.
22260 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22262 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
22263 (vector_infos_manager::free_bitmap_vectors): Ditto.
22264 (pass_vsetvl::pre_vsetvl): Adjust codes.
22265 * config/riscv/riscv-vsetvl.h: New function declaration.
22267 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22269 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
22270 (vector_insn_info::set_demand_info): New function.
22271 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
22272 (pass_vsetvl::merge_successors): Ditto.
22273 (pass_vsetvl::compute_global_backward_infos): Ditto.
22274 (pass_vsetvl::backward_demand_fusion): Ditto.
22275 (pass_vsetvl::forward_demand_fusion): Ditto.
22276 (pass_vsetvl::demand_fusion): New function.
22277 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
22278 * config/riscv/riscv-vsetvl.h: New function declaration.
22280 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22282 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
22284 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22286 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
22287 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
22289 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22291 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
22292 (backward_propagate_worthwhile_p): Fix non-worthwhile.
22294 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22296 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
22298 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22300 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
22301 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
22302 (pass_vsetvl::commit_vsetvls): Ditto.
22303 * config/riscv/riscv-vsetvl.h: New function declaration.
22305 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22307 * config/riscv/vector.md:
22309 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22311 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
22312 pred_store for vse.
22313 * config/riscv/riscv-vector-builtins.cc
22314 (function_expander::add_mem_operand): Refine function.
22315 (function_expander::use_contiguous_load_insn): Adjust new
22317 (function_expander::use_contiguous_store_insn): Ditto.
22318 * config/riscv/riscv-vector-builtins.h: Refine function.
22319 * config/riscv/vector.md (@pred_store<mode>): New pattern.
22321 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22323 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
22325 2023-01-26 Marek Polacek <polacek@redhat.com>
22327 PR middle-end/108543
22328 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
22329 if it was previously set.
22331 2023-01-26 Jakub Jelinek <jakub@redhat.com>
22333 PR tree-optimization/108540
22334 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
22335 are singletons, use range_true even if op1 != op2
22336 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
22337 even if intersection of the ranges is empty and one has
22338 zero low bound and another zero high bound, use range_true_and_false
22339 rather than range_false.
22340 (foperator_not_equal::fold_range): If both op1 and op2
22341 are singletons, use range_false even if op1 != op2
22342 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
22343 even if intersection of the ranges is empty and one has
22344 zero low bound and another zero high bound, use range_true_and_false
22345 rather than range_true.
22347 2023-01-26 Jakub Jelinek <jakub@redhat.com>
22349 * value-relation.cc (kind_string): Add const.
22350 (rr_negate_table, rr_swap_table, rr_intersect_table,
22351 rr_union_table, rr_transitive_table): Add static const, change
22352 element type from relation_kind to unsigned char.
22353 (relation_negate, relation_swap, relation_intersect, relation_union,
22354 relation_transitive): Cast rr_*_table element to relation_kind.
22355 (relation_to_code): Add static const.
22356 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
22358 2023-01-26 Richard Biener <rguenther@suse.de>
22360 PR tree-optimization/108547
22361 * gimple-predicate-analysis.cc (value_sat_pred_p):
22364 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
22366 PR tree-optimization/108522
22367 * tree-object-size.cc (compute_object_offset): Make EXPR
22368 argument non-const. Call component_ref_field_offset.
22370 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22372 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
22373 FEATURE_STRING field.
22375 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
22377 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
22379 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
22383 * gcc.cc: Provide default specs for Modula-2 so that when the
22384 language is not built-in better diagnostics are emitted for
22385 attempts to use .mod or .m2i file extensions.
22387 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22389 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
22391 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22393 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
22395 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22397 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
22400 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22402 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
22404 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22406 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
22408 2023-01-25 Richard Biener <rguenther@suse.de>
22410 PR tree-optimization/108523
22411 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
22412 backedge value for the result when using predication to
22415 2023-01-25 Richard Biener <rguenther@suse.de>
22417 * doc/lto.texi (Command line options): Reword and update reference
22418 to removed lto_read_all_file_options.
22420 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
22422 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
22425 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
22427 * doc/contrib.texi: Add Jose E. Marchesi.
22429 2023-01-25 Jakub Jelinek <jakub@redhat.com>
22431 PR tree-optimization/108498
22432 * gimple-ssa-store-merging.cc (class store_operand_info):
22433 End coment with full stop rather than comma.
22434 (split_group): Likewise.
22435 (merged_store_group::apply_stores): Clear string_concatenation if
22436 start or end aren't on a byte boundary.
22438 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
22439 Jakub Jelinek <jakub@redhat.com>
22441 PR tree-optimization/108522
22442 * tree-object-size.cc (compute_object_offset): Use
22443 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
22445 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22447 * config/xtensa/xtensa.md:
22448 Fix exit from loops detecting references before overwriting in the
22451 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
22453 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
22454 do elimination but only for hard register.
22455 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
22456 calls of get_hard_regno.
22458 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
22460 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
22463 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
22466 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
22467 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
22470 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22472 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
22473 and only include 'csky/t-csky-linux' when enable multilib.
22474 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
22475 define it when disable multilib.
22477 2023-01-24 Richard Biener <rguenther@suse.de>
22479 PR tree-optimization/108500
22480 * dominance.h (calculate_dominance_info): Add parameter
22481 to indicate fast-query compute, defaulted to true.
22482 * dominance.cc (calculate_dominance_info): Honor
22483 fast-query compute parameter.
22484 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
22485 not compute the dominator fast-query DFS numbers.
22487 2023-01-24 Eric Biggers <ebiggers@google.com>
22490 * optc-save-gen.awk: Fix copy-and-paste error.
22492 2023-01-24 Jakub Jelinek <jakub@redhat.com>
22495 * cgraphbuild.cc: Include gimplify.h.
22496 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
22497 their corresponding DECL_VALUE_EXPR expressions after unsharing.
22499 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22502 * config.gcc (tm_file): Move the variable out of loop.
22504 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
22505 Yang Yujie <yangyujie@loongson.cn>
22508 * config/loongarch/loongarch.cc (loongarch_classify_address):
22509 Add precessint for CONST_INT.
22510 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
22511 (loongarch_print_operand): Increase the processing of '%c'.
22512 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
22513 And port the public operand modifiers information to this document.
22515 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22517 * doc/invoke.texi (-mbranch-protection): Update documentation.
22519 2023-01-23 Richard Biener <rguenther@suse.de>
22522 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
22524 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
22525 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
22526 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
22527 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
22529 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22531 * config/arm/aout.h (ra_auth_code): Add entry in enum.
22532 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
22533 to dwarf frame expression.
22534 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
22535 (arm_expand_prologue): Update frame related information and reg notes
22536 for pac/pacbit insn.
22537 (arm_regno_class): Check for pac pseudo reigster.
22538 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
22539 (arm_init_machine_status): Set pacspval_needed to zero.
22540 (arm_debugger_regno): Check for PAC register.
22541 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
22543 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
22544 (arm_unwind_emit): Update REG_CFA_REGISTER case._
22545 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
22546 (DWARF_PAC_REGNUM): Define.
22547 (IS_PAC_REGNUM): Likewise.
22548 (enum reg_class): Add PAC_REG entry.
22549 (machine_function): Add pacbti_needed state to structure.
22550 * config/arm/arm.md (RA_AUTH_CODE): Define.
22552 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22554 * config.gcc ($tm_file): Update variable.
22555 * config/arm/arm-mlib.h: Create new header file.
22556 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
22557 multilib arch directory.
22558 (MULTILIB_REUSE): Add multilib reuse rules.
22559 (MULTILIB_MATCHES): Add multilib match rules.
22561 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22563 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
22564 * config/arm/arm-tables.opt: Regenerate.
22565 * config/arm/arm-tune.md: Likewise.
22566 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
22567 * (-mfix-cmse-cve-2021-35465): Likewise.
22569 2023-01-23 Richard Biener <rguenther@suse.de>
22571 PR tree-optimization/108482
22572 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
22573 .LOOP_DIST_ALIAS calls.
22575 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22577 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
22578 * config/arm/arm-protos.h: Update.
22579 * config/arm/aarch-common-protos.h: Declare
22580 'aarch_bti_arch_check'.
22581 * config/arm/arm.cc (aarch_bti_enabled) Update.
22582 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
22583 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
22584 * config/arm/arm.md (bti_nop): New insn.
22585 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
22586 (aarch-bti-insert.o): New target.
22587 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
22588 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
22590 (gate): Make use of 'aarch_bti_arch_check'.
22591 * config/arm/arm-passes.def: New file.
22592 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
22594 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22596 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
22597 'aarch-bti-insert.o'.
22598 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
22600 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
22601 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
22602 (aarch64_output_mi_thunk)
22603 (aarch64_print_patchable_function_entry)
22604 (aarch64_file_end_indicate_exec_stack): Update renamed function
22605 calls to renamed functions.
22606 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
22607 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
22609 * config/aarch64/aarch64-bti-insert.cc: Delete.
22610 * config/arm/aarch-bti-insert.cc: New file including and
22611 generalizing code from aarch64-bti-insert.cc.
22612 * config/arm/aarch-common-protos.h: Update.
22614 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22616 * config/arm/arm.h (arm_arch8m_main): Declare it.
22617 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
22619 * config/arm/arm.cc (arm_arch8m_main): Define it.
22620 (arm_option_reconfigure_globals): Set arm_arch8m_main.
22621 (arm_compute_frame_layout, arm_expand_prologue)
22622 (thumb2_expand_return, arm_expand_epilogue)
22623 (arm_conditional_register_usage): Update for pac codegen.
22624 (arm_current_function_pac_enabled_p): New function.
22625 (aarch_bti_enabled) New function.
22626 (use_return_insn): Return zero when pac is enabled.
22627 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
22629 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
22630 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
22632 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22634 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
22635 mbranch-protection.
22637 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22638 Tejas Belagod <tbelagod@arm.com>
22640 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
22641 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
22643 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22644 Tejas Belagod <tbelagod@arm.com>
22645 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22647 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
22648 new pseudo register class _UVRSC_PAC.
22650 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22651 Tejas Belagod <tbelagod@arm.com>
22653 * config/arm/arm-c.cc (arm_cpu_builtins): Define
22654 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
22655 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
22657 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22658 Tejas Belagod <tbelagod@arm.com>
22660 * doc/sourcebuild.texi: Document arm_pacbti_hw.
22662 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22663 Tejas Belagod <tbelagod@arm.com>
22664 Richard Earnshaw <Richard.Earnshaw@arm.com>
22666 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
22667 -mbranch-protection option and initialize appropriate data structures.
22668 * config/arm/arm.opt (-mbranch-protection): New option.
22669 * doc/invoke.texi (Arm Options): Document it.
22671 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22672 Tejas Belagod <tbelagod@arm.com>
22674 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
22675 * config/arm/arm-cpus.in (pacbti): New feature.
22676 * doc/invoke.texi (Arm Options): Document it.
22678 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22679 Tejas Belagod <tbelagod@arm.com>
22681 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
22682 (all_architectures): Fix comment.
22683 (aarch64_parse_extension): Rename return type, enum value names.
22684 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
22685 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
22686 Also rename corresponding enum values.
22687 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
22688 out aarch64_function_type and move it to common code as
22689 aarch_function_type in aarch-common.h.
22690 * config/aarch64/aarch64-protos.h: Include common types header,
22691 move out types aarch64_parse_opt_result and aarch64_key_type to
22693 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
22694 and functions out into aarch-common.h and aarch-common.cc. Fix up
22695 all the name changes resulting from the move.
22696 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
22698 * config/aarch64/aarch64.opt: Include aarch-common.h to import
22699 type move. Fix up name changes from factoring out common code and
22701 * config/arm/aarch-common-protos.h: Export factored out routines to both
22703 * config/arm/aarch-common.cc: Include newly factored out types.
22704 Move all mbranch-protection code and data structures from
22706 * config/arm/aarch-common.h: New header that declares types shared
22707 between aarch32 and aarch64 backends.
22708 * config/arm/arm-protos.h: Declare types and variables that are
22709 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
22710 aarch_ra_sign_scope and aarch_enable_bti.
22711 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
22712 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
22713 * config/arm/arm.cc: Add missing includes.
22715 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
22717 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
22719 2023-01-23 Richard Biener <rguenther@suse.de>
22721 PR tree-optimization/108449
22722 * cgraphunit.cc (check_global_declaration): Do not turn
22723 undefined statics into externs.
22725 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
22727 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
22728 and HI input modes.
22729 * config/pru/pru.md (clz): Fix generated code for QI and HI
22732 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
22734 * config/v850/v850.cc (v850_select_section): Put const volatile
22735 objects into read-only sections.
22737 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
22739 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
22740 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
22741 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
22743 2023-01-20 Jakub Jelinek <jakub@redhat.com>
22745 PR tree-optimization/108457
22746 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
22747 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
22748 argument instead of a temporary. Formatting fixes.
22750 2023-01-19 Jakub Jelinek <jakub@redhat.com>
22752 PR tree-optimization/108447
22753 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
22754 (relation_tests): Add self-tests for relation_{intersect,union}
22756 * selftest.h (relation_tests): Declare.
22757 * function-tests.cc (test_ranges): Call it.
22759 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
22762 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
22763 invalid third argument to __builtin_ia32_prefetch.
22765 2023-01-19 Jakub Jelinek <jakub@redhat.com>
22767 PR middle-end/108459
22768 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
22769 than fold_unary for NEGATE_EXPR.
22771 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
22774 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
22775 comment. Move assert about alignment a bit later.
22777 2023-01-19 Jakub Jelinek <jakub@redhat.com>
22779 PR tree-optimization/108440
22780 * tree-ssa-forwprop.cc: Include gimple-range.h.
22781 (simplify_rotate): For the forms with T2 wider than T and shift counts of
22782 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
22783 to B. For the forms with T2 wider than T and shift counts of
22784 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
22785 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
22786 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
22787 pass specific ranger instead of get_global_range_query.
22788 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
22791 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
22793 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
22794 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
22796 (aarch64_simd_vec_copy_lane<mode>): Likewise.
22797 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
22799 2023-01-19 Alexandre Oliva <oliva@adacore.com>
22802 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
22803 within debug insns.
22805 2023-01-18 Martin Jambor <mjambor@suse.cz>
22808 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
22809 lcone_of chain also do not need the body.
22811 2023-01-18 Richard Biener <rguenther@suse.de>
22814 2022-12-16 Richard Biener <rguenther@suse.de>
22816 PR middle-end/108086
22817 * tree-inline.cc (remap_ssa_name): Do not unshare the
22818 result from the decl_map.
22820 2023-01-18 Murray Steele <murray.steele@arm.com>
22823 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
22825 (__arm_vst1q_p_s8): Likewise.
22826 (__arm_vld1q_z_u8): Likewise.
22827 (__arm_vld1q_z_s8): Likewise.
22828 (__arm_vst1q_p_u16): Likewise.
22829 (__arm_vst1q_p_s16): Likewise.
22830 (__arm_vld1q_z_u16): Likewise.
22831 (__arm_vld1q_z_s16): Likewise.
22832 (__arm_vst1q_p_u32): Likewise.
22833 (__arm_vst1q_p_s32): Likewise.
22834 (__arm_vld1q_z_u32): Likewise.
22835 (__arm_vld1q_z_s32): Likewise.
22836 (__arm_vld1q_z_f16): Likewise.
22837 (__arm_vst1q_p_f16): Likewise.
22838 (__arm_vld1q_z_f32): Likewise.
22839 (__arm_vst1q_p_f32): Likewise.
22841 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22843 * config/xtensa/xtensa.md (xorsi3_internal):
22844 Rename from the original of "xorsi3".
22845 (xorsi3): New expansion pattern that emits addition rather than
22846 bitwise-XOR when the second source is a constant of -2147483648
22849 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
22850 Andrew Pinski <apinski@marvell.com>
22853 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
22854 vec_vsubcuqP with vec_vsubcuq.
22856 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
22859 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
22860 support for invalid uses of MMA opaque type in function arguments.
22862 2023-01-18 liuhongt <hongtao.liu@intel.com>
22865 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
22866 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
22867 -share or -mno-daz-ftz is specified.
22868 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
22869 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
22871 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
22873 * config/bpf/bpf.cc (bpf_option_override): Disable
22876 2023-01-17 Jakub Jelinek <jakub@redhat.com>
22878 PR tree-optimization/106523
22879 * tree-ssa-forwprop.cc (simplify_rotate): For the
22880 patterns with (-Y) & (B - 1) in one operand's shift
22881 count and Y in another, if T2 has wider precision than T,
22882 punt if Y could have a value in [B, B2 - 1] range.
22884 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
22887 * config/i386/i386.cc (x86_output_mi_thunk): Disable
22888 -mforce-indirect-call for PIC in 32-bit mode.
22890 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
22893 * ipa-modref.cc (modref_access_analysis::analyze): Use
22894 find_always_executed_bbs.
22895 * ipa-sra.cc (process_scan_results): Likewise.
22896 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
22897 (find_always_executed_bbs): New function.
22898 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
22899 (find_always_executed_bbs): Declare.
22901 2023-01-16 Jan Hubicka <jh@suse.cz>
22903 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
22904 by TARGET_USE_SCATTER.
22905 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
22906 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
22907 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
22908 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
22909 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
22910 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
22912 2023-01-16 Richard Biener <rguenther@suse.de>
22915 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
22917 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
22921 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
22922 (__ARM_mve_coerce3): Likewise.
22924 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22926 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
22928 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22930 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
22931 (number_of_iterations_bitcount): Add call to the above.
22932 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
22933 c[lt]z idiom recognition.
22935 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22937 * doc/sourcebuild.texi: Add missing target attributes.
22939 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22941 PR tree-optimization/94793
22942 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
22944 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
22945 (number_of_iterations_cltz_complement): New.
22946 (number_of_iterations_bitcount): Add call to the above.
22948 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
22950 * doc/extend.texi (Common Function Attributes): Fix grammar.
22952 2023-01-16 Jakub Jelinek <jakub@redhat.com>
22955 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
22956 * config/riscv/riscv-vsetvl.cc: Likewise.
22958 2023-01-16 Jakub Jelinek <jakub@redhat.com>
22961 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
22962 disable -Winit-self using pragma GCC diagnostic ignored.
22963 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
22965 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
22966 _mm256_undefined_si256): Likewise.
22967 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
22968 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
22969 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
22970 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
22972 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
22975 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
22976 support for invalid uses in inline asm, factor out the checking and
22977 erroring to lambda function check_and_error_invalid_use.
22979 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
22981 PR tree-optimization/107608
22982 * range-op-float.cc (range_operator_float::fold_range): Avoid
22983 folding into INF when flag_trapping_math.
22984 * value-range.h (frange::known_isinf): Return false for possible NANs.
22986 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22988 * config.gcc (csky-*-*): Support --with-float=softfp.
22990 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22992 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
22993 Rename to xtensa_adjust_reg_alloc_order.
22994 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
22995 Ditto. And also remove code to reorder register numbers for
22996 leaf functions, rename the tables, and adjust the allocation
22997 order for the call0 ABI to use register A0 more.
22998 (xtensa_leaf_regs): Remove.
22999 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
23000 (order_regs_for_local_alloc): Rename as the above.
23001 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
23003 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23005 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
23006 Change to define_insn_and_split to fold ldr+dup to ld1rq.
23007 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
23009 2023-01-14 Alexandre Oliva <oliva@adacore.com>
23011 * hash-table.h (is_deleted): Precheck !is_empty.
23012 (mark_deleted): Postcheck !is_empty.
23013 (copy constructor): Test is_empty before is_deleted.
23015 2023-01-14 Alexandre Oliva <oliva@adacore.com>
23018 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
23021 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
23023 PR rtl-optimization/108274
23024 * function.cc (thread_prologue_and_epilogue_insns): Also update the
23025 DF information for calls in a few more cases.
23027 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
23029 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
23030 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
23032 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
23033 (MAX_SYNC_LIBFUNC_SIZE): Define.
23034 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
23036 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
23037 libcall when sync libcalls are disabled.
23038 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
23039 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
23040 are disabled on 32-bit target.
23041 * config/pa/pa.opt (matomic-libcalls): New option.
23042 * doc/invoke.texi (HPPA Options): Update.
23044 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
23046 PR rtl-optimization/108117
23047 PR rtl-optimization/108132
23048 * sched-deps.cc (deps_analyze_insn): Do not schedule across
23049 calls before reload.
23051 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
23053 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
23054 options for -mlibarch.
23055 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
23056 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
23058 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
23060 * attribs.cc (strict_flex_array_level_of): Move this function to ...
23061 * attribs.h (strict_flex_array_level_of): Remove the declaration.
23062 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
23063 replace the referece to strict_flex_array_level_of with
23064 DECL_NOT_FLEXARRAY.
23065 * tree.cc (component_ref_size): Likewise.
23067 2023-01-13 Richard Biener <rguenther@suse.de>
23070 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
23071 crtfastmath.o for -shared.
23072 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
23074 2023-01-13 Richard Biener <rguenther@suse.de>
23077 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
23078 crtfastmath.o for -shared.
23079 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
23081 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
23084 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
23086 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
23088 (TARGET_DWARF_FRAME_REG_MODE): Define.
23090 2023-01-13 Richard Biener <rguenther@suse.de>
23093 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
23094 update EH info on the fly.
23096 2023-01-13 Richard Biener <rguenther@suse.de>
23098 PR tree-optimization/108387
23099 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
23100 value before inserting expression into the tables.
23102 2023-01-12 Andrew Pinski <apinski@marvell.com>
23103 Roger Sayle <roger@nextmovesoftware.com>
23105 PR tree-optimization/92342
23106 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
23107 Use tcc_comparison and :c for the multiply.
23108 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
23110 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
23111 Richard Sandiford <richard.sandiford@arm.com>
23114 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
23115 Check DECL_PACKED for bitfield.
23116 (aarch64_layout_arg): Warn when parameter passing ABI changes.
23117 (aarch64_function_arg_boundary): Do not warn here.
23118 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
23121 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
23122 Richard Sandiford <richard.sandiford@arm.com>
23124 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
23126 (aarch64_layout_arg): Factorize warning conditions.
23127 (aarch64_function_arg_boundary): Fix typo.
23128 * function.cc (currently_expanding_function_start): New variable.
23129 (expand_function_start): Handle
23130 currently_expanding_function_start.
23131 * function.h (currently_expanding_function_start): Declare.
23133 2023-01-12 Richard Biener <rguenther@suse.de>
23135 PR tree-optimization/99412
23136 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
23137 (swap_ops_for_binary_stmt): Remove reduction handling.
23138 (rewrite_expr_tree_parallel): Adjust.
23139 (reassociate_bb): Likewise.
23140 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
23142 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23144 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
23145 Rearrange the emitting codes.
23147 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23149 * config/xtensa/xtensa.md (*btrue):
23150 Correct value of the attribute "length" that depends on
23151 TARGET_DENSITY and operands, and add '?' character to the register
23152 constraint of the compared operand.
23154 2023-01-12 Alexandre Oliva <oliva@adacore.com>
23156 * hash-table.h (expand): Check elements and deleted counts.
23157 (verify): Likewise.
23159 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
23161 PR tree-optimization/71343
23162 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
23163 the value number of the expression X << C the same as the value
23164 number for the multiplication X * (1<<C).
23166 2023-01-11 David Faust <david.faust@oracle.com>
23169 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
23170 floating point modes.
23172 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
23174 PR tree-optimization/108199
23175 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
23176 for bit-field references.
23178 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
23180 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
23181 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
23182 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
23183 OPTION_MASK_P10_FUSION.
23185 2023-01-11 Richard Biener <rguenther@suse.de>
23187 PR tree-optimization/107767
23188 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
23189 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
23190 * tree-switch-conversion.cc (switch_conversion::collect):
23191 Count unique non-default targets accounting for later
23192 merging opportunities.
23194 2023-01-11 Martin Liska <mliska@suse.cz>
23196 PR middle-end/107976
23197 * params.opt: Limit JT params.
23198 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
23200 2023-01-11 Richard Biener <rguenther@suse.de>
23202 PR tree-optimization/108352
23203 * tree-ssa-threadbackward.cc
23204 (back_threader_profitability::profitable_path_p): Adjust
23205 heuristic that allows non-multi-way branch threads creating
23207 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
23208 (--param fsm-scale-path-stmts): Adjust.
23209 * params.opt (--param=fsm-scale-path-blocks=): Remove.
23210 (-param=fsm-scale-path-stmts=): Adjust description.
23212 2023-01-11 Richard Biener <rguenther@suse.de>
23214 PR tree-optimization/108353
23215 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
23217 (add_ssa_edge): Simplify.
23218 (add_control_edge): Likewise.
23219 (ssa_prop_init): Likewise.
23220 (ssa_prop_fini): Likewise.
23221 (ssa_propagation_engine::ssa_propagate): Likewise.
23223 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
23225 * config/s390/s390.md (*not<mode>): New pattern.
23227 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23229 * config/xtensa/xtensa.cc (xtensa_insn_cost):
23230 Let insn cost for size be obtained by applying COSTS_N_INSNS()
23231 to instruction length and then dividing by 3.
23233 2023-01-10 Richard Biener <rguenther@suse.de>
23235 PR tree-optimization/106293
23236 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
23237 process degenerate PHI defs.
23239 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
23241 PR rtl-optimization/106421
23242 * cprop.cc (bypass_block): Check that DEST is local to this
23243 function (non-NULL) before calling find_edge.
23245 2023-01-10 Martin Jambor <mjambor@suse.cz>
23248 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
23249 sort_replacements, lookup_first_base_replacement and
23250 m_sorted_replacements_p.
23251 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
23252 (ipa_param_body_adjustments::register_replacement): Set
23253 m_sorted_replacements_p to false.
23254 (compare_param_body_replacement): New function.
23255 (ipa_param_body_adjustments::sort_replacements): Likewise.
23256 (ipa_param_body_adjustments::common_initialization): Call
23258 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
23259 m_sorted_replacements_p.
23260 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
23262 (ipa_param_body_adjustments::lookup_first_base_replacement): New
23264 (ipa_param_body_adjustments::modify_call_stmt): Use
23265 lookup_first_base_replacement.
23266 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
23267 adjustments->sort_replacements.
23269 2023-01-10 Richard Biener <rguenther@suse.de>
23271 PR tree-optimization/108314
23272 * tree-vect-stmts.cc (vectorizable_condition): Do not
23273 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
23275 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23277 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
23279 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23281 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
23283 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23285 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
23286 defines for soft float abi.
23288 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23290 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
23291 (smart_bclri): Likewise.
23292 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
23293 (fast_bclri): Likewise.
23294 (fast_cmpnesi_i): Likewise.
23295 (*fast_cmpltsi_i): Likewise.
23296 (*fast_cmpgeusi_i): Likewise.
23298 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23300 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
23301 flag_fp_int_builtin_inexact || !flag_trapping_math.
23302 (<frm_pattern><mode>2): Likewise.
23304 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
23306 * config/s390/s390.cc (s390_register_info): Check call_used_regs
23307 instead of hard-coding the register numbers for call saved
23309 (s390_optimize_register_info): Likewise.
23311 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
23313 * doc/gm2.texi (Overview): Fix @node markers.
23314 (Using): Likewise. Remove subsections that were moved to Overview
23315 from the menu and move others around.
23317 2023-01-09 Richard Biener <rguenther@suse.de>
23319 PR middle-end/108209
23320 * genmatch.cc (commutative_op): Fix return value for
23321 user-id with non-commutative first replacement.
23323 2023-01-09 Jakub Jelinek <jakub@redhat.com>
23326 * calls.cc (expand_call): For calls with
23327 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
23330 2023-01-09 Richard Biener <rguenther@suse.de>
23332 PR middle-end/69482
23333 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
23334 qualified accesses also force objects to memory.
23336 2023-01-09 Martin Liska <mliska@suse.cz>
23339 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
23340 NULL (deleleted value) to a hash_set.
23342 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23344 * config/xtensa/xtensa.md (*splice_bits):
23345 New insn_and_split pattern.
23347 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23349 * config/xtensa/xtensa.cc
23350 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
23351 New helper functions.
23352 (xtensa_set_return_address, xtensa_output_mi_thunk):
23353 Change to use the helper function.
23354 (xtensa_emit_adjust_stack_ptr): Ditto.
23355 And also change to try reusing the content of scratch register
23356 A9 if the register is not modified in the function body.
23358 2023-01-07 LIU Hao <lh_mouse@126.com>
23360 PR middle-end/108300
23361 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
23362 before <windows.h>.
23363 * diagnostic-color.cc: Likewise.
23364 * plugin.cc: Likewise.
23365 * prefix.cc: Likewise.
23367 2023-01-06 Joseph Myers <joseph@codesourcery.com>
23369 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
23370 for handling real integer types.
23372 2023-01-06 Tamar Christina <tamar.christina@arm.com>
23375 2022-12-12 Tamar Christina <tamar.christina@arm.com>
23377 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
23378 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
23379 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
23380 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
23381 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
23382 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
23383 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
23384 (aarch64_simd_dupv2hf): New.
23385 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
23387 * config/aarch64/iterators.md (VHSDF_P): New.
23388 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
23389 Vel, q, vp): Add V2HF.
23390 * config/arm/types.md (neon_fp_reduc_add_h): New.
23392 2023-01-06 Martin Liska <mliska@suse.cz>
23394 PR middle-end/107966
23395 * doc/options.texi: Fix Var documentation in internal manual.
23397 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
23400 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
23402 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
23403 RTL expansion to allow condition (mask) to be shared/reused,
23404 by avoiding overwriting pseudos and adding REG_EQUAL notes.
23406 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
23408 * common.opt: Add -static-libgm2.
23409 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
23410 * doc/gm2.texi: Document static-libgm2.
23411 * gcc.cc (driver_handle_option): Allow static-libgm2.
23413 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
23415 * common/config/i386/i386-common.cc (processor_alias_table):
23416 Use CPU_ZNVER4 for znver4.
23417 * config/i386/i386.md: Add znver4.md.
23418 * config/i386/znver4.md: New.
23420 2023-01-04 Jakub Jelinek <jakub@redhat.com>
23422 PR tree-optimization/108253
23423 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
23426 2023-01-04 Jakub Jelinek <jakub@redhat.com>
23428 PR middle-end/108237
23429 * generic-match-head.cc: Include tree-pass.h.
23430 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
23431 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
23432 resp. PROP_gimple_lvec property set.
23434 2023-01-04 Jakub Jelinek <jakub@redhat.com>
23436 PR sanitizer/108256
23437 * convert.cc (do_narrow): Punt for MULT_EXPR if original
23438 type doesn't wrap around and -fsanitize=signed-integer-overflow
23440 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
23442 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
23444 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
23445 * common/config/i386/i386-common.cc: Add Emeraldrapids.
23447 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
23449 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
23452 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
23454 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
23455 default constructor to initialize it.
23456 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
23457 for last and iterate to handle recursive calls. Delete leftover
23458 candidates at the end.
23459 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
23461 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
23462 gc_candidate bit when a clone is used.
23464 2023-01-03 Florian Weimer <fweimer@redhat.com>
23467 2023-01-02 Florian Weimer <fweimer@redhat.com>
23469 * dwarf2cfi.cc (init_return_column_size): Remove.
23470 (init_one_dwarf_reg_size): Adjust.
23471 (generate_dwarf_reg_sizes): New function. Extracted
23472 from expand_builtin_init_dwarf_reg_sizes.
23473 (expand_builtin_init_dwarf_reg_sizes): Call
23474 generate_dwarf_reg_sizes.
23475 * target.def (init_dwarf_reg_sizes_extra): Adjust
23477 * config/msp430/msp430.cc
23478 (msp430_init_dwarf_reg_sizes_extra): Adjust.
23479 * config/rs6000/rs6000.cc
23480 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
23481 * doc/tm.texi: Update.
23483 2023-01-03 Florian Weimer <fweimer@redhat.com>
23486 2023-01-02 Florian Weimer <fweimer@redhat.com>
23488 * debug.h (dwarf_reg_sizes_constant): Declare.
23489 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
23491 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
23493 PR tree-optimization/105043
23494 * doc/extend.texi (Object Size Checking): Split out into two
23495 subsections and mention _FORTIFY_SOURCE.
23497 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
23499 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
23500 RTL expansion to allow condition (mask) to be shared/reused,
23501 by avoiding overwriting pseudos and adding REG_EQUAL notes.
23503 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
23506 * config/i386/i386-features.cc
23507 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
23508 the gain/cost of converting a MEM operand.
23510 2023-01-03 Jakub Jelinek <jakub@redhat.com>
23512 PR middle-end/108264
23513 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
23514 from source which doesn't have scalar integral mode first convert
23517 2023-01-03 Jakub Jelinek <jakub@redhat.com>
23519 PR rtl-optimization/108263
23520 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
23523 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
23526 * config/i386/lujiazui.md (lujiazui_div): New automaton.
23527 (lua_div): New unit.
23528 (lua_idiv_qi): Correct unit in the reservation.
23529 (lua_idiv_qi_load): Ditto.
23530 (lua_idiv_hi): Ditto.
23531 (lua_idiv_hi_load): Ditto.
23532 (lua_idiv_si): Ditto.
23533 (lua_idiv_si_load): Ditto.
23534 (lua_idiv_di): Ditto.
23535 (lua_idiv_di_load): Ditto.
23536 (lua_fdiv_SF): Ditto.
23537 (lua_fdiv_SF_load): Ditto.
23538 (lua_fdiv_DF): Ditto.
23539 (lua_fdiv_DF_load): Ditto.
23540 (lua_fdiv_XF): Ditto.
23541 (lua_fdiv_XF_load): Ditto.
23542 (lua_ssediv_SF): Ditto.
23543 (lua_ssediv_load_SF): Ditto.
23544 (lua_ssediv_V4SF): Ditto.
23545 (lua_ssediv_load_V4SF): Ditto.
23546 (lua_ssediv_V8SF): Ditto.
23547 (lua_ssediv_load_V8SF): Ditto.
23548 (lua_ssediv_SD): Ditto.
23549 (lua_ssediv_load_SD): Ditto.
23550 (lua_ssediv_V2DF): Ditto.
23551 (lua_ssediv_load_V2DF): Ditto.
23552 (lua_ssediv_V4DF): Ditto.
23553 (lua_ssediv_load_V4DF): Ditto.
23555 2023-01-02 Florian Weimer <fweimer@redhat.com>
23557 * debug.h (dwarf_reg_sizes_constant): Declare.
23558 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
23560 2023-01-02 Florian Weimer <fweimer@redhat.com>
23562 * dwarf2cfi.cc (init_return_column_size): Remove.
23563 (init_one_dwarf_reg_size): Adjust.
23564 (generate_dwarf_reg_sizes): New function. Extracted
23565 from expand_builtin_init_dwarf_reg_sizes.
23566 (expand_builtin_init_dwarf_reg_sizes): Call
23567 generate_dwarf_reg_sizes.
23568 * target.def (init_dwarf_reg_sizes_extra): Adjust
23570 * config/msp430/msp430.cc
23571 (msp430_init_dwarf_reg_sizes_extra): Adjust.
23572 * config/rs6000/rs6000.cc
23573 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
23574 * doc/tm.texi: Update.
23576 2023-01-02 Jakub Jelinek <jakub@redhat.com>
23578 * gcc.cc (process_command): Update copyright notice dates.
23579 * gcov-dump.cc (print_version): Ditto.
23580 * gcov.cc (print_version): Ditto.
23581 * gcov-tool.cc (print_version): Ditto.
23582 * gengtype.cc (create_file): Ditto.
23583 * doc/cpp.texi: Bump @copying's copyright year.
23584 * doc/cppinternals.texi: Ditto.
23585 * doc/gcc.texi: Ditto.
23586 * doc/gccint.texi: Ditto.
23587 * doc/gcov.texi: Ditto.
23588 * doc/install.texi: Ditto.
23589 * doc/invoke.texi: Ditto.
23591 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
23592 Uroš Bizjak <ubizjak@gmail.com>
23594 * config/i386/i386.md (extendditi2): New define_insn.
23595 (define_split): Use DWIH mode iterator to treat new extendditi2
23596 identically to existing extendsidi2_1.
23597 (define_peephole2): Likewise.
23598 (define_peephole2): Likewise.
23599 (define_Split): Likewise.
23602 Copyright (C) 2023 Free Software Foundation, Inc.
23604 Copying and distribution of this file, with or without modification,
23605 are permitted in any medium without royalty provided the copyright
23606 notice and this notice are preserved.