]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2023-06-20 Tamar Christina <tamar.christina@arm.com>
2
3 PR bootstrap/110324
4 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
5
6 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
7
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.
15
16 2023-06-20 Jakub Jelinek <jakub@redhat.com>
17
18 PR middle-end/79173
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
21 type.
22
23 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
24
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"
29 variable to bool.
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"
46 variable to bool.
47
48 2023-06-20 Martin Jambor <mjambor@suse.cz>
49
50 PR ipa/110276
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.
54
55 2023-06-20 Martin Jambor <mjambor@suse.cz>
56
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.
69
70 2023-06-20 Carl Love <cel@us.ibm.com>
71
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
90 vector arguments.
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.
101
102 2023-06-20 Li Xu <xuli1@eswincomputing.com>
103
104 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
105 size of vector mask mode to one rvv register.
106
107 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
108
109 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
110
111 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
112
113 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
114 switch handler.
115
116 2023-06-20 Richard Biener <rguenther@suse.de>
117
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.
121
122 2023-06-20 Richard Biener <rguenther@suse.de>
123
124 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
125 keep the virtual SSA form up-to-date.
126
127 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
128
129 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
130 New define_insn_and_split.
131
132 2023-06-20 Tamar Christina <tamar.christina@arm.com>
133
134 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
135
136 2023-06-20 Jan Beulich <jbeulich@suse.com>
137
138 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
139 constraint. Add new AVX512F alternative.
140
141 2023-06-20 Richard Biener <rguenther@suse.de>
142
143 PR debug/110295
144 * dwarf2out.cc (process_scope_var): Continue processing
145 the decl after setting a parent in case the existing DIE
146 was in limbo.
147
148 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
149
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.
153
154 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
155
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.
160
161 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
162
163 PR rtl-optimization/110305
164 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
165 Handle HONOR_SNANS for x + 0.0.
166
167 2023-06-19 Jan Hubicka <jh@suse.cz>
168
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.
173
174 2023-06-19 Tamar Christina <tamar.christina@arm.com>
175
176 * config/aarch64/aarch64.md (arches): Add nosimd.
177 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
178 compact syntax.
179
180 2023-06-19 Tamar Christina <tamar.christina@arm.com>
181 Omar Tahir <Omar.Tahir2@arm.com>
182
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.
189 (gen_insn): Use it.
190 * gensupport.h (compact_syntax): New.
191 (hash-set.h): Include.
192 * doc/md.texi: Document it.
193
194 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
195
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
216 int to bool.
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.
238
239 2023-06-19 Li Xu <xuli1@eswincomputing.com>
240
241 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
242 Zve32f extension.
243
244 2023-06-19 Pan Li <pan2.li@intel.com>
245
246 PR target/110299
247 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
248 modes.
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.
263
264 2023-06-19 Pan Li <pan2.li@intel.com>
265
266 PR target/110277
267 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
268 ret_mode.
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.
283
284 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
285
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.
290
291 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
292
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.
297
298 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
299
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.
336
337 2023-06-19 Richard Biener <rguenther@suse.de>
338
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.
342
343 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
344
345 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
346 Simplify vec_concat of lowpart subreg and high part vec_select.
347
348 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
349
350 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
351
352 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
353
354 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
355 Handle null niters_skip.
356
357 2023-06-19 Richard Biener <rguenther@suse.de>
358
359 * config/aarch64/aarch64.cc
360 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
361 to LOOP_VINFO_MASKS.
362
363 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
364
365 PR target/105523
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
372 hook.
373
374 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
375 Robin Dapp <rdapp.gcc@gmail.com>
376
377 * doc/md.texi: Add len_mask{load,store}.
378 * genopinit.cc (main): Ditto.
379 (CMP_NAME): 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.
392
393 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
394
395 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
396
397 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
398
399 * config/riscv/autovec.md (<optab><mode>3): Implement binop
400 expander.
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
408 vector handling.
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.
412
413 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
414
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.
420
421 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
422
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.
434
435 2023-06-19 Richard Biener <rguenther@suse.de>
436
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<>
442 to a structure.
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.
461 Adjust condition.
462 (vect_estimate_min_profitable_iters): Implement AVX512 style
463 mask producing cost.
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.
468
469 2023-06-19 Richard Biener <rguenther@suse.de>
470
471 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
472 argument.
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.
482
483 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
484
485 PR target/110086
486 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
487 Add Optimization option property.
488
489 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
490
491 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
492 Add new pattern for the abovementioned case.
493
494 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
495
496 * config/xtensa/xtensa.cc
497 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
498
499 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
500
501 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
502
503 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
504
505 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
506
507 2023-06-19 liuhongt <hongtao.liu@intel.com>
508
509 PR target/110235
510 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
511 Substitute with ..
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.
519
520 2023-06-19 liuhongt <hongtao.liu@intel.com>
521
522 PR target/110235
523 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
524 UNSPEC_US_TRUNCATE instead of original us_truncate for
525 packusdw/packuswb.
526 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
527 with ..
528 (mmx_packsswb): .. this and ..
529 (mmx_packuswb): .. this.
530 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
531 us_truncate.
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.
538
539 2023-06-18 Pan Li <pan2.li@intel.com>
540
541 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
542
543 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
544
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.
554
555 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
556
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.
560
561 2023-06-18 Honza <jh@ryzen3.suse.cz>
562
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.
583
584 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
585
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.
592
593 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
594
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.
602
603 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
604
605 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
606 (hash_rtx): Remove.
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.
622
623 2023-06-18 yulong <shiyulong@iscas.ac.cn>
624
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):
631 New types.
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.
684
685 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
686
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.
691
692 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
693
694 * gcc-ar.cc (main): Refactor to slightly reduce code
695 duplication. Avoid unnecessary elements in nargv.
696
697 2023-06-16 Pan Li <pan2.li@intel.com>
698
699 PR target/110265
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.
712
713 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
714
715 PR target/110264
716 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
717
718 2023-06-16 Jakub Jelinek <jakub@redhat.com>
719
720 PR middle-end/79173
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
724 types.
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.
730
731 2023-06-16 Jakub Jelinek <jakub@redhat.com>
732
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.
737
738 2023-06-16 Martin Jambor <mjambor@suse.cz>
739
740 * configure: Regenerate.
741
742 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
743 Uros Bizjak <ubizjak@gmail.com>
744
745 PR target/31985
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.
749
750 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
751
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.
755
756 2023-06-16 Alex Coplan <alex.coplan@arm.com>
757
758 * doc/invoke.texi: Document -Welaborated-enum-base.
759
760 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
761
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):
781 Rename to...
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.
790
791 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
792
793 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
794 (shrn2_n): ... This.
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):
810 Delete.
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.
837
838 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
839
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.
846
847 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
848
849 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
850 Rename to...
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.
859
860 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
861
862 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
863 (shrn_n): ... This.
864 (rshrn): Rename builtins to...
865 (rshrn_n): ... This.
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.
896 (shrn_op): Likewise.
897 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
898 New predicate.
899
900 2023-06-16 Pan Li <pan2.li@intel.com>
901
902 * config/riscv/riscv-vsetvl.cc
903 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
904
905 2023-06-16 Richard Biener <rguenther@suse.de>
906
907 PR tree-optimization/110278
908 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
909 (x != (typeof x)(x == 0) -> true): Likewise.
910
911 2023-06-16 Pali Rohár <pali@kernel.org>
912
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.
920
921 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
922
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.
929
930 2023-06-16 Richard Biener <rguenther@suse.de>
931
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
936 pattern.
937
938 2023-06-15 Marek Polacek <polacek@redhat.com>
939
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
945 check.
946 * configure: Regenerate.
947 * doc/install.texi: Document --enable-host-pie.
948
949 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
950
951 * regcprop.cc (maybe_mode_change): Enable stack pointer
952 propagation.
953
954 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
955
956 PR tree-optimization/110266
957 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
958 complex type.
959 (adjust_realpart_expr): Ditto.
960
961 2023-06-15 Jan Beulich <jbeulich@suse.com>
962
963 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
964 vmovddup.
965
966 2023-06-15 Jan Beulich <jbeulich@suse.com>
967
968 * config/i386/constraints.md: Mention k and r for B.
969
970 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
971 Andrew Pinski <apinski@marvell.com>
972
973 PR target/110136
974 * config/loongarch/loongarch.md: Modify the register constraints for template
975 "jumptable" and "indirect_jump" from "r" to "e".
976
977 2023-06-15 Xi Ruoyao <xry111@xry111.site>
978
979 * config/loongarch/loongarch-tune.h (loongarch_align): New
980 struct.
981 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
982 array.
983 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
984 the array.
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=.
989
990 2023-06-15 Jakub Jelinek <jakub@redhat.com>
991
992 PR middle-end/79173
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
1007 patterns.
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>):
1013 Likewise.
1014
1015 2023-06-15 Jakub Jelinek <jakub@redhat.com>
1016
1017 PR middle-end/79173
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.
1022
1023 2023-06-15 Jakub Jelinek <jakub@redhat.com>
1024
1025 PR middle-end/79173
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.
1030
1031 2023-06-15 Jakub Jelinek <jakub@redhat.com>
1032
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.
1037
1038 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
1039
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
1043 to <su>abd<mode>3.
1044
1045 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
1046
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
1056 internal call.
1057
1058 2023-06-15 chenxiaolong <chenxl04200420@163.com>
1059
1060 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
1061 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
1062
1063 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1064
1065 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
1066 (expand_vec_perm_const_1): Add merge optmization.
1067
1068 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
1069
1070 PR target/110119
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
1073
1074 2023-06-15 Pan Li <pan2.li@intel.com>
1075
1076 * config/riscv/autovec-opt.md: Align the predictor sytle.
1077 * config/riscv/autovec.md: Ditto.
1078
1079 2023-06-15 Pan Li <pan2.li@intel.com>
1080
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.
1085
1086 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1087
1088 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
1089
1090 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1091
1092 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
1093 Fix signed comparison warning in loop from npats to enelts.
1094
1095 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
1096
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.
1102
1103 2023-06-14 liuhongt <hongtao.liu@intel.com>
1104
1105 PR target/110227
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
1108 ymm, ymm, ymm.
1109
1110 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
1111
1112 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
1113
1114 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
1115
1116 * config/sh/divtab.cc: Remove.
1117
1118 2023-06-13 Jakub Jelinek <jakub@redhat.com>
1119
1120 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
1121 superfluous spaces around \t for vpcmpeqd.
1122
1123 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
1124
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.
1128
1129 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
1130
1131 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
1132 #include.
1133 (ENTRY): Undef.
1134 (TUPLE_ENTRY): Undef.
1135
1136 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1137
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.
1141
1142 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1143
1144 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
1145 (shuffle_decompress_patterns): Ditto.
1146
1147 2023-06-13 Richard Biener <rguenther@suse.de>
1148
1149 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
1150
1151 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
1152 Kito Cheng <kito.cheng@sifive.com>
1153
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.
1165
1166 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1167
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
1172 with TP_TPIDRURO.
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
1176 assembly.
1177 (reload_tp_hard): Likewise.
1178 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
1179 arm_tp_type.
1180 * doc/invoke.texi (Arm Options, mtp): Document new values.
1181
1182 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1183
1184 PR target/108779
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.
1191
1192 2023-06-13 Alexandre Oliva <oliva@adacore.com>
1193
1194 * range-op-float.cc (frange_nextafter): Drop inline.
1195 (frelop_early_resolve): Add static.
1196 (frange_float): Likewise.
1197
1198 2023-06-13 Richard Biener <rguenther@suse.de>
1199
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.
1203
1204 2023-06-13 Richard Biener <rguenther@suse.de>
1205
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.
1208
1209 2023-06-13 Tejas Belagod <tbelagod@arm.com>
1210
1211 PR target/96339
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.
1217
1218 2023-06-13 Andi Kleen <ak@linux.intel.com>
1219
1220 * config/i386/gcc-auto-profile: Regenerate.
1221
1222 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1223
1224 * config/riscv/vector-iterators.md: Fix requirement.
1225
1226 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1227
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.
1231
1232 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
1233
1234 PR rtl-optimization/101188
1235 * postreload.cc (reload_cse_move2add_invalidate): New function,
1236 extracted from...
1237 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
1238
1239 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1240
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.
1244
1245 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
1246
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.
1255
1256 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1257
1258 PR tree-optimization/110205
1259 * range-op-float.cc (range_operator::fold_range): Add default FII
1260 fold routine.
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.
1266
1267 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1268
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.
1291
1292 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1293
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
1301 instead of NULL.
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.
1306
1307 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1308
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.
1315
1316 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1317
1318 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
1319 pass type.
1320 * gimple-range-op.cc (get_code): Rename from get_code_and_type
1321 and simplify.
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.
1349
1350 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1351
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.
1361
1362 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1363
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.
1369
1370 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1371
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.
1377
1378 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1379
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.
1385
1386 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1387
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.
1392 (wi_zero_p): Ditto.
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.
1405
1406 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1407
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.
1414
1415 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1416
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.
1421
1422 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1423
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.
1428
1429 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1430
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.
1436
1437 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1438
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.
1444
1445 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1446
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.
1452
1453 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
1454
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.
1460
1461 2023-06-12 Pan Li <pan2.li@intel.com>
1462
1463 * config/riscv/riscv-vector-builtins-types.def
1464 (vfloat16m1_t): Add type to lmul1 ops.
1465 (vfloat16m2_t): Likewise.
1466 (vfloat16m4_t): Likewise.
1467
1468 2023-06-12 Richard Biener <rguenther@suse.de>
1469
1470 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
1471 .MASK_STORE and friend set the size of the access to
1472 unknown.
1473
1474 2023-06-12 Tamar Christina <tamar.christina@arm.com>
1475
1476 * config.in: Regenerate.
1477 * configure: Regenerate.
1478 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
1479
1480 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1481
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.
1489
1490 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1491
1492 * simplify-rtx.cc (simplify_const_unary_operation):
1493 Handle US_TRUNCATE, SS_TRUNCATE.
1494
1495 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
1496
1497 PR modula2/109952
1498 * doc/gm2.texi (Standard procedures): Fix Next link.
1499
1500 2023-06-12 Tamar Christina <tamar.christina@arm.com>
1501
1502 * config.in: Regenerate.
1503
1504 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
1505
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.
1513
1514 2023-06-12 liuhongt <hongtao.liu@intel.com>
1515
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.
1532
1533 2023-06-12 Richard Biener <rguenther@suse.de>
1534
1535 PR middle-end/110200
1536 * genmatch.cc (expr::gen_transform): Put braces around
1537 the if arm for the (convert ...) short-cut.
1538
1539 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
1540
1541 PR target/109932
1542 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
1543 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
1544
1545 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
1546
1547 PR target/110011
1548 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
1549 floating constant itself for real_to_target call.
1550
1551 2023-06-12 Pan Li <pan2.li@intel.com>
1552
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.
1559
1560 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
1561
1562 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
1563 Do not require a stack frame when debugging is enabled for AIX.
1564
1565 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
1566
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.
1579
1580 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
1581
1582 PR target/109907
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]:
1604 Handle these cases.
1605 (avr_rtx_costs_1): Adjust cost for a new pattern.
1606
1607 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1608
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.
1621
1622 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
1623
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
1627 Value_Range.
1628 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
1629 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
1630 range.
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.
1641
1642 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
1643
1644 PR target/109650
1645 PR target/92729
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.
1683
1684 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1685
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.
1689
1690 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1691
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
1702 and float files.
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.
1712
1713 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1714
1715 * range-op-float.cc (foperator_negate): Remove. Move prototypes
1716 to range-op-mixed.h
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
1721 and float files.
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.
1727
1728 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1729
1730 * range-op-float.cc (foperator_minus): Remove. Move prototypes
1731 to range-op-mixed.h
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
1738 and float files.
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.
1744
1745 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1746
1747 * range-op-float.cc (foperator_abs): Remove. Move prototypes
1748 to range-op-mixed.h
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
1753 and float files.
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.
1759
1760 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1761
1762 * range-op-float.cc (foperator_plus): Remove. Move prototypes
1763 to range-op-mixed.h
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
1770 and float files.
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.
1776
1777 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1778
1779 * range-op-mixed.h (class operator_cast): Combined from integer
1780 and float files.
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.
1786
1787 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1788
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.
1796
1797 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1798
1799 * range-op-float.cc (foperator_identity): Remove. Move prototypes
1800 to range-op-mixed.h
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
1805 and float files.
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.
1811
1812 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1813
1814 * range-op-float.cc (foperator_ge): Remove. Move prototypes
1815 to range-op-mixed.h
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
1820 and float files.
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.
1829
1830 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1831
1832 * range-op-float.cc (foperator_gt): Remove. Move prototypes
1833 to range-op-mixed.h
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
1838 and float files.
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.
1847
1848 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1849
1850 * range-op-float.cc (foperator_le): Remove. Move prototypes
1851 to range-op-mixed.h
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
1856 and float files.
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.
1865
1866 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1867
1868 * range-op-float.cc (foperator_lt): Remove. Move prototypes
1869 to range-op-mixed.h
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
1874 and float files.
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.
1883
1884 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1885
1886 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
1887 to range-op-mixed.h
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
1892 and float files.
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.
1901
1902 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1903
1904 * range-op-float.cc (foperator_equal): Remove. Move prototypes
1905 to range-op-mixed.h
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
1910 and float files.
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.
1919
1920 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
1921
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
1927 to top of file.
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.
1945
1946 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1947 Richard Sandiford <richard.sandiford@arm.com>
1948 Richard Biener <rguenther@suse.de>
1949
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.
1959
1960 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
1961
1962 PR ipa/109886
1963 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
1964 type as well.
1965
1966 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
1967
1968 * range-op.cc (range_cast): Move to...
1969 * range-op.h (range_cast): Here and add generic a version.
1970
1971 2023-06-09 Marek Polacek <polacek@redhat.com>
1972
1973 PR c/39589
1974 PR c++/96868
1975 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
1976 warn about designated initializers in C only.
1977
1978 2023-06-09 Andrew Pinski <apinski@marvell.com>
1979
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.
1984
1985 2023-06-09 Andrew Pinski <apinski@marvell.com>
1986
1987 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
1988 multiply rather than negation/bit_and.
1989
1990 2023-06-09 Andrew Pinski <apinski@marvell.com>
1991
1992 * match.pd (`X & -Y -> X * Y`): Allow for truncation
1993 and the same type for unsigned types.
1994
1995 2023-06-09 Andrew Pinski <apinski@marvell.com>
1996
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.
2001
2002 2023-06-09 Richard Biener <rguenther@suse.de>
2003
2004 * match.pd (two conversions in a row): Use element_precision
2005 to DTRT for VECTOR_TYPE.
2006
2007 2023-06-09 Pan Li <pan2.li@intel.com>
2008
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.
2013
2014 2023-06-09 Pan Li <pan2.li@intel.com>
2015
2016 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
2017 literal to int.
2018
2019 2023-06-09 liuhongt <hongtao.liu@intel.com>
2020
2021 PR target/110108
2022 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
2023 view_convert_expr mask to signed type when folding pblendvb
2024 builtins.
2025
2026 2023-06-09 liuhongt <hongtao.liu@intel.com>
2027
2028 PR target/110108
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
2032 TARGET_64BIT.
2033 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
2034 real codename for __builtin_ia32_pabs{b,w,d}.
2035
2036 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2037
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.
2066
2067 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2068
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.
2073 (cfn_sqrt): Ditto.
2074 (cfn_sincos): Ditto.
2075 * range-op-float.cc (fold_range): Change class to range_operator.
2076 (rv_fold): Ditto.
2077 (op1_range): Ditto
2078 (op2_range): Ditto
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.
2097
2098 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2099
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.
2136
2137 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
2138
2139 * range-op-float.cc (range_operator_float::fold_range): Return
2140 NAN of the result type.
2141
2142 2023-06-08 Jakub Jelinek <jakub@redhat.com>
2143
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.
2150
2151 2023-06-08 Jakub Jelinek <jakub@redhat.com>
2152
2153 PR target/110152
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.
2156
2157 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
2158
2159 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
2160 avoid sign extension/undefined behaviour when setting each bit.
2161
2162 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
2163 Uros Bizjak <ubizjak@gmail.com>
2164
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.
2182
2183 2023-06-07 Andrew Pinski <apinski@marvell.com>
2184
2185 * match.pd: Fix comment for the
2186 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
2187
2188 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
2189 Jeff Law <jlaw@ventanamicro.com>
2190
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
2195 declaration.
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.
2207
2208 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
2209
2210 PR target/109725
2211 * config/riscv/riscv.cc (riscv_print_operand): Calculate
2212 memmodel only when it is valid.
2213
2214 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
2215
2216 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
2217 for constant element of a vector.
2218
2219 2023-06-07 Jakub Jelinek <jakub@redhat.com>
2220
2221 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
2222 instead compare tree_nonzero_bits <= 1U rather than just == 1.
2223
2224 2023-06-07 Alex Coplan <alex.coplan@arm.com>
2225
2226 PR target/110132
2227 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
2228 New. Use it ...
2229 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
2230 names for builtins.
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.
2237
2238 2023-06-07 Alex Coplan <alex.coplan@arm.com>
2239
2240 PR target/110100
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
2244 operand.
2245
2246 2023-06-07 Alex Coplan <alex.coplan@arm.com>
2247
2248 PR target/110100
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.
2254 (st64b): Likewise.
2255 (st64bv): Likewise
2256 (st64bv0): Likewise.
2257
2258 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
2259
2260 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
2261 offset table pseudo to a general reg subset.
2262
2263 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2264
2265 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
2266 Rename to...
2267 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
2268 with RTL codes.
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):
2277 New predicate.
2278
2279 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2280
2281 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
2282 Reimplement as...
2283 (aarch64_addp<mode>_insn): ... This...
2284 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
2285 (aarch64_addp<mode>): New define_expand.
2286
2287 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2288
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
2292 handling.
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.
2307
2308 2023-06-07 Andrew Pinski <apinski@marvell.com>
2309
2310 PR middle-end/110117
2311 * expr.cc (expand_single_bit_test): Handle
2312 const_int from expand_expr.
2313
2314 2023-06-07 Andrew Pinski <apinski@marvell.com>
2315
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`.
2319
2320 2023-06-07 Andrew Pinski <apinski@marvell.com>
2321
2322 PR tree-optimization/110134
2323 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
2324 types.
2325 (-A CMP CST -> B CMP (-CST)): Likewise.
2326
2327 2023-06-07 Andrew Pinski <apinski@marvell.com>
2328
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.
2335
2336 2023-06-07 Andrew Pinski <apinski@marvell.com>
2337
2338 * match.pd (zero_one_valued_p): Match 0 integer constant
2339 too.
2340
2341 2023-06-07 Pan Li <pan2.li@intel.com>
2342
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.
2371
2372 2023-06-07 Jason Merrill <jason@redhat.com>
2373
2374 PR c++/58487
2375 * doc/invoke.texi: Document it.
2376
2377 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
2378
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.
2397
2398 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
2399
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.
2403
2404 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2405
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.
2412
2413 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
2414 Tobias Burnus <tobias@codesourcery.com>
2415
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
2418 set.
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
2425 clauses.
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.
2433
2434 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
2435
2436 * config/rs6000/genfusion.pl: Delete some dead code.
2437
2438 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
2439
2440 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
2441 split out from...
2442 (gen_ld_cmpi_p10): ... this.
2443
2444 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
2445
2446 PR target/106907
2447 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
2448 duplicate expression.
2449
2450 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2451
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.
2459
2460 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2461
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.
2465
2466 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2467
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.
2477
2478 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2479
2480 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
2481 Define prototype.
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.
2493 (USADDLV): Delete.
2494 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
2495 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
2496
2497 2023-06-06 Richard Biener <rguenther@suse.de>
2498
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.
2503
2504 2023-06-06 Richard Biener <rguenther@suse.de>
2505
2506 PR tree-optimization/109143
2507 * tree-ssa-structalias.cc (solution_set_expand): Avoid
2508 one bitmap iteration and optimize bit range setting.
2509
2510 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
2511
2512 PR bootstrap/110120
2513 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
2514 XVECEXP, not XEXP, to access first item of a PARALLEL.
2515
2516 2023-06-06 Pan Li <pan2.li@intel.com>
2517
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.
2527
2528 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
2529
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
2533
2534 2023-06-06 Li Xu <xuli1@eswincomputing.com>
2535
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.
2541
2542 2023-06-06 Pan Li <pan2.li@intel.com>
2543
2544 * config/riscv/vector-iterators.md: Fix typo in mode attr.
2545
2546 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
2547 Joel Hutton <joel.hutton@arm.com>
2548
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):
2564 Likewise.
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.
2573
2574 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
2575 Joel Hutton <joel.hutton@arm.com>
2576 Tamar Christina <tamar.christina@arm.com>
2577
2578 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
2579 this ...
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
2613 _HILO IFNs.
2614 (supportable_widening_operation): Likewise.
2615 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
2616
2617 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
2618 Joel Hutton <joel.hutton@arm.com>
2619
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
2624 code_helper.
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.
2639
2640 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
2641
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.
2647
2648 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
2649
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.
2664
2665 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
2666
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.
2671
2672 2023-06-05 Pan Li <pan2.li@intel.com>
2673
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.
2704
2705 2023-06-05 Andrew Pinski <apinski@marvell.com>
2706
2707 PR bootstrap/110085
2708 * Makefile.in (clean): Remove the removing of
2709 MULTILIB_DIR/MULTILIB_OPTIONS directories.
2710
2711 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
2712
2713 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
2714 prototype.
2715 * config/mips/mips.cc (speculation_barrier_libfunc): New static
2716 variable.
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.
2721
2722 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2723
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.
2735
2736 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2737
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.
2741
2742 2023-06-04 Andrew Pinski <apinski@marvell.com>
2743
2744 * expr.cc (do_store_flag): Improve for single bit testing
2745 not against zero but against that single bit.
2746
2747 2023-06-04 Andrew Pinski <apinski@marvell.com>
2748
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.
2752
2753 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
2754
2755 * config/h8300/constraints.md (Zz): Make this a normal
2756 constraint.
2757 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
2758 * config/h8300/logical.md (H8/SX bit patterns): Remove.
2759
2760 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2761
2762 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
2763 New insn_and_split patterns.
2764
2765 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2766
2767 PR target/110109
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.
2781
2782 2023-06-04 Pan Li <pan2.li@intel.com>
2783
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
2792 mode conversion.
2793
2794 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2795
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.
2801
2802 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
2803
2804 PR target/110083
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.
2808
2809 2023-06-04 Jason Merrill <jason@redhat.com>
2810
2811 PR c++/97720
2812 * tree-eh.cc (lower_resx): Pass the exception pointer to the
2813 failure_decl.
2814 * except.h: Tweak comment.
2815
2816 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
2817
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.
2821
2822 2023-06-04 Pan Li <pan2.li@intel.com>
2823
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,
2835 vlmul and ratio.
2836
2837 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
2838
2839 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
2840 correct offset.
2841
2842 2023-06-03 Die Li <lidie@eswincomputing.com>
2843
2844 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
2845
2846 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2847
2848 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
2849
2850 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2851
2852 * config/riscv/vector.md: Add vector-opt.md.
2853 * config/riscv/autovec-opt.md: New file.
2854
2855 2023-06-03 liuhongt <hongtao.liu@intel.com>
2856
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.
2860
2861 2023-06-03 liuhongt <hongtao.liu@intel.com>
2862
2863 PR target/92658
2864 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
2865 (truncv2si<mode>2): Ditto.
2866
2867 2023-06-02 Andrew Pinski <apinski@marvell.com>
2868
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.
2873
2874 2023-06-02 Andrew Pinski <apinski@marvell.com>
2875
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.
2879
2880 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
2881
2882 PR target/110044
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.
2886
2887 2023-06-02 David Faust <david.faust@oracle.com>
2888
2889 PR debug/110073
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.
2893
2894 2023-06-02 Alex Coplan <alex.coplan@arm.com>
2895
2896 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
2897 (btf_asm_datasec_type): Likewise.
2898
2899 2023-06-02 Carl Love <cel@us.ibm.com>
2900
2901 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
2902 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
2903
2904 2023-06-02 Jason Merrill <jason@redhat.com>
2905
2906 PR c++/110070
2907 PR c++/105838
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.
2913
2914 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
2915
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"
2922 variable to bool.
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.
2935
2936 2023-06-02 Jason Merrill <jason@redhat.com>
2937
2938 PR c++/95226
2939 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
2940 (initializer_constant_valid_p_1): Compare float precision.
2941
2942 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
2943
2944 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
2945 semantics.
2946
2947 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2948
2949 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
2950 (vect_set_loop_condition_partial_vectors): Ditto.
2951
2952 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
2953
2954 PR target/110088
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.
2958
2959 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
2960
2961 PR testsuite/66005
2962 * doc/install.texi: Document (optional) Perl usage for parallel
2963 testing of libgomp.
2964
2965 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
2966
2967 PR bootstrap/82856
2968 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
2969 later)".
2970
2971 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2972 KuanLin Chen <best124612@gmail.com>
2973
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.
2976
2977 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2978
2979 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
2980
2981 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2982
2983 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
2984
2985 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2986
2987 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
2988 __RISCV_ prefix.
2989 (DEF_RVV_FRM_ENUM): Ditto.
2990
2991 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2992
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.
2999
3000 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3001
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.
3011
3012 2023-06-01 Jason Merrill <jason@redhat.com>
3013
3014 * doc/invoke.texi (-Wpedantic): Improve clarity.
3015
3016 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
3017
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.
3029
3030 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3031
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).
3035
3036 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
3037 Uros Bizjak <ubizjak@gmail.com>
3038
3039 PR target/109973
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
3061 current behavior.
3062 (*ptest<mode>_and): Specify CCZ to only perform this optimization
3063 when only the Z flag is required.
3064
3065 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
3066
3067 PR target/109954
3068 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
3069
3070 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3071
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.
3076
3077 2023-06-01 Pan Li <pan2.li@intel.com>
3078
3079 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
3080 and zvfh.
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):
3086 Add FP16.
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):
3094 New macro.
3095 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
3096 machine mode based on TARGET_VECTOR_ELEN_FP_16.
3097
3098 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3099
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.
3104 (RNE): Ditto.
3105 (RTZ): Ditto.
3106 (RDN): Ditto.
3107 (RUP): Ditto.
3108 (RMM): Ditto.
3109
3110 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
3111 Richard Sandiford <richard.sandiford@arm.com>
3112
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.
3126
3127 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3128
3129 PR target/99195
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>):
3140 ... This.
3141
3142 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3143
3144 PR target/99195
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.
3159
3160 2023-05-31 David Faust <david.faust@oracle.com>
3161
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.
3187
3188 2023-05-31 David Faust <david.faust@oracle.com>
3189
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.
3192
3193 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
3194
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.
3209
3210 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
3211
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.
3252
3253 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3254
3255 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
3256 expand into define_insn_and_split.
3257
3258 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3259
3260 * config/riscv/vector.md: Remove FRM.
3261
3262 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3263
3264 * config/riscv/vector.md: Remove FRM.
3265
3266 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3267
3268 * config/riscv/vector.md: Remove FRM.
3269
3270 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
3271
3272 PR target/110039
3273 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
3274 pattern.
3275
3276 2023-05-31 Richard Biener <rguenther@suse.de>
3277
3278 PR ipa/109983
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.
3287
3288 2023-05-31 Richard Biener <rguenther@suse.de>
3289
3290 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
3291 New.
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.
3296
3297 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3298
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.
3305
3306 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3307
3308 * config/xtensa/predicates.md (xtensa_bit_join_operator):
3309 New predicate.
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
3315 predicate.
3316 (*shlrd_const, *shlrd_per_byte):
3317 Likewise regarding the code iterator.
3318
3319 2023-05-31 Cui, Lili <lili.cui@intel.com>
3320
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.
3325
3326 2023-05-31 Pan Li <pan2.li@intel.com>
3327
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.
3334
3335 2023-05-30 liuhongt <hongtao.liu@intel.com>
3336
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.
3344
3345 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
3346
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.
3353
3354 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
3355
3356 PR target/110041
3357 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
3358 Fix misleading identation.
3359
3360 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
3361
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.
3393
3394 2023-05-30 Andrew Pinski <apinski@marvell.com>
3395
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.
3400
3401 2023-05-30 Andrew Pinski <apinski@marvell.com>
3402
3403 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
3404 pattern.
3405
3406 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
3407
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.
3412
3413 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
3414
3415 PR target/107172
3416 * simplify-rtx.cc (simplify_const_relational_operation): Return
3417 early if we have a MODE_CC comparison that isn't a COMPARE against
3418 const0_rtx.
3419
3420 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
3421
3422 * config/riscv/riscv.cc (riscv_const_insns): Allow
3423 const_vec_duplicates.
3424
3425 2023-05-30 liuhongt <hongtao.liu@intel.com>
3426
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.
3438
3439 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3440
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.
3447 (ADALP): Likewise.
3448 (USADDLP): Likewise.
3449 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
3450
3451 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3452
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
3458 unspec.
3459 (<u>avg<mode>3_ceil): Rename to...
3460 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
3461 unspec.
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.
3466
3467 2023-05-30 Andreas Schwab <schwab@suse.de>
3468
3469 PR target/110036
3470 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
3471 match libsanitizer.
3472
3473 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3474
3475 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
3476 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
3477 Declare prototype.
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.
3495 (sur): Likewise.
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
3500 predicate.
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.
3510
3511 2023-05-30 Lili Cui <lili.cui@intel.com>
3512
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.
3518
3519 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
3520
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.
3530 (reg_set_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.
3557 (reg_set_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.
3579
3580 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3581
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.
3585
3586 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
3587
3588 * config/riscv/riscv.md: Fix signed and unsigned comparison
3589 warning.
3590
3591 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3592
3593 * config/riscv/autovec.md (fnma<mode>4): New pattern.
3594 (*fnma<mode>): Ditto.
3595
3596 2023-05-29 Die Li <lidie@eswincomputing.com>
3597
3598 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
3599 Delete.
3600 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
3601 process for TARGET_XTHEADCONDMOV
3602
3603 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
3604
3605 PR target/110021
3606 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
3607 TARGET_AVX512BW to generate truncv16hiv16qi2.
3608
3609 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
3610
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
3614 predicate.
3615
3616 2023-05-29 Pan Li <pan2.li@intel.com>
3617
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.
3625
3626 2023-05-29 Pan Li <pan2.li@intel.com>
3627
3628 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
3629 magic number.
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.
3635
3636 2023-05-29 Pan Li <pan2.li@intel.com>
3637
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
3641 class member.
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
3646 mask.
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
3650 vmv.v.x.
3651 (get_repeating_sequence_dup_machine_mode): New function to get the dup
3652 machine mode.
3653 (expand_vector_init_merge_repeating_sequence): New function to perform
3654 the optimization.
3655 (expand_vec_init): Add this vector init optimization.
3656 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
3657
3658 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
3659
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.
3662
3663 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
3664
3665 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
3666 on constants.
3667
3668 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3669
3670 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
3671
3672 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3673
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.
3679
3680 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3681
3682 * config/riscv/vector.md: Fix vimuladd instruction bug.
3683
3684 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3685
3686 * config/riscv/riscv.cc (global_state_unknown_p): New function.
3687 (riscv_mode_after): Fix incorrect VXM.
3688
3689 2023-05-29 Pan Li <pan2.li@intel.com>
3690
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.
3699
3700 2023-05-27 liuhongt <hongtao.liu@intel.com>
3701
3702 PR target/100711
3703 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
3704 to VI_AVX2 to cover more modes.
3705
3706 2023-05-27 liuhongt <hongtao.liu@intel.com>
3707
3708 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
3709 Remove ATOM and ICELAKE(and later) core processors.
3710
3711 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
3712
3713 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
3714 (abs<mode>2): Add.
3715 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
3716 Declare.
3717 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
3718 function.
3719
3720 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
3721 Juzhe Zhong <juzhe.zhong@rivai.ai>
3722
3723 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
3724 expander.
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
3733 hook.
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.
3742
3743 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
3744 Tobias Burnus <tobias@codesourcery.com>
3745
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
3752 but -mxnack=off.
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.
3764
3765 2023-05-26 Andrew Pinski <apinski@marvell.com>
3766
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.
3771
3772 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3773
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
3783 subfunctions.
3784 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
3785 xtensa_expand_block_set().
3786
3787 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3788
3789 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
3790 New prototype.
3791 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
3792 New function.
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.
3797
3798 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3799
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.
3804
3805 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
3806
3807 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
3808 Do not disable call to ix86_expand_vecop_qihi2.
3809
3810 2023-05-26 liuhongt <hongtao.liu@intel.com>
3811
3812 PR target/109610
3813 PR target/109858
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.
3817
3818 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3819
3820 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
3821 explict VL and drop VL in ops.
3822
3823 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
3824
3825 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
3826 in different BB blocks.
3827
3828 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
3829
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
3834 is not available.
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.
3843
3844 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
3845
3846 PR target/104327
3847 * config/avr/avr.cc (avr_can_inline_p): New static function.
3848 (TARGET_CAN_INLINE_P): Define to that function.
3849
3850 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
3851
3852 PR target/82931
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.
3857
3858 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
3859
3860 * config/arm/iterators.md (MVE_6): Remove.
3861 * config/arm/mve.md: Replace MVE_6 with MVE_5.
3862
3863 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3864 Richard Sandiford <richard.sandiford@arm.com>
3865
3866 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
3867 function.
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
3871 variable.
3872 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
3873 macro.
3874
3875 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3876
3877 PR target/99195
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.
3891
3892 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
3893
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.
3905
3906 2023-05-25 Alex Coplan <alex.coplan@arm.com>
3907
3908 PR target/109800
3909 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
3910 instead of DFmode.
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.
3914
3915 2023-05-25 Richard Biener <rguenther@suse.de>
3916
3917 PR target/109955
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.
3921
3922 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
3923
3924 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
3925 TLS Local Dynamic.
3926
3927 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3928
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.
3932
3933 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3934
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.
3959
3960 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
3961
3962 PR target/109173
3963 PR target/109174
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.
4026
4027 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4028
4029 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
4030 instructions.
4031
4032 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4033
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.
4037
4038 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4039
4040 * value-query.cc (range_query::get_tree_range): Set NAN directly
4041 if necessary.
4042 * value-range.cc (frange::set): Assert that bounds are not NAN.
4043
4044 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4045
4046 * value-range.cc (add_vrange): Handle known NANs.
4047
4048 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
4049
4050 * value-range.h (frange::set_nan): New.
4051
4052 2023-05-25 Alexandre Oliva <oliva@adacore.com>
4053
4054 PR target/100106
4055 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
4056 requires stricter alignment than MEM's.
4057
4058 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4059
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.
4070
4071 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4072
4073 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
4074 to contructors.
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.
4082
4083 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4084
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.
4090
4091 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4092
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.
4101
4102 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
4103
4104 * value-range.h (vrange::kind): Remove.
4105
4106 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
4107
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.
4115
4116 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
4117
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.
4131
4132 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
4133
4134 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
4135 silence overflow warnings later on.
4136
4137 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
4138
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.
4145
4146 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4147
4148 PR target/99195
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.
4167
4168 2023-05-24 Richard Biener <rguenther@suse.de>
4169
4170 PR target/109944
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.
4175
4176 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4177
4178 PR tree-optimization/109695
4179 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
4180 changed param.
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.
4185
4186 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4187
4188 PR tree-optimization/109695
4189 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
4190 a positive int.
4191 (temporal_cache::current_p): Check always_current method.
4192 (temporal_cache::set_always_current): Add param and set value
4193 appropriately.
4194 (temporal_cache::always_current_p): New.
4195 (ranger_cache::get_global_range): Adjust.
4196 (ranger_cache::set_global_range): set always current first.
4197
4198 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
4199
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.
4203
4204 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4205
4206 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
4207 prefix.
4208
4209 2023-05-24 Richard Biener <rguenther@suse.de>
4210
4211 PR tree-optimization/109849
4212 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
4213 expressions but take the first sets.
4214
4215 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
4216
4217 PR modula2/109952
4218 * doc/gm2.texi (High procedure function): New node.
4219 (Using): New menu entry for High procedure function.
4220
4221 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
4222
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
4229 DF_FORWARD.
4230 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
4231 rather than DF_BACKWARD in reverse.
4232
4233 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4234
4235 PR target/109939
4236 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
4237 qualifier_none for the return operand.
4238
4239 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4240
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
4246 one_cmpl.
4247
4248 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
4249
4250 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
4251 calculation on n_perms by considering nvectors_per_build.
4252
4253 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4254 Richard Sandiford <richard.sandiford@arm.com>
4255
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.
4275
4276 2023-05-24 Pan Li <pan2.li@intel.com>
4277
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.
4305
4306 2023-05-24 Pan Li <pan2.li@intel.com>
4307
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.
4337
4338 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4339
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.
4348
4349 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4350
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.
4358
4359 2023-05-24 liuhongt <hongtao.liu@intel.com>
4360
4361 PR target/109900
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.
4368
4369 2023-05-23 Martin Uecker <uecker@tugraz.at>
4370
4371 PR c/109450
4372 * function.cc (gimplify_parm_type): Remove function.
4373 (gimplify_parameters): Call gimplify_type_sizes.
4374
4375 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4376
4377 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
4378 and change to also accept '*subx' pattern.
4379 (*subx): Remove.
4380
4381 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4382
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.
4390
4391 2023-05-23 Richard Biener <rguenther@suse.de>
4392
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.
4396
4397 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
4398
4399 * config/avr/avr.cc (avr_insn_cost): New static function.
4400 (TARGET_INSN_COST): Define to that function.
4401
4402 2023-05-23 Richard Biener <rguenther@suse.de>
4403
4404 PR target/109944
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
4408 with SSE4.1 pinsrb.
4409
4410 2023-05-23 Richard Biener <rguenther@suse.de>
4411
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.
4417
4418 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
4419
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.
4427
4428 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4429
4430 * config/riscv/vector.md: Add mode.
4431
4432 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
4433
4434 PR tree-optimization/109934
4435 * value-range.cc (irange::invert): Remove buggy special case.
4436
4437 2023-05-23 Richard Biener <rguenther@suse.de>
4438
4439 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
4440 ANTIC_OUT.
4441
4442 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
4443
4444 PR target/109632
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.
4452
4453 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
4454
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.
4462
4463 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4464
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.
4495
4496 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4497
4498 PR target/109855
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.
4502
4503 2023-05-23 Richard Biener <rguenther@suse.de>
4504
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.
4508
4509 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
4510
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
4514 a byte boundary.
4515
4516 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
4517
4518 PR tree-optimization/109920
4519 * value-range.h (RESIZABLE>::~int_range): Use delete[].
4520
4521 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
4522
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.
4529
4530 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
4531
4532 * value-range.h (class Value_Range): Implement set_zero,
4533 set_nonzero, and nonzero_p.
4534
4535 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
4536
4537 * config/i386/i386.cc (ix86_multiplication_cost): Add
4538 the cost of a memory read to the cost of V?QImode sequences.
4539
4540 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4541
4542 * config/riscv/riscv-v.cc: Add "m_" prefix.
4543
4544 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4545
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.
4551
4552 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4553
4554 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
4555 codes.
4556
4557 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
4558
4559 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
4560 handling for the case index == count.
4561
4562 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
4563
4564 PR target/90622
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
4567 same position.
4568
4569 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
4570
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}.
4580
4581 2023-05-21 Jakub Jelinek <jakub@redhat.com>
4582
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
4588 operands.
4589
4590 2023-05-21 Andrew Pinski <apinski@marvell.com>
4591
4592 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
4593
4594 2023-05-21 Pan Li <pan2.li@intel.com>
4595
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.
4630
4631 2023-05-21 Andrew Pinski <apinski@marvell.com>
4632
4633 PR middle-end/109919
4634 * expr.cc (expand_single_bit_test): Don't use the
4635 target for expand_expr.
4636
4637 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
4638
4639 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
4640 section.
4641
4642 2023-05-20 Pan Li <pan2.li@intel.com>
4643
4644 * mode-switching.cc (entity_map): Initialize the array to zero.
4645 (bb_info): Ditto.
4646
4647 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
4648
4649 PR target/105753
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.
4654
4655 2023-05-20 Andrew Pinski <apinski@marvell.com>
4656
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.
4660
4661 2023-05-20 Andrew Pinski <apinski@marvell.com>
4662
4663 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
4664 instead of shift/and.
4665
4666 2023-05-20 Andrew Pinski <apinski@marvell.com>
4667
4668 * expr.cc (fold_single_bit_test): Add an assert
4669 and simplify based on code being NE_EXPR or EQ_EXPR.
4670
4671 2023-05-20 Andrew Pinski <apinski@marvell.com>
4672
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
4677 and the inner tree.
4678
4679 2023-05-20 Andrew Pinski <apinski@marvell.com>
4680
4681 * expr.cc (fold_single_bit_test): Use get_def_for_expr
4682 instead of checking the inner's code.
4683
4684 2023-05-20 Andrew Pinski <apinski@marvell.com>
4685
4686 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
4687 (fold_single_bit_test): This and simplify.
4688
4689 2023-05-20 Andrew Pinski <apinski@marvell.com>
4690
4691 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
4692 expr.cc.
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.
4697
4698 2023-05-20 Die Li <lidie@eswincomputing.com>
4699
4700 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
4701 checking.
4702
4703 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
4704
4705 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
4706
4707 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
4708
4709 PR target/106888
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.
4714
4715 2023-05-19 Nathan Sidwell <nathan@acm.org>
4716
4717 PR other/99451
4718 * opts.h (handle_deferred_dump_options): Declare.
4719 * opts-global.cc (handle_common_deferred_options): Do not handle
4720 dump options here.
4721 (handle_deferred_dump_options): New.
4722 * toplev.cc (toplev::main): Call it after plugin init.
4723
4724 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
4725
4726 * config/riscv/constraints.md (DsS, DsD): Restore agreement
4727 with shiftm1 mode attribute.
4728
4729 2023-05-19 Andrew Pinski <apinski@marvell.com>
4730
4731 PR driver/33980
4732 * gcc.cc (default_compilers["@c-header"]): Add %w
4733 after the --output-pch.
4734
4735 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
4736
4737 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
4738 to hival, ASHIFT the corresponding regs.
4739
4740 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
4741
4742 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
4743
4744 2023-05-19 Jakub Jelinek <jakub@redhat.com>
4745
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.
4752
4753 2023-05-19 Jakub Jelinek <jakub@redhat.com>
4754
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.
4759
4760 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
4761
4762 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
4763 of tree_to_shwi on array indices. Minor tweaks.
4764
4765 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4766
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.
4862 (do_cond): 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.
4873
4874 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4875
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.
4884
4885 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4886
4887 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
4888 tree.h.
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.
4893 (wrap_refs): Ditto.
4894 (write_symbol_extension_info): Ditto.
4895
4896 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
4897
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.
5004
5005 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
5006
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):
5011 Add prototype.
5012 * config/i386/i386.cc (ix86_multiplication_cost): Handle
5013 V4QImode and V8QImode.
5014 * config/i386/mmx.md (mulv8qi3): New expander.
5015 (mulv4qi3): Ditto.
5016 * config/i386/sse.md (mulv8qi3): Remove.
5017
5018 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
5019
5020 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
5021
5022 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
5023
5024 PR bootstrap/105831
5025 * config.gcc: Use = operator instead of ==.
5026
5027 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
5028
5029 PR bootstrap/105831
5030 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
5031 * configure.ac: Likewise.
5032 * configure: Regenerate.
5033
5034 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
5035
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.
5121
5122 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
5123
5124 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
5125 scalar constant.
5126
5127 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
5128
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.
5138
5139 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
5140
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.
5178
5179 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
5180
5181 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
5182 predicates.md.
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
5186 missing constraint.
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
5193 constraints.md.
5194 (mve_vstrw_immediate): New predicate.
5195
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>
5201
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.
5229
5230 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
5231
5232 * genrecog.cc (print_nonbool_test): Fix type error of
5233 switch (SUBREG_BYTE (op))'.
5234
5235 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
5236
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.
5242
5243 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
5244
5245 * config/pa/pa.md (clear_cache): New.
5246
5247 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
5248
5249 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
5250 parenthesis. Fix misnamed index entry.
5251 <concept>: Fix misnamed index entry.
5252
5253 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
5254
5255 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
5256 combined from ...
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
5260 pattern.
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.
5269
5270 2023-05-17 Jakub Jelinek <jakub@redhat.com>
5271
5272 PR c++/109884
5273 * config/i386/i386-builtin-types.def (FLOAT128): Use
5274 float128t_type_node rather than float128_type_node.
5275
5276 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
5277
5278 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
5279 FP_CONTRACT_FAST (no functional change).
5280
5281 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
5282
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.
5287
5288 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5289
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.
5308
5309 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5310
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.
5318
5319 2023-05-17 Andrew Pinski <apinski@marvell.com>
5320
5321 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
5322 against 0 instead of calling integer_zerop.
5323
5324 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5325
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.
5330 (RNU): Ditto.
5331 (RNE): Ditto.
5332 (RDN): Ditto.
5333 (ROD): Ditto.
5334
5335 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
5336
5337 * value-range.h (Value_Range::operator=): New.
5338
5339 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
5340
5341 * value-range.cc (vrange::operator=): Add a stub to copy
5342 unsupported ranges.
5343 * value-range.h (is_a <unsupported_range>): New.
5344 (Value_Range::operator=): Support copying unsupported ranges.
5345
5346 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
5347
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.
5354
5355 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
5356
5357 PR c++/109532
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.
5361
5362 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
5363
5364 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
5365 special case.
5366
5367 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5368
5369 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
5370 New.
5371 (s390_atomic_align_for_mode): New.
5372
5373 2023-05-17 Jakub Jelinek <jakub@redhat.com>
5374
5375 * wide-int.cc (wi::from_array): Add missing closing paren in function
5376 comment.
5377
5378 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
5379
5380 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
5381 suggested unroll factor once the previous analysis fails.
5382
5383 2023-05-17 Pan Li <pan2.li@intel.com>
5384
5385 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
5386 macro.
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.
5407
5408 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
5409
5410 PR target/106708
5411 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
5412 constants through "lis; xoris".
5413
5414 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
5415
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
5419
5420 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
5421
5422 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
5423 Fix wrong select_kind...
5424
5425 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5426
5427 * config/s390/s390-protos.h (s390_expand_setmem): Change
5428 function signature.
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
5432 takes 8 operands.
5433
5434 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5435
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.
5439 (*mvcrl): New.
5440 (mvcrl): New.
5441
5442 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
5443
5444 * config/s390/s390-protos.h (s390_expand_cpymem): Change
5445 function signature.
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
5449 s390_expand_cpymem.
5450 * config/s390/s390.md: Change expander into a version which
5451 takes 8 operands.
5452
5453 2023-05-16 Andrew Pinski <apinski@marvell.com>
5454
5455 PR tree-optimization/109424
5456 * match.pd: Add patterns for min/max of zero_one_valued
5457 values to `&`/`|`.
5458
5459 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5460
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.
5469 (FRM_REG_P): 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.
5475
5476 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
5477
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.
5485 (~int_range): New.
5486 (int_range::int_range): Adjust for resizing.
5487 (int_range::operator=): Same.
5488
5489 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
5490
5491 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
5492 range copying
5493 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
5494 when range changed.
5495
5496 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5497
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
5509
5510 2023-05-15 Pan Li <pan2.li@intel.com>
5511
5512 * optabs.cc (maybe_gen_insn): Add case to generate instruction
5513 that has 11 operands.
5514
5515 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5516
5517 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
5518 logic for vector modes.
5519
5520 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5521
5522 PR target/99195
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.
5533
5534 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5535
5536 PR target/99195
5537 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
5538 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
5539
5540 2023-05-15 Pan Li <pan2.li@intel.com>
5541 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5542 kito-cheng <kito.cheng@sifive.com>
5543
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.
5547
5548 2023-05-15 Richard Biener <rguenther@suse.de>
5549
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
5553 before the CTOR.
5554
5555 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5556
5557 * config/riscv/riscv.cc
5558 (riscv_vectorize_preferred_vector_alignment): New function.
5559 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
5560
5561 2023-05-14 Andrew Pinski <apinski@marvell.com>
5562
5563 PR tree-optimization/109829
5564 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
5565
5566 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
5567
5568 PR target/109807
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.
5572
5573 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
5574
5575 * config/i386/i386.cc (x86_function_profiler): Take
5576 ix86_direct_extern_access into account when generating calls
5577 to __fentry__()
5578
5579 2023-05-14 Pan Li <pan2.li@intel.com>
5580
5581 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
5582 Refactor the or pattern to switch cases.
5583
5584 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5585
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.
5592
5593 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
5594
5595 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
5596 Pull out function call from the gcc_assert.
5597
5598 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
5599
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.
5603
5604 2023-05-13 Andrew Pinski <apinski@marvell.com>
5605
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.
5609
5610 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
5611
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.
5615 Fix comments.
5616 (ix86_expand_vecop_qihi): Initialize interleave functions
5617 for MULT code only. Fix comments.
5618
5619 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
5620
5621 PR target/109797
5622 * config/i386/mmx.md (mulv2si3): Remove expander.
5623 (mulv2si3): Rename insn pattern from *mulv2si.
5624
5625 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
5626
5627 PR libstdc++/109816
5628 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
5629 '!lto_stream_offload_p'.
5630
5631 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
5632 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5633
5634 PR target/109743
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.
5641
5642 2023-05-12 Richard Biener <rguenther@suse.de>
5643
5644 PR tree-optimization/64731
5645 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
5646 handle TARGET_MEM_REF destinations of stores from vector
5647 CTORs.
5648
5649 2023-05-12 Richard Biener <rguenther@suse.de>
5650
5651 PR tree-optimization/109791
5652 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
5653 New pattern.
5654 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
5655 Likewise.
5656
5657 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5658
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.
5665 (vsriq_m): 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.
5692
5693 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5694
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.
5700
5701 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5702
5703 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
5704 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
5705
5706 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5707
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.
5714 (vsliq_m): 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.
5741
5742 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5743
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.
5749
5750 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5751
5752 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
5753 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
5754
5755 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5756
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.
5782
5783 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5784
5785 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
5786 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
5787
5788 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5789
5790 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
5791 gen_mve_vpselq.
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.
5798
5799 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5800
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,
5806 vfmsq.
5807 * config/arm/arm_mve.h (vfmaq): Remove.
5808 (vfmasq): Remove.
5809 (vfmsq): Remove.
5810 (vfmaq_m): Remove.
5811 (vfmasq_m): Remove.
5812 (vfmsq_m): 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.
5851
5852 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5853
5854 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
5855 VFMSQ_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
5860 into ...
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>.
5868
5869 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5870
5871 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
5872 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
5873
5874 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5875
5876 * config/arm/arm-mve-builtins-base.cc
5877 (FUNCTION_WITH_RTX_M_N_NO_F): New.
5878 (vmvnq): 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.
5882 (vmvnq_m): Remove.
5883 (vmvnq_x): Remove.
5884 (vmvnq_s8): Remove.
5885 (vmvnq_s16): Remove.
5886 (vmvnq_s32): Remove.
5887 (vmvnq_n_s16): Remove.
5888 (vmvnq_n_s32): Remove.
5889 (vmvnq_u8): 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.
5947
5948 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5949
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.
5957
5958 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5959
5960 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
5961 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
5962
5963 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
5964
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.
5969 (vbrsrq_m): Remove.
5970 (vbrsrq_x): 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.
6022
6023 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6024
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.
6035
6036 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6037
6038 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
6039 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
6040
6041 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6042
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.
6062
6063 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6064
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.
6072
6073 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6074
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.
6079
6080 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6081
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.
6126
6127 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6128
6129 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
6130 (MVE_VRMLxLDAVHAxQ_P): New.
6131 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
6132 vrmlsldavhax.
6133 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
6134 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
6135 VRMLALDAVHAQ_P_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.
6144
6145 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6146
6147 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
6148 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
6149 New.
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.
6191
6192 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6193
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,
6199 VQDMULLTQ_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
6206 ...
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.
6210
6211 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
6212
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.
6215
6216 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
6217
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.
6223
6224 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
6225
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.
6234
6235 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
6236
6237 * config/rs6000/rs6000-builtins.def
6238 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
6239 to xsiexpdp_di.
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.
6248
6249 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
6250
6251 * config/rs6000/rs6000-builtins.def
6252 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
6253 long long.
6254 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
6255 TARGET_POWERPC64.
6256
6257 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
6258
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
6262 to power9 catalog.
6263 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
6264 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
6265 TARGET_64BIT check.
6266 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
6267 requirement when it has a 64-bit argument.
6268
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>
6273
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.
6285 (vars_copy): 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.
6296
6297 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
6298
6299 * match.pd: simplify vector shift + bit_and + multiply.
6300
6301 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6302
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.
6315 (vqdmlahq): Remove.
6316 (vmlasq): Remove.
6317 (vmlaq): Remove.
6318 (vmlaq_m): Remove.
6319 (vmlasq_m): 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.
6432
6433 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6434
6435 * config/arm/iterators.md (MVE_VMLxQ_N): New.
6436 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
6437 vqrdmlash.
6438 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
6439 VQRDMLASHQ_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.
6445
6446 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6447
6448 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
6449 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
6450
6451 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6452
6453 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
6454 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
6455 (vqrdmlsdhxq): New.
6456 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
6457 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
6458 (vqrdmlsdhxq): New.
6459 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
6460 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
6461 (vqrdmlsdhxq): New.
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.
6594
6595 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6596
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.
6608
6609 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6610
6611 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
6612 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
6613
6614 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6615
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.
6678
6679 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6680
6681 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
6682 New.
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
6692 ...
6693 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6694
6695 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6696
6697 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
6698 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
6699
6700 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6701
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.
6747
6748 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6749
6750 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
6751 New.
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
6761 into ...
6762 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
6763
6764 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6765
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.
6828
6829 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6830
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
6841 ...
6842 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6843
6844 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6845
6846 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
6847 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
6848
6849 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6850
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.
6855 (vabavq_p): 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.
6882
6883 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6884
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,.
6890
6891 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6892
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.
6975
6976 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6977
6978 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
6979 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
6980
6981 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6982
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.
6991 (vmlsdavq): 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.
7065
7066 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7067
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,
7075 VMLSDAVXQ_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
7082 ...
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
7089 ...
7090 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7091
7092 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7093
7094 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
7095 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
7096
7097 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7098
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.
7114
7115 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7116
7117 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
7118 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
7119
7120 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7121
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.
7127
7128 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
7129
7130 PR target/109807
7131 * config/i386/i386.cc (ix86_widen_mult_cost):
7132 Handle V4HImode and V2SImode.
7133
7134 2023-05-11 Andrew Pinski <apinski@marvell.com>
7135
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.
7139
7140 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7141
7142 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
7143 vector constants.
7144
7145 2023-05-11 Pan Li <pan2.li@intel.com>
7146
7147 * config/riscv/vector.md: Add comments for simplifying to vmset.
7148
7149 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7150
7151 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
7152 pattern.
7153 (v<optab><mode>3): Add vector shift pattern.
7154 * config/riscv/vector-iterators.md: New iterator.
7155
7156 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7157
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
7176 renamed functions.
7177 * config/riscv/vector.md: Use renamed functions.
7178
7179 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
7180 Michael Collison <collison@rivosinc.com>
7181
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.
7188
7189 2023-05-11 Pan Li <pan2.li@intel.com>
7190
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):
7202 Ditto.
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.
7207
7208 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7209
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.
7214 (vmovltq): 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.
7273
7274 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7275
7276 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
7277 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
7278
7279 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7280
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
7290 into ...
7291 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7292
7293 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7294
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.
7312
7313 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7314
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.
7320
7321 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7322
7323 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
7324 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
7325
7326 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7327
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.
7359
7360 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7361
7362 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
7363 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
7364
7365 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7366
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.
7372
7373 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7374
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.
7379 (vaddvq_p): 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.
7406
7407 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7408
7409 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
7410 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
7411
7412 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7413
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
7420 gen_mve_vaddvq.
7421
7422 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7423
7424 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
7425 (vdupq): 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.
7429 (vdupq_m): 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.
7480
7481 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7482
7483 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
7484 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
7485
7486 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7487
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.
7499
7500 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7501
7502 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
7503 New.
7504 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
7505 (vrev64q): New.
7506 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
7507 (vrev64q): New.
7508 * config/arm/arm_mve.h (vrev16q): Remove.
7509 (vrev32q): Remove.
7510 (vrev64q): 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.
7616
7617 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7618
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>.
7640
7641 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
7642
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.
7654 (vcmphiq): Remove.
7655 (vcmpeqq): Remove.
7656 (vcmpcsq): Remove.
7657 (vcmpltq): Remove.
7658 (vcmpleq): Remove.
7659 (vcmpgtq): Remove.
7660 (vcmpgeq): 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.
8022
8023 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
8024
8025 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
8026 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
8027
8028 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
8029
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.
8032 (isu): Add VCMP*
8033 (supf): Likewise.
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
8044 ...
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
8050 into ...
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.
8056
8057 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
8058
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
8062 vice versa.
8063
8064 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
8065
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).
8070
8071 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8072
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.
8080
8081 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
8082
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.
8091
8092 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
8093
8094 PR target/92658
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.
8100
8101 2023-05-10 Jeff Law <jlaw@ventanamicro>
8102
8103 * config/h8300/constraints.md (Q): Make this a special memory
8104 constraint.
8105 (Zz): Similarly.
8106
8107 2023-05-10 Jakub Jelinek <jakub@redhat.com>
8108
8109 PR fortran/109788
8110 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
8111 if t is void_list_node.
8112
8113 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8114
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.
8119
8120 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8121
8122 PR target/99195
8123 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
8124 Rename to...
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.
8128
8129 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8130
8131 PR target/99195
8132 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
8133 Rename to...
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.
8137
8138 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8139
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.
8145
8146 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8147
8148 PR target/99195
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.
8158
8159 2023-05-10 Li Xu <xuli1@eswincomputing.com>
8160
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).
8163
8164 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8165
8166 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
8167 incorrect codes.
8168
8169 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8170
8171 PR target/109773
8172 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
8173 (source_equal_p): Fix dead loop in vsetvl avl checking.
8174
8175 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
8176
8177 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
8178 of modeadjusted_dccr.
8179
8180 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8181
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
8187 vminaq.
8188 * config/arm/arm_mve.h (vminaq): Remove.
8189 (vmaxaq): Remove.
8190 (vminaq_m): Remove.
8191 (vmaxaq_m): 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.
8220
8221 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8222
8223 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
8224 New.
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>):
8228 Merge into ...
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.
8232
8233 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8234
8235 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
8236 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
8237
8238 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8239
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
8245 vminnmaq.
8246 * config/arm/arm_mve.h (vminnmaq): Remove.
8247 (vmaxnmaq): 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.
8270
8271 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8272
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>):
8277 Merge into ...
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.
8281
8282 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8283
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.
8292 (vmaxnmvq): 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.
8340
8341 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8342
8343 * config/arm/arm-mve-builtins-functions.h
8344 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
8345
8346 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8347
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.
8357
8358 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8359
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.
8364 (vmaxnmq): 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.
8399
8400 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8401
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>):
8407 Merge into ...
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.
8411
8412 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8413
8414 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
8415 (smax<mode>3): Likewise.
8416
8417 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8418
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)
8423 (vminvq): New.
8424 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
8425 (vminvq): New.
8426 * config/arm/arm_mve.h (vminvq): Remove.
8427 (vmaxvq): Remove.
8428 (vminvq_p): Remove.
8429 (vmaxvq_p): 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.
8482 (vminavq): Remove.
8483 (vmaxavq): 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.
8514
8515 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8516
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.
8526
8527 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8528
8529 * config/arm/arm-mve-builtins-functions.h (class
8530 unspec_mve_function_exact_insn_pred_p): New.
8531
8532 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8533
8534 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
8535 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
8536
8537 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8538
8539 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
8540 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
8541
8542 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
8543
8544 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
8545 Declare.
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
8549 function.
8550 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
8551 Upa rather than Upl for unpredicated movprfx alternatives.
8552
8553 2023-05-09 Jeff Law <jlaw@ventanamicro>
8554
8555 * config/h8300/testcompare.md: Add peephole2 which uses a memory
8556 load to set flags, thus eliminating a compare against zero.
8557
8558 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8559
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.
8564 (vshllbq): 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.
8623
8624 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8625
8626 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
8627 (VSHLLBQ_N, VSHLLTQ_N): Remove.
8628 (VSHLLxQ_N): New.
8629 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
8630 (VSHLLxQ_M_N): New.
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>):
8635 Merge into ...
8636 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8637
8638 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8639
8640 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
8641 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
8642
8643 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8644
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.
8655 (vqmovnbq): 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.
8694 (vmovntq): Remove.
8695 (vmovnbq): 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.
8758
8759 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8760
8761 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
8762 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
8763 vqmovunt.
8764 (isu): Likewise.
8765 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
8766 VQMOVUNTQ_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.
8776
8777 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8778
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.
8783
8784 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8785
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.
8793 (vrndq): Remove.
8794 (vrndpq): Remove.
8795 (vrndnq): Remove.
8796 (vrndmq): Remove.
8797 (vrndaq): Remove.
8798 (vrndaq_m): Remove.
8799 (vrndmq_m): Remove.
8800 (vrndnq_m): Remove.
8801 (vrndpq_m): Remove.
8802 (vrndq_m): Remove.
8803 (vrndxq_m): Remove.
8804 (vrndq_x): Remove.
8805 (vrndnq_x): Remove.
8806 (vrndmq_x): Remove.
8807 (vrndpq_x): Remove.
8808 (vrndaq_x): Remove.
8809 (vrndxq_x): 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.
8900
8901 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
8902
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.
8910 (vabsq_m): Remove.
8911 (vabsq_x): Remove.
8912 (vabsq_f16): Remove.
8913 (vabsq_f32): Remove.
8914 (vabsq_s8): 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.
8945 (vnegq): Remove.
8946 (vnegq_m): Remove.
8947 (vnegq_x): Remove.
8948 (vnegq_f16): Remove.
8949 (vnegq_f32): Remove.
8950 (vnegq_s8): 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.
8981 (vclsq): Remove.
8982 (vclsq_m): Remove.
8983 (vclsq_x): Remove.
8984 (vclsq_s8): 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.
9005 (vclzq): Remove.
9006 (vclzq_m): Remove.
9007 (vclzq_x): Remove.
9008 (vclzq_s8): Remove.
9009 (vclzq_s16): Remove.
9010 (vclzq_s32): Remove.
9011 (vclzq_u8): 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.
9047 (vqabsq): Remove.
9048 (vqnegq): Remove.
9049 (vqnegq_m): Remove.
9050 (vqabsq_m): 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.
9079
9080 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
9081
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.
9088 (mve_mnemo): New.
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.
9107
9108 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
9109
9110 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
9111 * config/arm/arm-mve-builtins-shapes.h (unary): New.
9112
9113 2023-05-09 Jakub Jelinek <jakub@redhat.com>
9114
9115 * mux-utils.h: Fix comment typo, avoides -> avoids.
9116
9117 2023-05-09 Jakub Jelinek <jakub@redhat.com>
9118
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.
9125
9126 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
9127
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 ...
9131 (main): ... here.
9132
9133 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
9134
9135 * genmatch.cc (showUsage): Reimplement as ...
9136 (usage): ...this. Adjust all uses.
9137 (main): Print usage when no arguments. Add missing 'return 1'.
9138
9139 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
9140
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.
9147 (main): Adjust.
9148
9149 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
9150
9151 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
9152 earlyclobbers.
9153
9154 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
9155 Uros Bizjak <ubizjak@gmail.com>
9156
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.
9160
9161 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
9162
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.
9166
9167 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
9168
9169 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
9170 New.
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
9181 update_vector_info.
9182
9183 2023-05-08 Jeff Law <jlaw@ventanamicro>
9184
9185 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
9186
9187 2023-05-08 Richard Biener <rguenther@suse.de>
9188 Michael Meissner <meissner@linux.ibm.com>
9189
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.
9193
9194 2023-05-08 Andrew Pinski <apinski@marvell.com>
9195
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
9200 operations.
9201 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
9202 to call factor_out_conditional_operation instead.
9203
9204 2023-05-08 Andrew Pinski <apinski@marvell.com>
9205
9206 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
9207 over factor_out_conditional_conversion.
9208
9209 2023-05-08 Andrew Pinski <apinski@marvell.com>
9210
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.
9215
9216 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9217
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
9230 global extern.
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.
9235
9236 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
9237
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.
9246
9247 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
9248
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.
9254
9255 2023-05-08 Andrew Pinski <apinski@marvell.com>
9256
9257 PR tree-optimization/109691
9258 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
9259 argument.
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
9264 num_dce.
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
9273 from the list.
9274 Don't update the stat on removal statements.
9275
9276 2023-05-07 Andrew Pinski <apinski@marvell.com>
9277
9278 PR target/109762
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.
9284
9285 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
9286
9287 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
9288 more parallel code if can_create_pseudo_p.
9289
9290 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
9291
9292 PR target/43644
9293 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
9294 immediately before moving a multi-word register by parts.
9295
9296 2023-05-06 Jeff Law <jlaw@ventanamicro>
9297
9298 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
9299
9300 2023-05-06 Michael Collison <collison@rivosinc.com>
9301
9302 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
9303 Check that GET_MODE_NUNITS is a multiple of 2.
9304
9305 2023-05-06 Michael Collison <collison@rivosinc.com>
9306
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.
9323
9324 2023-05-06 Jeff Law <jlaw@ventanamicro>
9325
9326 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
9327 duplicate definition.
9328
9329 2023-05-06 Michael Collison <collison@rivosinc.com>
9330
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.
9337
9338 2023-05-06 Michael Collison <collison@rivosinc.com>
9339
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.
9346
9347 2023-05-06 Michael Collison <collison@rivosinc.com>
9348
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.
9353
9354 2023-05-06 Xi Ruoyao <xry111@xry111.site>
9355
9356 * config/loongarch/loongarch.h (struct machine_function): Add
9357 reg_is_wrapped_separately array for register wrapping
9358 information.
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
9374 separately.
9375
9376 2023-05-06 Xi Ruoyao <xry111@xry111.site>
9377
9378 PR other/109522
9379 * Makefile.in (s-macro_list): Pass -nostdinc to
9380 $(GCC_FOR_TARGET).
9381
9382 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9383
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.
9393
9394 2023-05-06 Jakub Jelinek <jakub@redhat.com>
9395
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.
9405
9406 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
9407
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.
9414
9415 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9416
9417 PR target/109748
9418 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
9419 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
9420
9421 2023-05-06 liuhongt <hongtao.liu@intel.com>
9422
9423 * combine.cc (maybe_swap_commutative_operands): Canonicalize
9424 vec_merge when mask is constant.
9425 * doc/md.texi: Document vec_merge canonicalization.
9426
9427 2023-05-06 Jakub Jelinek <jakub@redhat.com>
9428
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.
9436
9437 2023-05-06 Jakub Jelinek <jakub@redhat.com>
9438
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).
9444
9445 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
9446
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.
9450
9451 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
9452
9453 * config/cris/cris.md (movandsplit1): New define_peephole2.
9454
9455 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
9456
9457 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
9458
9459 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
9460
9461 * doc/md.texi (define_peephole2): Document order of scanning.
9462
9463 2023-05-05 Pan Li <pan2.li@intel.com>
9464 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9465
9466 * config/riscv/vector.md: Allow const as the operand of RVV
9467 indexed load/store.
9468
9469 2023-05-05 Pan Li <pan2.li@intel.com>
9470
9471 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
9472 consumed by simplify_rtx.
9473
9474 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9475
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.
9480 (vrshrq): Remove.
9481 (vrshrq_m): Remove.
9482 (vshrq_m): Remove.
9483 (vrshrq_x): Remove.
9484 (vshrq_x): 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.
9563
9564 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9565
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
9572 into ...
9573 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9574
9575 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9576
9577 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
9578 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
9579
9580 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9581
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.
9639
9640 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9641
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.
9647 (supf): Likewise.
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.
9656
9657 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9658
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.
9663
9664 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9665
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):
9671 New.
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,
9677 vqrshrntq.
9678 * config/arm/arm_mve.h (vshrnbq): Remove.
9679 (vshrntq): 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.
9718 (vrshrnbq): Remove.
9719 (vrshrntq): 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.
9758 (vqshrnbq): Remove.
9759 (vqshrntq): 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.
9838
9839 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9840
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.
9844 (isu): New.
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>):
9855 Merge into ...
9856 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9857
9858 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9859
9860 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
9861 New.
9862 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
9863
9864 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9865
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.
9871 (vmaxq): Remove.
9872 (vmaxq_m): Remove.
9873 (vminq_m): Remove.
9874 (vminq_x): Remove.
9875 (vmaxq_x): Remove.
9876 (vminq_u8): Remove.
9877 (vmaxq_u8): Remove.
9878 (vminq_s8): Remove.
9879 (vmaxq_s8): 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.
9954
9955 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9956
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.
9963
9964 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9965
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.
9971 (vshlq_r): Remove.
9972 (vshlq_n): Remove.
9973 (vshlq_m_r): Remove.
9974 (vshlq_m): Remove.
9975 (vshlq_m_n): Remove.
9976 (vshlq_x): Remove.
9977 (vshlq_x_n): Remove.
9978 (vshlq_s8): Remove.
9979 (vshlq_s16): Remove.
9980 (vshlq_s32): Remove.
9981 (vshlq_u8): 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.
10082 (vqshlq): 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.
10166
10167 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10168
10169 * config/arm/arm-mve-builtins-functions.h (class
10170 unspec_mve_function_exact_insn_vshl): New.
10171
10172 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10173
10174 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
10175 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
10176
10177 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10178
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.
10182
10183 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10184
10185 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
10186 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
10187
10188 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10189
10190 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
10191 (vabdq): 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.
10195 (vabdq_m): Remove.
10196 (vabdq_x): 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.
10248
10249 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10250
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.
10257
10258 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10259
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.
10291
10292 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10293
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
10301 ...
10302 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
10303 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
10304 into ...
10305 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
10306 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
10307 into ...
10308 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10309 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
10310 into ...
10311 (@mve_<mve_insn>q_<supf><mode>): ... this.
10312
10313 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10314
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
10319 vqrshlq, vrshlq.
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.
10388 (vqrshlq): 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.
10442
10443 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10444
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
10451 into ...
10452 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10453
10454 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
10455
10456 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
10457 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
10458
10459 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10460
10461 PR target/109615
10462 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
10463 denegrate PHI optmization.
10464
10465 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
10466
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.
10471
10472 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10473
10474 PR bootstrap/84402
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.
10483
10484 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10485
10486 PR bootstrap/84402
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.
10494
10495 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10496
10497 PR bootstrap/84402
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.
10511
10512 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10513
10514 PR bootstrap/84402
10515 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
10516 debug_dump var.
10517 (dt_simplify::gen_1): Use it.
10518
10519 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10520
10521 PR bootstrap/84402
10522 * genmatch.cc (output_line_directive): Only emit commented directive
10523 when -vv.
10524
10525 2023-05-05 Tamar Christina <tamar.christina@arm.com>
10526
10527 PR bootstrap/84402
10528 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
10529
10530 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
10531
10532 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
10533 unused in_mode/in_n variables.
10534
10535 2023-05-05 Richard Biener <rguenther@suse.de>
10536
10537 PR tree-optimization/109735
10538 * tree-vect-stmts.cc (vectorizable_operation): Perform
10539 conversion for POINTER_DIFF_EXPR unconditionally.
10540
10541 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
10542
10543 * config/i386/mmx.md (mulv2si3): New expander.
10544 (*mulv2si3): New insn pattern.
10545
10546 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
10547 Thomas Schwinge <thomas@codesourcery.com>
10548
10549 PR libgomp/108098
10550 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
10551 alongside reverse-offload function table to prevent NULL values
10552 of the function addresses.
10553
10554 2023-05-05 Jakub Jelinek <jakub@redhat.com>
10555
10556 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
10557 mpft_t -> mpfr_t.
10558 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
10559
10560 2023-05-05 Andrew Pinski <apinski@marvell.com>
10561
10562 PR tree-optimization/109732
10563 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
10564 of the argtrue/argfalse.
10565
10566 2023-05-05 Andrew Pinski <apinski@marvell.com>
10567
10568 PR tree-optimization/109722
10569 * match.pd: Extend the `ABS<a> == 0` pattern
10570 to cover `ABSU<a> == 0` too.
10571
10572 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
10573
10574 PR target/109733
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.
10578
10579 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10580
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
10586 codes to...
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.
10597
10598 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10599
10600 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
10601 Delete.
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):
10609 New predicate.
10610
10611 2023-05-04 Andrew Pinski <apinski@marvell.com>
10612
10613 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
10614 diamond form bb with forwarder only empty blocks better.
10615
10616 2023-05-04 Andrew Pinski <apinski@marvell.com>
10617
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.
10624
10625 2023-05-04 Andrew Pinski <apinski@marvell.com>
10626
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.
10631
10632 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
10633
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.
10640
10641 2023-05-04 Richard Biener <rguenther@suse.de>
10642
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.
10646
10647 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10648
10649 PR target/99195
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.
10688
10689 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10690
10691 PR target/99195
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.
10700
10701 2023-05-04 Martin Liska <mliska@suse.cz>
10702
10703 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
10704 (print_version): Use it.
10705 (generate_results): Likewise.
10706
10707 2023-05-04 Richard Biener <rguenther@suse.de>
10708
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):
10743 Likewise.
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):
10748 Likewise.
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.
10766
10767 2023-05-04 Jakub Jelinek <jakub@redhat.com>
10768
10769 PR debug/109676
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.
10774
10775 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
10776
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.
10782
10783 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
10784
10785 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
10786 to ALL_REGS.
10787
10788 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
10789
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.
10794
10795 2023-05-03 Andrew Pinski <apinski@marvell.com>
10796
10797 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
10798 stats on removed number of statements and phis.
10799
10800 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
10801
10802 PR tree-optimization/109711
10803 * value-range.cc (irange::verify_range): Allow types of
10804 error_mark_node.
10805
10806 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
10807
10808 PR sanitizer/90746
10809 * calls.cc (can_implement_as_sibling_call_p): Reject calls
10810 to __sanitizer_cov_trace_pc.
10811
10812 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
10813
10814 PR target/109661
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
10819 TYPE_MAIN_VARIANT.
10820 (aarch64_function_arg_boundary): Update accordingly.
10821 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
10822 Warn about ABI differences.
10823
10824 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
10825
10826 PR target/109661
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.
10831
10832 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10833
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)
10837 (vrmulhq): New.
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.
10843 (vhaddq): 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.
10998 (vmulhq): 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.
11040 (vqsubq): Remove.
11041 (vqaddq): 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.
11172 (vrhaddq): 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.
11214 (vrmulhq): 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.
11256
11257 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11258
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
11270 ...
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.
11275
11276 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11277
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.
11291
11292 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11293
11294 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
11295 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
11296 vqsubq.
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.
11303
11304 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11305
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.
11340
11341 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11342
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.
11366
11367 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11368
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.
11375
11376 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11377
11378 * config/arm/arm-mve-builtins-shapes.cc (create): New.
11379 * config/arm/arm-mve-builtins-shapes.h: (create): New.
11380
11381 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11382
11383 * config/arm/arm-mve-builtins-functions.h (class
11384 unspec_mve_function_exact_insn): New.
11385
11386 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11387
11388 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
11389 (vorrq): 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.
11396 (vorrq_m): Remove.
11397 (vorrq_x): 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.
11466
11467 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11468
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.
11473
11474 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11475
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.
11481 (vandq_m): Remove.
11482 (vandq_x): 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.
11534 (veorq_m): Remove.
11535 (veorq_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.
11587
11588 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11589
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
11606 into ...
11607 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11608
11609 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11610
11611 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
11612 * config/arm/arm-mve-builtins-shapes.h (binary): New.
11613
11614 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11615
11616 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
11617 New.
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.
11622 (vaddq_m): Remove.
11623 (vaddq_x): 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.
11723 (vmulq): Remove.
11724 (vmulq_m): Remove.
11725 (vmulq_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.
11825 (vsubq): Remove.
11826 (vsubq_m): Remove.
11827 (vsubq_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):
11928 Remove.
11929 (vmulq_u, vmulq_s, vmulq_f): Remove.
11930 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
11931 (mve_vmulq_<supf><mode>): Remove.
11932
11933 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11934
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
11938 iterators.
11939 * config/arm/mve.md
11940 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
11941 Factorize into ...
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
11947 into ...
11948 (mve_<mve_addsubmul>q<mode>): ... this.
11949 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
11950 Factorize into ...
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>):
11959 Factorize into ...
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.
11964
11965 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11966
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.
11970
11971 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
11972
11973 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
11974 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
11975
11976 2023-05-03 Murray Steele <murray.steele@arm.com>
11977 Christophe Lyon <christophe.lyon@arm.com>
11978
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
11983 declaration.
11984 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
11985 * config/arm/arm-mve-builtins-shapes.h (inherent): New
11986 declaration.
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.
11999
12000 2023-05-03 Murray Steele <murray.steele@arm.com>
12001 Christophe Lyon <christophe.lyon@arm.com>
12002
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
12015 macro.
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.
12236
12237 2023-05-03 Murray Steele <murray.steele@arm.com>
12238 Christophe Lyon <christophe.lyon@arm.com>
12239 Christophe Lyon <christophe.lyon@arm.com
12240
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
12244 numberspace.
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
12249 arm_mve_resolver.
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
12254 class.
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.
12276 (float16): New.
12277 (all_float): New.
12278 (all_signed): New.
12279 (all_unsigned): New.
12280 (integer_8): New.
12281 (integer_8_16): New.
12282 (integer_16_32): New.
12283 (integer_32): New.
12284 (signed_16_32): New.
12285 (signed_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.
12372 (s16): Likewise.
12373 (s32): Likewise.
12374 (s64): Likewise.
12375 (u8): Likewise.
12376 (u16): Likewise.
12377 (u32): Likewise.
12378 (u64): Likewise.
12379 (f16): Likewise.
12380 (f32): Likewise.
12381 (n): New mode.
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
12420 ARM_BUILTIN_MVE.
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.
12440
12441 2023-05-03 Murray Steele <murray.steele@arm.com>
12442 Christophe Lyon <christophe.lyon@arm.com>
12443 Christophe Lyon <christophe.lyon@arm.com>
12444
12445 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
12446 New 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.
12471
12472 2023-05-03 Martin Liska <mliska@suse.cz>
12473
12474 PR target/109713
12475 * config/riscv/sync.md: Add gcc_unreachable to a switch.
12476
12477 2023-05-03 Richard Biener <rguenther@suse.de>
12478
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):
12487 Likewise.
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):
12493 Likewise.
12494 (optimize_spaceship): Take a gcond * argument, avoid
12495 last_stmt.
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):
12500 Likewise.
12501
12502 2023-05-03 Andreas Schwab <schwab@suse.de>
12503
12504 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
12505
12506 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12507
12508 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
12509 New function.
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.
12517 (BASE): Ditto.
12518 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12519 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
12520 Ditto.
12521 (vsseg): Ditto.
12522 (vlsseg): Ditto.
12523 (vssseg): Ditto.
12524 (vluxseg): Ditto.
12525 (vloxseg): Ditto.
12526 (vsuxseg): Ditto.
12527 (vsoxseg): Ditto.
12528 (vlsegff): Ditto.
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.
12533 (SHAPE): 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
12551 segment ff load.
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
12555 pattern.
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.
12574
12575 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12576
12577 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
12578 tuple type support.
12579 (inttype): Ditto.
12580 (floattype): Ditto.
12581 (main): Ditto.
12582 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
12583 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
12584 tuple type vset.
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):
12790 Ditto.
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.
12851
12852 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12853
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
12857 function.
12858 (get_nf): Ditto.
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):
12869 New macro.
12870 (register_tuple_type): New function
12871 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
12872 New macro.
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):
13075 Ditto.
13076 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
13077 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
13078 function.
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
13095 movement.
13096 (*mov<VT:mode>_<P:mode>): Ditto.
13097
13098 2023-05-03 Richard Biener <rguenther@suse.de>
13099
13100 * cse.cc (cse_insn): Track an equivalence to the destination
13101 separately and delay using src_related for it.
13102
13103 2023-05-03 Richard Biener <rguenther@suse.de>
13104
13105 * cse.cc (HASH): Turn into inline function and mix
13106 in another HASH_SHIFT bits.
13107 (SAFE_HASH): Likewise.
13108
13109 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13110
13111 PR target/99195
13112 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
13113 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
13114
13115 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13116
13117 PR target/99195
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.
13136
13137 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
13138
13139 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
13140
13141 2023-05-03 Martin Liska <mliska@suse.cz>
13142
13143 PR tree-optimization/109693
13144 * value-range-storage.cc (vrange_allocator::vrange_allocator):
13145 Remove unused field.
13146 * value-range-storage.h: Likewise.
13147
13148 2023-05-02 Andrew Pinski <apinski@marvell.com>
13149
13150 * tree-ssa-phiopt.cc (move_stmt): New function.
13151 (match_simplify_replacement): Use move_stmt instead
13152 of the inlined version.
13153
13154 2023-05-02 Andrew Pinski <apinski@marvell.com>
13155
13156 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
13157 pattern.
13158
13159 2023-05-02 Andrew Pinski <apinski@marvell.com>
13160
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.
13164
13165 2023-05-02 Andrew Pinski <apinski@marvell.com>
13166
13167 PR target/109657
13168 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
13169 insn_and_split pattern.
13170
13171 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13172
13173 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
13174 load mapping.
13175
13176 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13177
13178 * config/riscv/sync.md (mem_thread_fence_1): Change fence
13179 depending on the given memory model.
13180
13181 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13182
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.
13191
13192 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13193
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.
13198
13199 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13200
13201 PR target/89835
13202 * config/riscv/sync.md (atomic_store<mode>): Use simple store
13203 instruction in combination with fence(s).
13204
13205 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13206
13207 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
13208 of %A to include release bits.
13209
13210 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13211
13212 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
13213 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
13214 pair.
13215
13216 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13217
13218 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
13219 sequentially consistent LR.aqrl/SC.rl pairs.
13220
13221 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
13222
13223 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
13224 sanitize memmodel input with memmodel_base.
13225
13226 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
13227 Pan Li <pan2.li@intel.com>
13228
13229 PR target/109617
13230 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
13231
13232 2023-05-02 Romain Naour <romain.naour@gmail.com>
13233
13234 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
13235 the namespace.
13236
13237 2023-05-02 Martin Liska <mliska@suse.cz>
13238
13239 * doc/invoke.texi: Update documentation based on param.opt file.
13240
13241 2023-05-02 Richard Biener <rguenther@suse.de>
13242
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.
13246
13247 2023-05-01 Andrew Pinski <apinski@marvell.com>
13248
13249 * tree-ssa-phiopt.cc: Update comment about
13250 how the transformation are implemented.
13251
13252 2023-05-01 Jeff Law <jlaw@ventanamicro>
13253
13254 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
13255
13256 2023-05-01 Jeff Law <jlaw@ventanamicro>
13257
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.
13264
13265 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
13266
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.
13270
13271 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13272
13273 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
13274 friends.
13275
13276 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13277
13278 * value-range.h (irange::set_nonzero): Inline.
13279
13280 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13281
13282 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
13283 precision.
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.
13294
13295 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13296
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.
13320 (gt_ggc_mx): Same.
13321 (gt_pch_nx): 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.
13334
13335 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13336
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.
13352
13353 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13354
13355 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
13356 irange_val*.
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.
13361 (min_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_*.
13375
13376 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13377
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.
13422 (INT): Same.
13423 (UINT): Same.
13424 (INT16): Same.
13425 (UINT16): Same.
13426 (SCHAR): Same.
13427 (UCHAR): 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.
13461 (INT): Same.
13462 (UINT): Same.
13463 (SCHAR): Same.
13464 (UINT128): Same.
13465 (UCHAR): Same.
13466 (range): New.
13467 (tree_range): New.
13468 (range_int): New.
13469 (range_uint): New.
13470 (range_uint128): New.
13471 (range_uchar): New.
13472 (range_char): 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.
13490 * vr-values.cc
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.
13494
13495 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13496
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.
13503
13504 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13505
13506 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
13507
13508 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13509
13510 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
13511 ranger API.
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
13522 rename.
13523 (range_fits_type_p): Rename value_range to irange.
13524 * vr-values.h (range_fits_type_p): Adjust prototype.
13525
13526 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13527
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
13538 tree_upper_bound.
13539
13540 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13541
13542 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
13543 kind() call.
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.
13556
13557 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
13558
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
13584 vrange_allocator.
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
13652 irange_storage.
13653 (class frange): Same.
13654
13655 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
13656
13657 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
13658 inc to avoid clobbering the carry flag.
13659
13660 2023-04-30 Andrew Pinski <apinski@marvell.com>
13661
13662 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
13663 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
13664
13665 2023-04-30 Andrew Pinski <apinski@marvell.com>
13666
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.
13672
13673 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
13674
13675 * configure: Regenerate.
13676 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
13677
13678 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
13679
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.
13685
13686 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
13687
13688 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
13689 to a define_insn.
13690 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
13691 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
13692
13693 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
13694
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.
13709
13710 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
13711
13712 PR target/105525
13713 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
13714 (lm32-*-uclinux*): Likewise.
13715
13716 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
13717
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.
13723
13724 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
13725
13726 * doc/install.texi: Fix documentation typo
13727
13728 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
13729
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
13734 divmod expansion.
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.
13740
13741 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
13742
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.
13746 (type): Add clmul
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.
13753
13754 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
13755
13756 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
13757
13758 2023-04-28 Andrew Pinski <apinski@marvell.com>
13759
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.
13765
13766 2023-04-28 Andrew Pinski <apinski@marvell.com>
13767
13768 * match.pd: Add patterns for
13769 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
13770
13771 2023-04-28 Andrew Pinski <apinski@marvell.com>
13772
13773 * match.pd: Factor out the deciding the min/max from
13774 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
13775 pattern to ...
13776 * fold-const.cc (minmax_from_comparison): this new function.
13777 * fold-const.h (minmax_from_comparison): New prototype.
13778
13779 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
13780
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.
13788
13789 2023-04-28 Richard Biener <rguenther@suse.de>
13790
13791 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
13792 consider scatters.
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.
13798
13799 2023-04-28 Richard Biener <rguenther@suse.de>
13800
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.
13804
13805 2023-04-28 Pan Li <pan2.li@intel.com>
13806 kito-cheng <kito.cheng@sifive.com>
13807
13808 * config/riscv/vector.md: Add new define split to perform
13809 the simplification.
13810
13811 2023-04-28 Richard Biener <rguenther@suse.de>
13812
13813 PR ipa/109652
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.
13818
13819 2023-04-28 Richard Biener <rguenther@suse.de>
13820
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.
13826
13827 2023-04-28 Richard Biener <rguenther@suse.de>
13828
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.
13832
13833 2023-04-28 Richard Biener <rguenther@suse.de>
13834
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.
13845
13846 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13847
13848 PR target/99195
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.
13865
13866 2023-04-28 Jakub Jelinek <jakub@redhat.com>
13867
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}.
13872
13873 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
13874 Jakub Jelinek <jakub@redhat.com>
13875
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}.
13881
13882 2023-04-28 Jakub Jelinek <jakub@redhat.com>
13883
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.
13912
13913 2023-04-28 Alexandre Oliva <oliva@adacore.com>
13914
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
13919 compares.
13920
13921 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
13922
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.
13929
13930 2023-04-27 Andrew Pinski <apinski@marvell.com>
13931
13932 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
13933 up to 2 min/max expressions in the sequence/match code.
13934
13935 2023-04-27 Andrew Pinski <apinski@marvell.com>
13936
13937 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
13938 COMPARISON.
13939 * tree-eh.cc (operation_could_trap_helper_p): Treate
13940 MIN_EXPR/MAX_EXPR similar as other comparisons.
13941
13942 2023-04-27 Andrew Pinski <apinski@marvell.com>
13943
13944 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
13945 prototype.
13946 (cond_if_else_store_replacement): Likewise.
13947 (get_non_trapping): Likewise.
13948 (store_elim_worker): Move into ...
13949 (pass_cselim::execute): This.
13950
13951 2023-04-27 Andrew Pinski <apinski@marvell.com>
13952
13953 * tree-ssa-phiopt.cc (two_value_replacement): Remove
13954 prototype.
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.
13964
13965 2023-04-27 Andrew Pinski <apinski@marvell.com>
13966
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.
13972
13973 2023-04-27 Jan Hubicka <jh@suse.cz>
13974
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.
13982
13983 2023-04-27 Richard Biener <rguenther@suse.de>
13984
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.
13991
13992 2023-04-27 Alexandre Oliva <oliva@adacore.com>
13993
13994 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
13995
13996 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
13997
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.
14004
14005 2023-04-27 Richard Biener <rguenther@suse.de>
14006
14007 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
14008 create a CTOR operand in the result when simplifying GIMPLE.
14009
14010 2023-04-27 Richard Biener <rguenther@suse.de>
14011
14012 * gimplify.cc (gimplify_compound_lval): When the base
14013 gimplified to a register make sure to split up chains
14014 of operations.
14015
14016 2023-04-27 Richard Biener <rguenther@suse.de>
14017
14018 PR ipa/109607
14019 * ipa-param-manipulation.h
14020 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
14021 argument.
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.
14028
14029 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
14030
14031 * doc/extend.texi (Zero Length): Describe example.
14032
14033 2023-04-27 Richard Biener <rguenther@suse.de>
14034
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.
14038
14039 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
14040
14041 * config/riscv/riscv.cc: Fix whitespace.
14042 * config/riscv/sync.md: Fix whitespace.
14043
14044 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14045
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.
14076
14077 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14078
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
14092 ssa_cache.
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.
14101
14102 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14103
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.
14119
14120 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14121
14122 * value-relation.cc (dom_oracle::query_relation): Check early for lack
14123 of any relation.
14124 * value-relation.h (equiv_oracle::has_equiv_p): New.
14125
14126 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
14127
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().
14138
14139 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
14140
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.
14144
14145 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
14146
14147 PR target/104338
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.
14156
14157 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14158
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.
14164
14165 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14166
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.
14172
14173 2023-04-26 Pan Li <pan2.li@intel.com>
14174 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14175
14176 * config/riscv/riscv.cc (riscv_classify_address): Allow
14177 const0_rtx for the RVV load/store.
14178
14179 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14180
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.
14209 (gt_ggc_mx): Same.
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.
14224
14225 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14226
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.
14231
14232 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14233
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.
14244
14245 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14246
14247 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
14248
14249 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14250
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.
14255 * match.pd: 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.
14267
14268 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14269
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
14274 dump_generic_node.
14275
14276 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14277
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.
14283
14284 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14285
14286 * builtins.cc (determine_block_size): Convert use of legacy API to
14287 get_legacy_range.
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.
14316
14317 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14318
14319 * value-range-pretty-print.cc (vrange_printer::visit): Remove
14320 constant_p use.
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.
14325
14326 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14327
14328 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
14329 symbolics support.
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.
14342
14343 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14344
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.
14349
14350 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14351
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.
14358
14359 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14360
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.
14367
14368 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14369
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.
14381 * vr-values.cc
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.
14391
14392 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14393
14394 * vr-values.cc
14395 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
14396 Rename to...
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.
14406
14407 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
14408
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.
14415
14416 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
14417
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.
14422
14423 2023-04-26 Richard Biener <rguenther@suse.de>
14424
14425 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
14426 Avoid last_stmt.
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):
14455 Likewise.
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.
14464 * tree-ssa-dom.cc
14465 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
14466 Likewise.
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.
14486
14487 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14488
14489 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
14490
14491 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
14492
14493 PR target/108758
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
14498 to power9-vector.
14499
14500 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
14501
14502 PR target/109069
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
14508 predicate.
14509
14510 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14511
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.
14519
14520 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14521
14522 * config/riscv/vector.md: Fix redundant vmv1r.v.
14523
14524 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14525
14526 * config/riscv/vector.md: Fix RA constraint.
14527
14528 2023-04-26 Pan Li <pan2.li@intel.com>
14529
14530 PR target/109272
14531 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
14532 check for vn_reference equal.
14533
14534 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14535
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.
14541
14542 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
14543
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.
14549
14550 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
14551
14552 * recog.cc (peep2_attempt, peep2_update_life): Correct
14553 head-comment description of parameter match_len.
14554
14555 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
14556
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.
14564
14565 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
14566
14567 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
14568 superfluous debug temporaries for single GIMPLE assignments.
14569
14570 2023-04-25 Richard Biener <rguenther@suse.de>
14571
14572 PR tree-optimization/109609
14573 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
14574 Clarify semantics.
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.
14578
14579 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14580
14581 PR target/99195
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.
14588
14589 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14590
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.
14594
14595 2023-04-25 Richard Biener <rguenther@suse.de>
14596
14597 PR rtl-optimization/109585
14598 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
14599
14600 2023-04-25 Jakub Jelinek <jakub@redhat.com>
14601
14602 PR target/109566
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.
14606
14607 2023-04-25 Martin Liska <mliska@suse.cz>
14608
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
14615 index.
14616
14617 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
14618
14619 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
14620 length attribute for the first (memory operand) alternative.
14621
14622 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
14623
14624 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
14625 * config/aarch64/constraints.md: Make "Umn" relaxed memory
14626 constraint.
14627 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
14628
14629 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
14630
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.
14634
14635 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
14636
14637 * ipa-cp.cc (ipa_range_contains_p): New.
14638 (decide_whether_version_node): Use it.
14639
14640 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14641
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.
14645
14646 2023-04-24 Andrew Pinski <apinski@marvell.com>
14647
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
14651
14652 2023-04-24 Andrew Pinski <apinski@marvell.com>
14653
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
14656 manually.
14657
14658 2023-04-24 Andrew Pinski <apinski@marvell.com>
14659
14660 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
14661 New function.
14662 (match_simplify_replacement): Call
14663 empty_bb_or_one_feeding_into_p instead of doing it inline.
14664
14665 2023-04-24 Andrew Pinski <apinski@marvell.com>
14666
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.
14670
14671 2023-04-24 Andrew Pinski <apinski@marvell.com>
14672
14673 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
14674 code for better code readability.
14675
14676 2023-04-24 Andrew Pinski <apinski@marvell.com>
14677
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.
14682
14683 2023-04-24 Patrick Palka <ppalka@redhat.com>
14684
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.
14691
14692 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
14693
14694 * doc/generic.texi (OpenMP): Add != to allowed
14695 conditions and state that vars can be unsigned.
14696 * tree.def (OMP_FOR): Likewise.
14697
14698 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14699
14700 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
14701
14702 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14703
14704 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
14705 Remove explicit Solaris 11 references.
14706 Markup fixes.
14707 (Options specification, --with-gnu-as): as and gas always differ
14708 on Solaris.
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.
14722
14723 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14724
14725 PR target/109406
14726 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
14727 case.
14728 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
14729 pattern.
14730
14731 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14732
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.
14741
14742 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14743
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.
14753
14754 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14755
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.
14762
14763 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14764
14765 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
14766 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
14767 unspec.
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.
14771
14772 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14773
14774 * config/aarch64/aarch64-simd.md
14775 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
14776
14777 2023-04-24 Richard Biener <rguenther@suse.de>
14778
14779 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
14780 last_stmt.
14781 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
14782 Likewise.
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):
14793 Likewise.
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):
14808 Likewise.
14809 (back_threader_profitability::possibly_profitable_path_p):
14810 Likewise.
14811 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
14812 Likewise.
14813 * tree-switch-conversion.cc (pass_convert_switch::execute):
14814 Likewise.
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.
14822
14823 2023-04-24 Richard Biener <rguenther@suse.de>
14824
14825 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
14826
14827 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14828
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.
14833
14834 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14835
14836 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
14837 comment for cleanup_insns.
14838
14839 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14840
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.
14844
14845 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14846
14847 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
14848 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
14849
14850 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14851
14852 PR target/99195
14853 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
14854 (aarch64_addp<mode><vczle><vczbe>): ... This.
14855
14856 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
14857
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).
14861
14862 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
14863
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.
14870
14871 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
14872
14873 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
14874 SImode shifts by two by performing a single bit SImode shift twice.
14875
14876 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
14877
14878 PR tree-optimization/109593
14879 * value-range.cc (frange::operator==): Handle NANs.
14880
14881 2023-04-23 liuhongt <hongtao.liu@intel.com>
14882
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.
14886
14887 2023-04-22 Andrew Pinski <apinski@marvell.com>
14888
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
14892 the big if/else.
14893
14894 2023-04-22 Andrew Pinski <apinski@marvell.com>
14895
14896 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
14897 Remove check on empty_block_p.
14898
14899 2023-04-22 Jakub Jelinek <jakub@redhat.com>
14900
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.
14904
14905 2023-04-22 Jakub Jelinek <jakub@redhat.com>
14906
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.
14910
14911 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
14912 Ondrej Kubanek <kubanek0ondrej@gmail.com>
14913
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.
14920
14921 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
14922
14923 PR tree-optimization/109546
14924 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
14925 not fold conditions with ADDR_EXPR early.
14926
14927 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14928
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
14931 for umax.
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.
14936
14937 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14938
14939 PR target/108779
14940 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
14941 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
14942 Define prototype.
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=.
14951
14952 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14953
14954 PR target/99195
14955 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
14956 (add_vec_concat_subst_be): Likewise.
14957 (vczle): Likewise.
14958 (vczbe): 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.
14972
14973 2023-04-21 Patrick Palka <ppalka@redhat.com>
14974
14975 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
14976 and type_p.
14977
14978 2023-04-21 Jan Hubicka <jh@suse.cz>
14979
14980 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
14981 commit.
14982
14983 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
14984
14985 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
14986 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
14987
14988 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14989
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.
14993
14994 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
14995
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.
15010
15011 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
15012 Ondrej Kubanek <kubanek0ondrej@gmail.com>
15013
15014 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
15015 latch.
15016
15017 2023-04-21 Richard Biener <rguenther@suse.de>
15018
15019 * is-a.h (safe_is_a): New.
15020
15021 2023-04-21 Richard Biener <rguenther@suse.de>
15022
15023 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
15024 (gphi_iterator::operator*): Likewise.
15025
15026 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
15027 Michal Jires <michal@jires.eu>
15028
15029 * ipa-inline.cc (class inline_badness): New class.
15030 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
15031 of sreal.
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.
15037
15038 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
15039
15040 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
15041
15042 2023-04-21 Richard Biener <rguenther@suse.de>
15043
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.
15047
15048 2023-04-21 Richard Biener <rguenther@suse.de>
15049
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.
15058
15059 2023-04-21 Richard Biener <rguenther@suse.de>
15060
15061 * cfganal.h (inverted_rev_post_order_compute): Rename
15062 from ...
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.
15070
15071 2023-04-21 Richard Biener <rguenther@suse.de>
15072
15073 * df.h (df_d::postorder_inverted): Change back to int *,
15074 clarify comments.
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
15078 graph. Adjust.
15079 (loop_inverted_post_order_compute): Adjust API.
15080 (df_analyze_loop): Adjust.
15081 (df_get_n_blocks): Likewise.
15082 (df_get_postorder): Likewise.
15083
15084 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15085
15086 PR target/108270
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.
15091
15092 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
15093
15094 PR target/109582
15095 * config/riscv/generic.md: Change standard names to insn names.
15096
15097 2023-04-21 Richard Biener <rguenther@suse.de>
15098
15099 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
15100 (compute_laterin): Use RPO.
15101 (compute_available): Likewise.
15102
15103 2023-04-21 Peng Fan <fanpeng@loongson.cn>
15104
15105 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
15106
15107 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15108
15109 PR target/109547
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.
15116
15117 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
15118
15119 * doc/extend.texi (Common Function Attributes): Remove duplicate
15120 word.
15121
15122 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
15123
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,
15127
15128 2023-04-20 Jakub Jelinek <jakub@redhat.com>
15129
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).
15134
15135 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
15136
15137 * lra-constraints.cc (match_reload): Exclude some hard regs for
15138 multi-reg inout reload pseudos used in asm in different mode.
15139
15140 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
15141
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.
15151
15152 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
15153
15154 PR target/78952
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.
15164 (*extzvqi): 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.
15185
15186 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
15187
15188 PR target/108248
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,
15193 min, max.
15194 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
15195 pcnt, signed and unsigned min/max.
15196
15197 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15198 kito-cheng <kito.cheng@sifive.com>
15199
15200 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
15201
15202 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15203 kito-cheng <kito.cheng@sifive.com>
15204
15205 PR target/109535
15206 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
15207 (pass_vsetvl::cleanup_insns): Fix bug.
15208
15209 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
15210
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".
15214
15215 2023-04-20 Jakub Jelinek <jakub@redhat.com>
15216 Jonathan Wakely <jwakely@redhat.com>
15217
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.
15233
15234 2023-04-20 Jakub Jelinek <jakub@redhat.com>
15235
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
15242 case.
15243 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
15244
15245 2023-04-20 Richard Biener <rguenther@suse.de>
15246
15247 * df-core.cc (rest_of_handle_df_initialize): Remove
15248 computation of df->postorder, df->postorder_inverted and
15249 df->n_blocks.
15250
15251 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15252
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):
15260 Ditto.
15261 * config/i386/i386.md (aes): New isa attribute.
15262 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
15263 (aesenclast): Ditto.
15264 (aesdec): 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.
15271
15272 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
15273
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.
15348
15349 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15350
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
15360 push.
15361
15362 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15363
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.
15382
15383 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15384
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
15398 VI12_AVX512VL.
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.
15404
15405 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15406
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.
15421
15422 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
15423
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
15427 clauses to macro.
15428
15429 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
15430
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,
15433 %ecx == 1).
15434
15435 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
15436
15437 * config/i386/sse.md: Modify insn vperm{i,f}
15438 and vshuf{i,f}.
15439
15440 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
15441
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.
15451
15452 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
15453
15454 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
15455 function.
15456
15457 2023-04-19 Andrew Pinski <apinski@marvell.com>
15458
15459 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
15460
15461 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15462
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.
15479 (vbool8_t): Ditto.
15480 (vbool4_t): Ditto.
15481 (vbool2_t): Ditto.
15482 (vbool1_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.
15551
15552 2023-04-19 Pan Li <pan2.li@intel.com>
15553
15554 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
15555 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
15556
15557 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
15558
15559 PR target/78904
15560 PR target/78952
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.
15571
15572 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15573
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.
15579
15580 2023-04-19 Richard Biener <rguenther@suse.de>
15581
15582 * tree-ssa-structalias.cc (do_ds_constraint): Use
15583 solve_add_graph_edge.
15584
15585 2023-04-19 Richard Biener <rguenther@suse.de>
15586
15587 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
15588 split out from ...
15589 (do_sd_constraint): ... here.
15590
15591 2023-04-19 Richard Biener <rguenther@suse.de>
15592
15593 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
15594 rejecting the merge when A contains only a non-local label.
15595
15596 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
15597
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.
15606
15607 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
15608
15609 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
15610
15611 2023-04-19 Richard Biener <rguenther@suse.de>
15612
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):
15620 Use auto_mpz.
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.
15626
15627 2023-04-19 Richard Biener <rguenther@suse.de>
15628
15629 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
15630 edges, remove edges from escaped after special-casing them.
15631
15632 2023-04-19 Richard Biener <rguenther@suse.de>
15633
15634 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
15635 special casing.
15636
15637 2023-04-19 Richard Biener <rguenther@suse.de>
15638
15639 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
15640 to the LHS varinfo solution member.
15641
15642 2023-04-19 Richard Biener <rguenther@suse.de>
15643
15644 * tree-ssa-structalias.cc (topo_visit): Look at the real
15645 destination of edges.
15646
15647 2023-04-19 Richard Biener <rguenther@suse.de>
15648
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.
15652
15653 2023-04-19 Xi Ruoyao <xry111@xry111.site>
15654
15655 PR target/109465
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.
15677
15678 2023-04-19 Xi Ruoyao <xry111@xry111.site>
15679
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.
15683
15684 2023-04-19 Richard Biener <rguenther@suse.de>
15685
15686 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
15687 no epilogue condition.
15688
15689 2023-04-19 Richard Biener <rguenther@suse.de>
15690
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
15695 as load.
15696
15697 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15698
15699 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
15700 definition.
15701 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
15702
15703 2023-04-19 Jakub Jelinek <jakub@redhat.com>
15704
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.
15711
15712 2023-04-19 Jakub Jelinek <jakub@redhat.com>
15713
15714 PR target/109040
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.
15718
15719 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
15720
15721 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
15722 New pattern.
15723
15724 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15725
15726 PR target/108840
15727 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
15728 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
15729
15730 2023-04-19 Richard Biener <rguenther@suse.de>
15731
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.
15737
15738 2023-04-19 Richard Biener <rguenther@suse.de>
15739
15740 PR rtl-optimization/109237
15741 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
15742
15743 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
15744
15745 * doc/install.texi (enable-decimal-float): Add AArch64.
15746
15747 2023-04-19 liuhongt <hongtao.liu@intel.com>
15748
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.
15753
15754 2023-04-18 Jason Merrill <jason@redhat.com>
15755
15756 * doc/invoke.texi: Remove stray @gol.
15757
15758 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15759
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.
15763
15764 2023-04-18 Mark Harmstone <mark@harmstone.com>
15765
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.
15770
15771 2023-04-18 Andrew Pinski <apinski@marvell.com>
15772
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.
15777
15778 2023-04-18 Sam James <sam@gentoo.org>
15779
15780 * system.h: Drop unused INCLUDE_PTHREAD_H.
15781
15782 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
15783
15784 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
15785 condition.
15786
15787 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
15788
15789 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
15790 (bswapdi2, bswapsi2): Similarly.
15791
15792 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
15793
15794 PR target/94908
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.
15804
15805 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15806
15807 * value-range.cc (gt_ggc_mx): New.
15808 (gt_pch_nx): New.
15809 * value-range.h (class vrange): Add GTY marker.
15810 (class frange): Same.
15811 (gt_ggc_mx): Remove.
15812 (gt_pch_nx): Remove.
15813
15814 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
15815
15816 * lra-constraints.cc (constraint_unique): New.
15817 (process_address_1): Apply constraint_unique test.
15818 * recog.cc (constrain_operands): Allow relaxed memory
15819 constaints.
15820
15821 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
15822
15823 * doc/extend.texi (Target Builtins): Add RISC-V Vector
15824 Intrinsics.
15825 (RISC-V Vector Intrinsics): Document GCC implemented which
15826 version of RISC-V vector intrinsics and its reference.
15827
15828 2023-04-18 Richard Biener <rguenther@suse.de>
15829
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):
15839 Likewise.
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.
15846
15847 2023-04-18 Richard Biener <rguenther@suse.de>
15848
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.
15856
15857 2023-04-18 Andrew Pinski <apinski@marvell.com>
15858
15859 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
15860 the expression that is being tried when TDF_FOLDING
15861 is true.
15862 (phiopt_worker::match_simplify_replacement): Dump
15863 the sequence which was created by gimple_simplify_phiopt
15864 when TDF_FOLDING is true.
15865
15866 2023-04-18 Andrew Pinski <apinski@marvell.com>
15867
15868 * tree-ssa-phiopt.cc (match_simplify_replacement):
15869 Simplify code that does the movement slightly.
15870
15871 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15872
15873 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
15874 define_expand.
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.
15879
15880 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15881
15882 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
15883 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
15884 declaration.
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.
15890
15891 2023-04-18 Richard Biener <rguenther@suse.de>
15892
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;
15898
15899 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15900
15901 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
15902 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
15903
15904 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15905
15906 * value-range.cc (frange::operator==): Adjust for NAN.
15907 (range_tests_nan): Remove some NAN tests.
15908
15909 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15910
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.
15915
15916 2023-04-18 Richard Biener <rguenther@suse.de>
15917
15918 PR tree-optimization/109539
15919 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
15920 Re-implement pointer relatedness for PHIs.
15921
15922 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
15923
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.
15936
15937 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15938
15939 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
15940 if the argument matches that.
15941
15942 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15943
15944 * config/aarch64/atomics.md
15945 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
15946 Use SD_HSDI for destination mode iterator.
15947
15948 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
15949
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.
15953
15954 2023-04-18 Jakub Jelinek <jakub@redhat.com>
15955
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.
15960
15961 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15962
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.
15971
15972 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
15973
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.
15978
15979 2023-04-18 Xi Ruoyao <xry111@xry111.site>
15980
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
15991 constraint.
15992 * config/loongarch/predicates.md (const_dual_imm12_operand): New
15993 predicate.
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.
16007
16008 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
16009
16010 * value-range.h (Value_Range::Value_Range): New.
16011 (Value_Range::contains_p): New.
16012
16013 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
16014
16015 * value-range.h (class vrange): Make m_discriminator const.
16016 (class irange): Make m_max_ranges const. Adjust constructors
16017 accordingly.
16018 (class unsupported_range): Construct vrange appropriately.
16019 (class frange): Same.
16020
16021 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
16022
16023 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
16024 definition.
16025
16026 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
16027
16028 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
16029
16030 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
16031
16032 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
16033 readable.
16034 (riscv_expand_epilogue): Likewise.
16035
16036 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
16037
16038 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
16039 stack allocation.
16040 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
16041
16042 2023-04-17 Andrew Pinski <apinski@marvell.com>
16043
16044 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
16045 prototype.
16046
16047 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
16048
16049 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
16050 global ranges.
16051
16052 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
16053
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.
16059
16060 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
16061
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.
16068
16069 2023-04-17 Martin Jambor <mjambor@suse.cz>
16070
16071 PR ipa/107769
16072 PR ipa/109318
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
16089 find_reference.
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
16097 streamed.
16098 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
16099 it in searching.
16100
16101 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
16102 Di Zhao <di.zhao@amperecomputing.com>
16103
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.
16108
16109 2023-04-17 Richard Biener <rguenther@suse.de>
16110
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.
16117
16118 2023-04-16 Jeff Law <jlaw@ventanamicro>
16119
16120 PR target/109508
16121 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
16122 TARGET_SFB_ALU, force the true arm into a register.
16123
16124 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
16125
16126 PR target/104989
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
16129 size is zero.
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.
16133
16134 2023-04-15 Jakub Jelinek <jakub@redhat.com>
16135
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.
16139
16140 2023-04-15 Jason Merrill <jason@redhat.com>
16141
16142 PR c++/109514
16143 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
16144 Overhaul lhs_ref.ref analysis.
16145
16146 2023-04-14 Richard Biener <rguenther@suse.de>
16147
16148 PR tree-optimization/109502
16149 * tree-vect-stmts.cc (vectorizable_assignment): Fix
16150 check for conversion between mask and non-mask types.
16151
16152 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
16153 Jakub Jelinek <jakub@redhat.com>
16154
16155 PR target/108947
16156 PR target/109040
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.
16162
16163 2023-04-14 Jakub Jelinek <jakub@redhat.com>
16164
16165 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
16166 of GEN_INT.
16167
16168 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
16169
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.
16176
16177 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
16178
16179 PR target/108910
16180 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
16181 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
16182
16183 2023-04-13 Richard Biener <rguenther@suse.de>
16184
16185 PR tree-optimization/109491
16186 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
16187 NULL operands test.
16188
16189 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16190
16191 PR target/109479
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.
16218
16219 2023-04-12 Jakub Jelinek <jakub@redhat.com>
16220
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
16224 function.
16225
16226 2023-04-12 Jakub Jelinek <jakub@redhat.com>
16227
16228 PR target/109458
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.
16233
16234 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
16235
16236 * config/i386/x-mingw32-utf8: Remove extrataneous $@
16237
16238 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
16239
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.
16243
16244 2023-04-12 Richard Biener <rguenther@suse.de>
16245
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.
16250
16251 2023-04-12 Richard Biener <rguenther@suse.de>
16252
16253 PR tree-optimization/109469
16254 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
16255 a returns-twice call.
16256
16257 2023-04-12 Richard Biener <rguenther@suse.de>
16258
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.
16263
16264 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
16265
16266 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
16267 predicate to avoid splitting arith constants.
16268
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>
16273
16274 PR target/109104
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.
16281
16282 2023-04-11 Martin Liska <mliska@suse.cz>
16283
16284 PR driver/108241
16285 * opts.cc (finish_options): Drop also
16286 x_flag_var_tracking_assignments.
16287
16288 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
16289
16290 PR tree-optimization/108888
16291 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
16292
16293 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
16294
16295 PR target/108812
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.
16330
16331 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
16332
16333 PR target/70243
16334 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
16335 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
16336
16337 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
16338
16339 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
16340
16341 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
16342
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
16352 amx-complex.
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
16356 __AMX_COMPLEX__.
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.
16366
16367 2023-04-08 Jakub Jelinek <jakub@redhat.com>
16368
16369 PR tree-optimization/109392
16370 * tree-vect-generic.cc (tree_vec_extract): Handle failure
16371 of maybe_push_res_to_seq better.
16372
16373 2023-04-08 Jakub Jelinek <jakub@redhat.com>
16374
16375 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
16376 poly-int-types.h.
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
16380 insn-modes.h.
16381
16382 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
16383
16384 PR target/107674
16385 * config/arm/arm.cc (arm_effective_regno): New function.
16386 (mve_vector_mem_operand): Use it.
16387
16388 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
16389
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.
16393
16394 2023-04-06 Andrew Pinski <apinski@marvell.com>
16395
16396 PR tree-optimization/109427
16397 * params.opt (-param=vect-induction-float=):
16398 Fix option attribute typo for IntegerRange.
16399
16400 2023-04-05 Jeff Law <jlaw@ventanamicro>
16401
16402 PR target/108892
16403 * combine.cc (combine_instructions): Force re-recognition when
16404 after restoring the body of an insn to its original form.
16405
16406 2023-04-05 Martin Jambor <mjambor@suse.cz>
16407
16408 PR ipa/108959
16409 * ipa-sra.cc (zap_useless_ipcp_results): New function.
16410 (process_isra_node_results): Call it.
16411
16412 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16413
16414 * config/riscv/vector.md: Fix incorrect operand order.
16415
16416 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16417
16418 * config/riscv/riscv-vsetvl.cc
16419 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
16420 demand fusion.
16421
16422 2023-04-05 Li Xu <xuli1@eswincomputing.com>
16423
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.
16427
16428 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
16429
16430 * doc/md.texi (Including Patterns): Fix page break.
16431
16432 2023-04-04 Jakub Jelinek <jakub@redhat.com>
16433
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
16440 known_isnan.
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.
16447
16448 2023-04-04 Marek Polacek <polacek@redhat.com>
16449
16450 PR sanitizer/109107
16451 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
16452 when associating.
16453 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
16454
16455 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
16456
16457 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
16458 (mve_vcreateq_f<mode>): Swap operands.
16459
16460 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
16461
16462 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
16463
16464 2023-04-04 Jakub Jelinek <jakub@redhat.com>
16465
16466 PR target/109384
16467 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
16468 Reword diagnostics about zfinx conflict with f, formatting fixes.
16469
16470 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
16471
16472 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
16473
16474 2023-04-04 Richard Biener <rguenther@suse.de>
16475
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.
16480
16481 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
16482
16483 PR target/108807
16484 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
16485 function for permutation control vector by considering big endianness.
16486
16487 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
16488
16489 PR target/108699
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.
16498
16499 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
16500 Sandra Loosemore <sandra@codesourcery.com>
16501
16502 * doc/md.texi (Insn Splitting): Tweak wording for readability.
16503
16504 2023-04-03 Martin Jambor <mjambor@suse.cz>
16505
16506 PR ipa/109303
16507 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
16508 offset + size will be representable in unsigned int.
16509
16510 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
16511
16512 * configure.ac (ZSTD_LIB): Move before zstd.h check.
16513 Unset gcc_cv_header_zstd_h without libzstd.
16514 * configure: Regenerate.
16515
16516 2023-04-03 Martin Liska <mliska@suse.cz>
16517
16518 * doc/invoke.texi: Document new param.
16519
16520 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
16521
16522 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
16523 new check_effective_target function.
16524
16525 2023-04-03 Li Xu <xuli1@eswincomputing.com>
16526
16527 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
16528 (vfloat32m8_t): Likewise
16529
16530 2023-04-03 liuhongt <hongtao.liu@intel.com>
16531
16532 * doc/md.texi: Document signbitm2.
16533
16534 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16535 kito-cheng <kito.cheng@sifive.com>
16536
16537 * config/riscv/vector.md: Fix RA constraint.
16538
16539 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16540
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.
16544
16545 2023-04-01 Jakub Jelinek <jakub@redhat.com>
16546
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].
16551
16552 2023-04-01 Jakub Jelinek <jakub@redhat.com>
16553
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
16564 fop_ltgt.
16565
16566 2023-04-01 Jakub Jelinek <jakub@redhat.com>
16567
16568 PR target/109254
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
16574 results at all.
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.
16582
16583 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
16584
16585 * lra-constraints.cc: (combine_reload_insn): New function.
16586
16587 2023-03-31 Jakub Jelinek <jakub@redhat.com>
16588
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.
16598
16599 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
16600 Andrew Pinski <pinskia@gmail.com>
16601
16602 PR target/109328
16603 * config/riscv/t-riscv: Add missing dependencies.
16604
16605 2023-03-31 liuhongt <hongtao.liu@intel.com>
16606
16607 * config/i386/i386.cc (inline_memory_move_cost): Return 100
16608 for MASK_REGS when MODE_SIZE > 8.
16609
16610 2023-03-31 liuhongt <hongtao.liu@intel.com>
16611
16612 PR target/85048
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>):
16619 Renamed to ..
16620 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
16621 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
16622 Renamed to ..
16623 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
16624 .. this.
16625 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
16626 Renamed to ..
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>):
16633 Renamed to ..
16634 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
16635 .. this.
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>):
16651 Renamed to ..
16652 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
16653 .. this.
16654 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
16655 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
16656 .. this.
16657
16658 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
16659
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.
16664
16665 2023-03-30 Jason Merrill <jason@redhat.com>
16666
16667 PR c++/107897
16668 PR c++/108887
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.
16672
16673 2023-03-30 Richard Biener <rguenther@suse.de>
16674
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.
16680
16681 2023-03-30 Richard Biener <rguenther@suse.de>
16682
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.
16687
16688 2023-03-30 liuhongt <hongtao.liu@intel.com>
16689
16690 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
16691 vpblendd instead of vpblendw for V4SI under avx2.
16692
16693 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
16694
16695 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
16696 for many quick operands, for register-sized modes.
16697
16698 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
16699
16700 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
16701 New check.
16702
16703 2023-03-29 Martin Liska <mliska@suse.cz>
16704
16705 PR bootstrap/109310
16706 * configure.ac: Emit a warning for deprecated option
16707 --enable-link-mutex.
16708 * configure: Regenerate.
16709
16710 2023-03-29 Richard Biener <rguenther@suse.de>
16711
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.
16715
16716 2023-03-29 Richard Biener <rguenther@suse.de>
16717
16718 PR tree-optimization/109327
16719 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
16720 already removed stmts when draining to_remove.
16721
16722 2023-03-29 Richard Biener <rguenther@suse.de>
16723
16724 PR ipa/106124
16725 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
16726 so we can re-create the DIE for the type if required.
16727
16728 2023-03-29 Jakub Jelinek <jakub@redhat.com>
16729 Richard Biener <rguenther@suse.de>
16730
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.
16736
16737 2023-03-29 Richard Biener <rguenther@suse.de>
16738
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.
16743
16744 2023-03-28 David Malcolm <dmalcolm@redhat.com>
16745
16746 PR c/107002
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.
16752
16753 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
16754
16755 PR target/109312
16756 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
16757 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
16758 minor refactor.
16759
16760 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
16761
16762 PR rtl-optimization/109187
16763 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
16764 subtraction in three-way comparison.
16765
16766 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
16767
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.
16778
16779 2023-03-28 Richard Biener <rguenther@suse.de>
16780
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.
16785
16786 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
16787
16788 * config/i386/x-mingw32-utf8: update comments.
16789
16790 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
16791
16792 PR target/109072
16793 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
16794 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
16795 variable.
16796 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
16797 New function.
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
16804 variable.
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
16807 zero cost.
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.
16811
16812 2023-03-28 Richard Biener <rguenther@suse.de>
16813
16814 PR bootstrap/84402
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.
16824
16825 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16826 Jonathan Wakely <jwakely@redhat.com>
16827
16828 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
16829 Use subcommand rather than sub-command in function comments.
16830
16831 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16832
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
16837 here.
16838 * range-op-float.cc (range_operator_float::fold_range): Call
16839 flush_denormals_to_zero.
16840
16841 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16842
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.
16846
16847 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16848
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.
16851
16852 2023-03-28 Jakub Jelinek <jakub@redhat.com>
16853
16854 PR target/109276
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.
16858
16859 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
16860
16861 PR target/109140
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.
16868
16869 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
16870
16871 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
16872 top-level sections.
16873
16874 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
16875
16876 * config.host: Pull in i386/x-mingw32-utf8 Makefile
16877 fragment and reference utf8rc-mingw32.o explicitly
16878 for mingw hosts.
16879 * config/i386/sym-mingw32.cc: prevent name mangling of
16880 stub symbol.
16881 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
16882 depend on manifest file explicitly.
16883
16884 2023-03-28 Richard Biener <rguenther@suse.de>
16885
16886 Revert:
16887 2023-03-27 Richard Biener <rguenther@suse.de>
16888
16889 PR rtl-optimization/109237
16890 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
16891
16892 2023-03-28 Richard Biener <rguenther@suse.de>
16893
16894 * common.opt (gdwarf): Remove Negative(gdwarf-).
16895
16896 2023-03-28 Richard Biener <rguenther@suse.de>
16897
16898 * common.opt (gdwarf): Add RejectNegative.
16899 (gdwarf-): Likewise.
16900 (ggdb): Likewise.
16901 (gvms): Likewise.
16902
16903 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16904
16905 * config/cris/constraints.md ("T"): Correct to
16906 define_memory_constraint.
16907
16908 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16909
16910 * config/cris/cris.md (BW2): New mode-iterator.
16911 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
16912 peephole2s.
16913
16914 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16915
16916 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
16917 for possible eliminable compares.
16918
16919 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
16920
16921 * config/cris/constraints.md ("R"): Remove unused constraint.
16922
16923 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
16924
16925 PR gcov-profile/109297
16926 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
16927 (merge_stream_usage): Likewise.
16928 (overlap_usage): Likewise.
16929
16930 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
16931
16932 PR target/109296
16933 * config/riscv/thead.md: Add missing mode specifiers.
16934
16935 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
16936 Jiangning Liu <jiangning.liu@amperecomputing.com>
16937 Manolis Tsamis <manolis.tsamis@vrull.eu>
16938
16939 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
16940
16941 2023-03-27 Richard Biener <rguenther@suse.de>
16942
16943 PR rtl-optimization/109237
16944 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
16945
16946 2023-03-27 Richard Biener <rguenther@suse.de>
16947
16948 PR lto/109263
16949 * lto-wrapper.cc (run_gcc): Parse alternate debug options
16950 as well, they always enable debug.
16951
16952 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
16953
16954 PR target/109167
16955 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
16956 from ...
16957 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
16958
16959 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
16960
16961 PR target/109082
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.
16968
16969 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
16970
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.
16978
16979 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
16980
16981 PR target/106282
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.
16986
16987 2023-03-26 Jakub Jelinek <jakub@redhat.com>
16988
16989 PR tree-optimization/109230
16990 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
16991
16992 2023-03-26 Jakub Jelinek <jakub@redhat.com>
16993
16994 PR ipa/105685
16995 * predict.cc (compute_function_frequency): Don't call
16996 warn_function_cold if function already has cold attribute.
16997
16998 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
16999
17000 * doc/install.texi: Remove anachronistic note
17001 related to languages built and separate source tarballs.
17002
17003 2023-03-25 David Malcolm <dmalcolm@redhat.com>
17004
17005 PR analyzer/109098
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.
17017
17018 2023-03-24 David Malcolm <dmalcolm@redhat.com>
17019
17020 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
17021 debugging options.
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.
17026
17027 2023-03-24 David Malcolm <dmalcolm@redhat.com>
17028
17029 PR other/109163
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.
17037
17038 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
17039
17040 PR tree-optimization/109238
17041 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
17042 predecessors which this block dominates.
17043
17044 2023-03-24 Richard Biener <rguenther@suse.de>
17045
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.
17050
17051 2023-03-24 Jakub Jelinek <jakub@redhat.com>
17052
17053 PR middle-end/109258
17054 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
17055 if target == const0_rtx.
17056
17057 2023-03-24 Alexandre Oliva <oliva@adacore.com>
17058
17059 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
17060 Document options and effective targets.
17061
17062 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
17063
17064 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
17065 optional.
17066
17067 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
17068
17069 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
17070 non-earlyclobber alternative.
17071
17072 2023-03-23 Andrew Pinski <apinski@marvell.com>
17073
17074 PR c/84900
17075 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
17076 as a lvalue.
17077
17078 2023-03-23 Richard Biener <rguenther@suse.de>
17079
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.
17084
17085 2023-03-23 Richard Biener <rguenther@suse.de>
17086
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.
17091
17092 2023-03-23 Jakub Jelinek <jakub@redhat.com>
17093
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):
17112 Likewise.
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):
17118 Likewise.
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):
17128 Likewise.
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.
17158
17159 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
17160
17161 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
17162 (move_callee_saved_registers): Detect the bug condition early.
17163
17164 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
17165
17166 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
17167 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
17168 (V_2REG_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.
17174
17175 2023-03-23 Jakub Jelinek <jakub@redhat.com>
17176
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
17181 individually.
17182
17183 2023-03-23 Pan Li <pan2.li@intel.com>
17184 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17185
17186 PR target/108654
17187 PR target/108185
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.
17192
17193 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
17194
17195 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
17196
17197 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17198
17199 PR target/109244
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.
17213
17214 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17215
17216 PR target/109228
17217 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
17218 __riscv_vlenb support.
17219 (BASE): Ditto.
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.
17223 (SHAPE): Ditto.
17224 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17225 * config/riscv/riscv-vector-builtins.cc: Ditto.
17226
17227 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17228 kito-cheng <kito.cheng@sifive.com>
17229
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.
17240
17241 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17242 kito-cheng <kito.cheng@sifive.com>
17243
17244 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
17245 * config/riscv/vector-iterators.md (nmsac): Ditto.
17246 (nmsub): Ditto.
17247 (msac): Ditto.
17248 (msub): Ditto.
17249 (nmadd): Ditto.
17250 (nmacc): 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.
17308
17309 2023-03-23 liuhongt <hongtao.liu@intel.com>
17310
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):
17319 Removed.
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.
17325
17326 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
17327
17328 * lra.cc (lra): Do not repeat inheritance and live range splitting
17329 when asm error is found.
17330
17331 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
17332
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.
17346
17347 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
17348
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.
17353
17354 2023-03-22 Martin Liska <mliska@suse.cz>
17355
17356 * configure: Regenerate.
17357
17358 2023-03-21 Joseph Myers <joseph@codesourcery.com>
17359
17360 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
17361 to variants.
17362
17363 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
17364
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.
17370
17371 2023-03-21 Richard Biener <rguenther@suse.de>
17372
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.
17379
17380 2023-03-21 Jakub Jelinek <jakub@redhat.com>
17381
17382 PR tree-optimization/109215
17383 * tree.h (enum special_array_member): Adjust comments for int_0
17384 and trail_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.
17389
17390 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17391
17392 * configure.ac: Add check for the Texinfo 6.8
17393 CONTENTS_OUTPUT_LOCATION customization variable and set it if
17394 supported.
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.
17400
17401 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17402
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
17406 its attribute
17407
17408 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17409
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
17415 be gone.
17416
17417 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17418
17419 * doc/include/texinfo.tex: Update to 2023-01-17.19.
17420
17421 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17422
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.
17427
17428 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17429
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
17437 description text.
17438
17439 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
17440
17441 * doc/gcc.texi: Add the Indices appendix, to make texinfo
17442 generate nice indices overview page.
17443
17444 2023-03-21 Richard Biener <rguenther@suse.de>
17445
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.
17450
17451 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
17452
17453 PR target/109067
17454 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
17455 (init_float128_ieee): Delete code to switch complex multiply and divide
17456 for long double.
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.
17461
17462 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
17463
17464 PR target/109178
17465 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
17466
17467 2023-03-19 Jonny Grant <jg@jguk.org>
17468
17469 * doc/extend.texi (Common Function Attributes) <nonnull>:
17470 Correct typo.
17471
17472 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
17473
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.
17477
17478 2023-03-17 Jakub Jelinek <jakub@redhat.com>
17479
17480 PR target/105554
17481 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
17482 to false.
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
17488 after it.
17489 (tree_function_versioning): Formatting fix.
17490
17491 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
17492
17493 * lra-constraints.cc: Include hooks.h.
17494 (combine_reload_insn): New function.
17495 (lra_constraints): Call it.
17496
17497 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17498 kito-cheng <kito.cheng@sifive.com>
17499
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.
17511
17512 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17513
17514 PR target/109092
17515 * config/riscv/riscv.md: Fix subreg bug.
17516
17517 2023-03-17 Jakub Jelinek <jakub@redhat.com>
17518
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.
17527
17528 2023-03-17 Jakub Jelinek <jakub@redhat.com>
17529
17530 PR plugins/108634
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
17535 changes.
17536
17537 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
17538
17539 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
17540 issues. Add more line breaks to example so it doesn't overflow
17541 the margins.
17542
17543 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
17544
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
17548 for consistency.
17549 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
17550 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
17551 @gol.
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.
17562
17563 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
17564
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.
17568
17569 2023-03-16 Martin Liska <mliska@suse.cz>
17570
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.
17575
17576 2023-03-16 Richard Biener <rguenther@suse.de>
17577
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.
17582
17583 2023-03-16 Richard Biener <rguenther@suse.de>
17584
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
17588 out from ...
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
17593 to PHIs.
17594 (pass_waccess::check_pointer_uses): Process all PHIs.
17595
17596 2023-03-15 David Malcolm <dmalcolm@redhat.com>
17597
17598 PR analyzer/109097
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
17607 DK_ICE_NOBT.
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"
17611 array to...
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
17616 use it.
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
17620 "ice_handler_cb".
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.
17624
17625 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
17626
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.
17633
17634 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
17635
17636 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
17637
17638 2023-03-15 Richard Biener <rguenther@suse.de>
17639
17640 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
17641 Do not diagnose clobbers.
17642
17643 2023-03-15 Richard Biener <rguenther@suse.de>
17644
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.
17648
17649 2023-03-15 Xi Ruoyao <xry111@xry111.site>
17650
17651 PR other/109086
17652 * builtins.cc (inline_string_cmp): Force the character
17653 difference into "result" pseudo-register, instead of reassign
17654 the pseudo-register.
17655
17656 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17657
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
17661 prototype.
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):
17672 New insn.
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.
17677
17678 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17679
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
17683 "th_r_fmv".
17684 * config/riscv/riscv.cc (riscv_split_doubleword_move):
17685 Add split code for XTheadFmv.
17686 (riscv_secondary_memory_needed): XTheadFmv does not need
17687 secondary memory.
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.
17694
17695 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17696
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.
17709
17710 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17711
17712 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
17713 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
17714 Add prototype.
17715 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
17716 XTheadCondMov.
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.
17723
17724 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17725
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
17746 extraction.
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.
17754
17755 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17756
17757 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
17758 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
17759
17760 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17761
17762 * config/riscv/riscv.md: Include thead.md
17763 * config/riscv/thead.md: New file.
17764
17765 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17766
17767 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
17768
17769 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
17770
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.
17797
17798 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
17799
17800 PR target/109117
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.
17804
17805 2023-03-14 Jakub Jelinek <jakub@redhat.com>
17806
17807 PR target/109109
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.
17810
17811 2023-03-14 Martin Jambor <mjambor@suse.cz>
17812
17813 PR ipa/107925
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
17816 it should.
17817
17818 2023-03-14 Martin Jambor <mjambor@suse.cz>
17819
17820 PR ipa/107925
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.
17824
17825 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
17826
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.
17831
17832 2023-03-14 Sam James <sam@gentoo.org>
17833
17834 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
17835 including <sstream> earlier.
17836 * system.h: Add INCLUDE_SSTREAM.
17837
17838 2023-03-14 Richard Biener <rguenther@suse.de>
17839
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.
17843
17844 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
17845
17846 PR rtl-optimization/107762
17847 * expr.cc (emit_group_store): Revert latest change.
17848
17849 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
17850
17851 PR tree-optimization/109005
17852 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
17853 aggregate type check.
17854
17855 2023-03-14 Jakub Jelinek <jakub@redhat.com>
17856
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.
17860
17861 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
17862
17863 PR tree-optimization/106896
17864 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
17865 implementatoin with probability_in; avoid some asserts.
17866
17867 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
17868
17869 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
17870
17871 2023-03-13 Sean Bright <sean@seanbright.com>
17872
17873 * doc/invoke.texi (Warning Options): Remove errant 'See'
17874 before @xref.
17875
17876 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17877
17878 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
17879 REG_OK_FOR_BASE_P): Remove.
17880
17881 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17882
17883 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
17884 (=vd,vd,vr,vr): Ditto.
17885 * config/riscv/vector.md: Ditto.
17886
17887 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17888
17889 * config/riscv/riscv-vector-builtins.cc
17890 (function_expander::use_compare_insn): Add operand predicate check.
17891
17892 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17893
17894 * config/riscv/vector.md: Fine tune RA constraints.
17895
17896 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
17897
17898 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
17899 hsaco assemble/link.
17900
17901 2023-03-13 Richard Biener <rguenther@suse.de>
17902
17903 PR tree-optimization/109046
17904 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
17905 piecewise complex loads.
17906
17907 2023-03-12 Jakub Jelinek <jakub@redhat.com>
17908
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.
17925
17926 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
17927
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.
17931
17932 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17933
17934 PR target/108583
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.
17944
17945 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17946
17947 PR target/108583
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.
17954
17955 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17956 Richard Sandiford <richard.sandiford@arm.com>
17957
17958 PR target/108583
17959 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
17960 single use.
17961
17962 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17963 Andrew MacLeod <amacleod@redhat.com>
17964
17965 PR target/108583
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):
17968 Use it.
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
17979
17980 2023-03-12 Tamar Christina <tamar.christina@arm.com>
17981
17982 PR target/108583
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.
17997
17998 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
17999
18000 * doc/install.texi2html: Fix issue number typo in comment.
18001
18002 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
18003
18004 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
18005 bool.
18006
18007 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
18008
18009 * doc/invoke.texi (Optimize Options): Add markup to
18010 description of asan-kernel-mem-intrinsic-prefix, and clarify
18011 wording slightly.
18012
18013 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
18014
18015 * doc/extend.texi (Named Address Spaces): Drop a redundant link
18016 to AVR-LibC.
18017
18018 2023-03-11 Jeff Law <jlaw@ventanamicro>
18019
18020 PR web/88860
18021 * doc/extend.texi: Clarify Attribute Syntax a bit.
18022
18023 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
18024
18025 * doc/install.texi (Prerequisites): Suggest using newer versions
18026 of Texinfo.
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).
18031
18032 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18033
18034 PR target/107703
18035 * optabs.cc (expand_fix): For conversions from BFmode to integral,
18036 use shifts to convert it to SFmode first and then convert SFmode
18037 to integral.
18038
18039 2023-03-10 Andrew Pinski <apinski@marvell.com>
18040
18041 * config/aarch64/aarch64.md: Add a new define_split
18042 to help combine.
18043
18044 2023-03-10 Richard Biener <rguenther@suse.de>
18045
18046 * tree-ssa-structalias.cc (solve_graph): Immediately
18047 iterate self-cycles.
18048
18049 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18050
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.
18055
18056 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18057
18058 PR target/107998
18059 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
18060 $tmake_file.
18061 * config/i386/t-cygwin-w64: Remove.
18062
18063 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18064
18065 PR plugins/108634
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
18074 tree_code_length.
18075 * tree.cc (tree_code_type, tree_code_length): Remove.
18076
18077 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18078
18079 PR other/108464
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
18087 member.
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.
18099
18100 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18101
18102 PR c/108079
18103 * cgraphunit.cc (check_global_declaration): Don't warn for unused
18104 variables which have OPT_Wunused_variable warning suppressed.
18105
18106 2023-03-10 Jakub Jelinek <jakub@redhat.com>
18107
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
18114 the widened range.
18115
18116 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18117
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.
18123 (BASE): Ditto.
18124 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18125 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
18126 (vleff): Ditto.
18127 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
18128 (struct fault_load_def): Ditto.
18129 (SHAPE): 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.
18173
18174 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18175
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.
18180
18181 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18182
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.
18201
18202 2023-03-10 Michael Collison <collison@rivosinc.com>
18203
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.
18207
18208 2023-03-09 Tamar Christina <tamar.christina@arm.com>
18209
18210 * passes.cc (emergency_dump_function): Finish graph generation.
18211
18212 2023-03-09 Tamar Christina <tamar.christina@arm.com>
18213
18214 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
18215 and bottom bit only.
18216
18217 2023-03-09 Andrew Pinski <apinski@marvell.com>
18218
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.
18223
18224 2023-03-09 Jason Merrill <jason@redhat.com>
18225
18226 * doc/extend.texi: Comment out __is_deducible docs.
18227
18228 2023-03-09 Jason Merrill <jason@redhat.com>
18229
18230 PR c++/105841
18231 * doc/extend.texi (Type Traits):: Document __is_deducible.
18232
18233 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
18234
18235 PR driver/108865
18236 * config.host: add object for x86_64-*-mingw*.
18237 * config/i386/sym-mingw32.cc: dummy file to attach
18238 symbol.
18239 * config/i386/utf8-mingw32.rc: windres resource file.
18240 * config/i386/winnt-utf8.manifest: XML manifest to
18241 enable UTF-8.
18242 * config/i386/x-mingw32: reference to x-mingw32-utf8.
18243 * config/i386/x-mingw32-utf8: Makefile fragment to
18244 embed UTF-8 manifest.
18245
18246 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
18247
18248 * lra-constraints.cc (process_alt_operands): Use operand modes for
18249 clobbered regs instead of the biggest access mode.
18250
18251 2023-03-09 Richard Biener <rguenther@suse.de>
18252
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.
18257
18258 2023-03-09 Jakub Jelinek <jakub@redhat.com>
18259 Richard Biener <rguenther@suse.de>
18260
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.
18266
18267 2023-03-07 Jonathan Grant <jg@jguk.org>
18268
18269 PR sanitizer/81649
18270 * doc/invoke.texi (Instrumentation Options): Clarify
18271 LeakSanitizer behavior.
18272
18273 2023-03-07 Benson Muite <benson_muite@emailplus.org>
18274
18275 * doc/install.texi (Prerequisites): Add link to gmplib.org.
18276
18277 2023-03-07 Pan Li <pan2.li@intel.com>
18278 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18279
18280 PR target/108185
18281 PR target/108654
18282 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
18283 modes.
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.
18289
18290 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
18291
18292 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
18293
18294 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
18295
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
18302 saved in SGPRs.
18303
18304 2023-03-06 Richard Biener <rguenther@suse.de>
18305
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.
18310
18311 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
18312
18313 PR target/108429
18314 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
18315 generic.
18316 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
18317 (X86_TUNE_USE_SCATTER): Likewise.
18318
18319 2023-03-06 Xi Ruoyao <xry111@xry111.site>
18320
18321 PR target/109000
18322 * config/loongarch/loongarch.h (FP_RETURN): Use
18323 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
18324 (UNITS_PER_FP_ARG): Likewise.
18325
18326 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18327
18328 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
18329 (pass_vsetvl::backward_demand_fusion): Ditto.
18330
18331 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18332 SiYu Wu <siyu@isrc.iscas.ac.cn>
18333
18334 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
18335 instructions.
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.
18342
18343 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18344 SiYu Wu <siyu@isrc.iscas.ac.cn>
18345
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.
18364
18365 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18366 SiYu Wu <siyu@isrc.iscas.ac.cn>
18367
18368 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
18369 (DsA): New.
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.
18384
18385 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18386 SiYu Wu <siyu@isrc.iscas.ac.cn>
18387
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
18392 description file.
18393 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
18394 extension's built-in function file.
18395
18396 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
18397 SiYu Wu <siyu@isrc.iscas.ac.cn>
18398
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.
18406 (3): New.
18407
18408 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
18409
18410 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
18411 use exact_log2().
18412
18413 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18414 kito-cheng <kito.cheng@sifive.com>
18415
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.
18427 (BASE): Ditto.
18428 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18429 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
18430 (vluxei16): Ditto.
18431 (vluxei32): Ditto.
18432 (vluxei64): Ditto.
18433 (vloxei8): Ditto.
18434 (vloxei16): Ditto.
18435 (vloxei32): Ditto.
18436 (vloxei64): Ditto.
18437 (vsuxei8): Ditto.
18438 (vsuxei16): Ditto.
18439 (vsuxei32): Ditto.
18440 (vsuxei64): Ditto.
18441 (vsoxei8): Ditto.
18442 (vsoxei16): Ditto.
18443 (vsoxei32): Ditto.
18444 (vsoxei64): Ditto.
18445 (vundefined): Add new intrinsic.
18446 (vreinterpret): Ditto.
18447 (vlmul_ext): Ditto.
18448 (vlmul_trunc): Ditto.
18449 (vset): Ditto.
18450 (vget): 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.
18458 (SHAPE): 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.
18564 (vbool8_t): Ditto.
18565 (vbool4_t): Ditto.
18566 (vbool2_t): Ditto.
18567 (vbool1_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.
18600 (scalar): Ditto.
18601 (mask): Ditto.
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.
18608 (void): Ditto.
18609 (size): Ditto.
18610 (ptrdiff): Ditto.
18611 (unsigned_long): Ditto.
18612 (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.
18666
18667 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18668
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.
18681 (BASE): 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.
18689 (vrgather): 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.
18756
18757 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18758
18759 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
18760
18761 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18762
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.
18772 (BASE): Ditto.
18773 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18774 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
18775 (vmv_s): Ditto.
18776 (vfmv_f): Ditto.
18777 (vfmv_s): Ditto.
18778 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
18779 (SHAPE): 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.
18876
18877 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
18878
18879 * config/riscv/bitmanip.md: allow 0 constant in max/min
18880 pattern.
18881
18882 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
18883
18884 * config/riscv/bitmanip.md: Fix wrong index in the check.
18885
18886 2023-03-04 Jakub Jelinek <jakub@redhat.com>
18887
18888 PR middle-end/109006
18889 * vec.cc (test_auto_alias): Adjust comment for removal of
18890 m_vecdata.
18891 * read-rtl-function.cc (function_reader::parse_block): Likewise.
18892 * gdbhooks.py: Likewise.
18893
18894 2023-03-04 Jakub Jelinek <jakub@redhat.com>
18895
18896 PR testsuite/108973
18897 * selftest-diagnostic.cc
18898 (test_diagnostic_context::test_diagnostic_context): Set
18899 caret_max_width to 80.
18900
18901 2023-03-03 Alexandre Oliva <oliva@adacore.com>
18902
18903 * gimple-ssa-warn-access.cc
18904 (pass_waccess::check_dangling_stores): Skip non-stores.
18905
18906 2023-03-03 Alexandre Oliva <oliva@adacore.com>
18907
18908 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
18909 after vmsr and vmrs, and lower the case of P0.
18910
18911 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
18912
18913 PR middle-end/109006
18914 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
18915
18916 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
18917
18918 PR middle-end/109006
18919 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
18920
18921 2023-03-03 Jakub Jelinek <jakub@redhat.com>
18922
18923 PR c/108986
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.
18928
18929 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
18930
18931 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
18932 arch14 instead of z16.
18933
18934 2023-03-03 Anthony Green <green@moxielogic.com>
18935
18936 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
18937
18938 2023-03-03 Anthony Green <green@moxielogic.com>
18939
18940 * config/moxie/constraints.md (A, B, W): Change
18941 define_constraint to define_memory_constraint.
18942
18943 2023-03-03 Xi Ruoyao <xry111@xry111.site>
18944
18945 * toplev.cc (process_options): Fix the spelling of
18946 "-fstack-clash-protection".
18947
18948 2023-03-03 Richard Biener <rguenther@suse.de>
18949
18950 PR tree-optimization/109002
18951 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
18952 PHI-translate ANTIC_IN.
18953
18954 2023-03-03 Jakub Jelinek <jakub@redhat.com>
18955
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
18959 fixes.
18960
18961 2023-03-03 Richard Biener <rguenther@suse.de>
18962
18963 PR target/108738
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
18974 disallowed insn.
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
18979 chains.
18980
18981 2023-03-03 Richard Biener <rguenther@suse.de>
18982
18983 PR debug/108772
18984 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
18985 generate a DIE for a function scope static.
18986
18987 2023-03-03 Alexandre Oliva <oliva@adacore.com>
18988
18989 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
18990
18991 2023-03-02 Jakub Jelinek <jakub@redhat.com>
18992
18993 PR target/108883
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.
19002
19003 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
19004
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
19008 move.
19009
19010 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
19011 Paul-Antoine Arras <pa@codesourcery.com>
19012
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.
19020
19021 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
19022
19023 PR tree-optimization/108979
19024 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
19025 operations on invariants.
19026
19027 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
19028
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.
19034
19035 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19036
19037 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
19038 of constant 0 offset.
19039
19040 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
19041
19042 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
19043 instead of long.
19044 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
19045
19046 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
19047
19048 * config.gcc: add -with-{no-}msa build option.
19049 * config/mips/mips.h: Likewise.
19050 * doc/install.texi: Likewise.
19051
19052 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
19053
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
19057 were emitted.
19058
19059 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
19060
19061 PR tree-optimization/108430
19062 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
19063 of inverted condition.
19064
19065 2023-03-02 Jakub Jelinek <jakub@redhat.com>
19066
19067 PR c++/108934
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.
19071
19072 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
19073
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.
19082
19083 2023-03-01 LIU Hao <lh_mouse@126.com>
19084
19085 PR pch/14940
19086 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
19087 Remove the size limit `pch_VA_max_size`
19088
19089 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
19090
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
19094 use_device_ptr.
19095
19096 2023-03-01 Jakub Jelinek <jakub@redhat.com>
19097
19098 PR debug/108967
19099 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
19100 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
19101
19102 2023-03-01 Richard Biener <rguenther@suse.de>
19103
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
19108 check.
19109 (vect_do_peeling): Streamline error handling.
19110
19111 2023-03-01 Richard Biener <rguenther@suse.de>
19112
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.
19119
19120 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
19121
19122 PR target/108240
19123 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
19124 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
19125
19126 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
19127
19128 PR middle-end/107411
19129 PR middle-end/107411
19130 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
19131 xasprintf.
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.
19134
19135 2023-02-28 Jakub Jelinek <jakub@redhat.com>
19136
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.
19147
19148 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
19149
19150 PR target/108922
19151 Revert:
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.
19158
19159 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
19160
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.
19166
19167 2023-02-27 Patrick Palka <ppalka@redhat.com>
19168
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
19173 instead of static.
19174
19175 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19176
19177 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
19178 New prototype.
19179 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
19180 New function.
19181 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
19182 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
19183
19184 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
19185
19186 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
19187 (xtensa_get_config_v3): New functions.
19188
19189 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19190
19191 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
19192
19193 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
19194
19195 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
19196 the macro to 0x1000000000.
19197
19198 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
19199
19200 PR modula2/108261
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.
19205
19206 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
19207
19208 PR target/108919
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.
19218
19219 2023-02-24 Richard Biener <rguenther@suse.de>
19220
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
19224 address.
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.
19235
19236 2023-02-24 Richard Biener <rguenther@suse.de>
19237
19238 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
19239 take a const reference to the object, use address to
19240 access data.
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.
19253
19254 2023-02-24 Martin Liska <mliska@suse.cz>
19255
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).
19259
19260 2023-02-24 Jakub Jelinek <jakub@redhat.com>
19261
19262 * config/i386/i386-builtin.def: Update description of BDESC
19263 and BDESC_FIRST in file comment to include mask2.
19264
19265 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19266
19267 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
19268
19269 2023-02-24 Jakub Jelinek <jakub@redhat.com>
19270
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.
19275
19276 2023-02-24 Jakub Jelinek <jakub@redhat.com>
19277
19278 PR target/108881
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.
19294
19295 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
19296
19297 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
19298 Add non-compact 32-bit multilibs.
19299
19300 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
19301
19302 * config/mips/mips.md (*clo<mode>2): New pattern.
19303
19304 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
19305
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.
19320
19321 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19322
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.
19326
19327 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19328
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.
19333
19334 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
19335
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.
19349
19350 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19351
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.
19355
19356 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19357
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)
19365 directly.
19366 (xtensa_expand_prologue): Modify to not emit register restoration
19367 insn from its stack slot if the register is already eliminated.
19368
19369 2023-02-23 Jakub Jelinek <jakub@redhat.com>
19370
19371 PR translation/108890
19372 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
19373 around fatal_error format strings.
19374
19375 2023-02-23 Richard Biener <rguenther@suse.de>
19376
19377 * tree-ssa-structalias.cc (handle_lhs_call): Do not
19378 re-create rhsc, only truncate it.
19379
19380 2023-02-23 Jakub Jelinek <jakub@redhat.com>
19381
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.
19385
19386 2023-02-23 Richard Biener <rguenther@suse.de>
19387
19388 * tree-if-conv.cc (tree_if_conversion): Properly manage
19389 memory of refs and the contained data references.
19390
19391 2023-02-23 Richard Biener <rguenther@suse.de>
19392
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.
19397
19398 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19399
19400 * config/xtensa/xtensa.md
19401 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
19402 Add missing "SI:" to PLUS RTXes.
19403
19404 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19405
19406 PR target/108876
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).
19410
19411 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
19412
19413 Revert:
19414 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
19415
19416 PR target/108876
19417 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
19418 for A0_REG.
19419 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
19420 (sibcall_value, sibcall_value_internal): Add 'use' expression
19421 for A0_REG.
19422
19423 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
19424
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.
19431
19432 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
19433
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.
19447
19448 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19449
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.
19454 (BASE): Ditto.
19455 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19456 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
19457 (vredmaxu): Ditto.
19458 (vredmax): Ditto.
19459 (vredminu): Ditto.
19460 (vredmin): Ditto.
19461 (vredand): Ditto.
19462 (vredor): Ditto.
19463 (vredxor): Ditto.
19464 (vwredsum): Ditto.
19465 (vwredsumu): Ditto.
19466 (vfredusum): Ditto.
19467 (vfredosum): Ditto.
19468 (vfredmax): Ditto.
19469 (vfredmin): Ditto.
19470 (vfwredosum): Ditto.
19471 (vfwredusum): Ditto.
19472 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
19473 (SHAPE): 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.
19535
19536 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19537
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.
19578 (BASE): Ditto.
19579 * config/riscv/riscv-vector-builtins-bases.h:
19580 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
19581 (vsext): Ditto.
19582 (vfadd): Ditto.
19583 (vfsub): Ditto.
19584 (vfrsub): Ditto.
19585 (vfwadd): Ditto.
19586 (vfwsub): Ditto.
19587 (vfmul): Ditto.
19588 (vfdiv): Ditto.
19589 (vfrdiv): Ditto.
19590 (vfwmul): Ditto.
19591 (vfmacc): Ditto.
19592 (vfnmsac): Ditto.
19593 (vfmadd): Ditto.
19594 (vfnmsub): Ditto.
19595 (vfnmacc): Ditto.
19596 (vfmsac): Ditto.
19597 (vfnmadd): Ditto.
19598 (vfmsub): Ditto.
19599 (vfwmacc): Ditto.
19600 (vfwnmacc): Ditto.
19601 (vfwmsac): Ditto.
19602 (vfwnmsac): Ditto.
19603 (vfsqrt): Ditto.
19604 (vfrsqrt7): Ditto.
19605 (vfrec7): Ditto.
19606 (vfmin): Ditto.
19607 (vfmax): Ditto.
19608 (vfsgnj): Ditto.
19609 (vfsgnjn): Ditto.
19610 (vfsgnjx): Ditto.
19611 (vfneg): Ditto.
19612 (vfabs): Ditto.
19613 (vmfeq): Ditto.
19614 (vmfne): Ditto.
19615 (vmflt): Ditto.
19616 (vmfle): Ditto.
19617 (vmfgt): Ditto.
19618 (vmfge): Ditto.
19619 (vfclass): Ditto.
19620 (vfmerge): Ditto.
19621 (vfmv_v): Ditto.
19622 (vfcvt_x): Ditto.
19623 (vfcvt_xu): Ditto.
19624 (vfcvt_rtz_x): Ditto.
19625 (vfcvt_rtz_xu): Ditto.
19626 (vfcvt_f): Ditto.
19627 (vfwcvt_x): Ditto.
19628 (vfwcvt_xu): Ditto.
19629 (vfwcvt_rtz_x): Ditto.
19630 (vfwcvt_rtz_xu): Ditto.
19631 (vfwcvt_f): Ditto.
19632 (vfncvt_x): Ditto.
19633 (vfncvt_xu): Ditto.
19634 (vfncvt_rtz_x): Ditto.
19635 (vfncvt_rtz_xu): Ditto.
19636 (vfncvt_f): 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.
19682 (f): New define.
19683 (f_v): New define.
19684 (xu_v): New define.
19685 (f_w): 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.
19690 (vfrecp): Ditto.
19691 (copysign): Ditto.
19692 (n): Ditto.
19693 (msac): Ditto.
19694 (msub): Ditto.
19695 (fixuns_trunc): Ditto.
19696 (floatuns): 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.
19755
19756 2023-02-22 Jakub Jelinek <jakub@redhat.com>
19757
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.
19763
19764 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
19765
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.
19770
19771 2023-02-21 David Malcolm <dmalcolm@redhat.com>
19772
19773 PR analyzer/108830
19774 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
19775
19776 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
19777
19778 PR target/108876
19779 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
19780 for A0_REG.
19781 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
19782 (sibcall_value, sibcall_value_internal): Add 'use' expression
19783 for A0_REG.
19784
19785 2023-02-21 Richard Biener <rguenther@suse.de>
19786
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.
19790
19791 2023-02-21 Richard Biener <rguenther@suse.de>
19792
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.
19796
19797 2023-02-21 Richard Biener <rguenther@suse.de>
19798
19799 Revert:
19800 2023-02-13 Richard Biener <rguenther@suse.de>
19801
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.
19809
19810 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19811
19812 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
19813 true if register A0 (return address register) when -Og is specified.
19814
19815 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
19816
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.
19828
19829 2023-02-20 Jakub Jelinek <jakub2redhat.com>
19830
19831 PR target/108862
19832 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
19833 gen_umadddi4_highpart{,_le}.
19834
19835 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
19836
19837 * config/riscv/riscv.md (prefetch): Use r instead of p for the
19838 address operand.
19839 (riscv_prefetchi_<mode>): Ditto.
19840
19841 2023-02-20 Richard Biener <rguenther@suse.de>
19842
19843 PR tree-optimization/108816
19844 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
19845 versioning condition split prerequesite, assert required
19846 invariant.
19847
19848 2023-02-20 Richard Biener <rguenther@suse.de>
19849
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
19853 update.
19854
19855 2023-02-20 Richard Biener <rguenther@suse.de>
19856
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.
19860
19861 2023-02-18 Jakub Jelinek <jakub@redhat.com>
19862
19863 PR tree-optimization/108819
19864 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
19865
19866 2023-02-18 Jakub Jelinek <jakub@redhat.com>
19867
19868 PR target/108832
19869 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
19870 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
19871 function.
19872 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
19873 with ix86_replace_reg_with_reg.
19874
19875 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
19876
19877 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
19878
19879 2023-02-18 Xi Ruoyao <xry111@xry111.site>
19880
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
19884 correctly.
19885 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
19886 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
19887 "f64" suffix).
19888
19889 2023-02-18 Andrew Pinski <apinski@marvell.com>
19890
19891 * match.pd: Remove #if GIMPLE around the
19892 "1 - a" pattern
19893
19894 2023-02-18 Andrew Pinski <apinski@marvell.com>
19895
19896 * value-query.h (get_range_query): Return the global ranges
19897 for a nullptr func.
19898
19899 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
19900
19901 * doc/invoke.texi (@item -Wall): Fix typo in
19902 -Wuse-after-free.
19903
19904 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
19905
19906 PR target/108831
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.
19913
19914 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
19915
19916 PR target/108805
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.
19920
19921 2023-02-17 Richard Biener <rguenther@suse.de>
19922
19923 PR tree-optimization/108821
19924 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
19925 move volatile accesses.
19926
19927 2023-02-17 Richard Biener <rguenther@suse.de>
19928
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.
19937
19938 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19939
19940 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
19941 class.
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.
19953 (BASE): Ditto.
19954 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19955 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
19956 (vmnand): Ditto.
19957 (vmandn): Ditto.
19958 (vmxor): Ditto.
19959 (vmor): Ditto.
19960 (vmnor): Ditto.
19961 (vmorn): Ditto.
19962 (vmxnor): Ditto.
19963 (vmmv): Ditto.
19964 (vmclr): Ditto.
19965 (vmset): Ditto.
19966 (vmnot): Ditto.
19967 (vcpop): Ditto.
19968 (vfirst): Ditto.
19969 (vmsbf): Ditto.
19970 (vmsif): Ditto.
19971 (vmsof): Ditto.
19972 (viota): Ditto.
19973 (vid): Ditto.
19974 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
19975 (struct mask_alu_def): Ditto.
19976 (SHAPE): 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.
19989
19990 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19991
19992 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
19993 (vsbc): Ditto.
19994 (vmerge): Ditto.
19995 (vmv_v): Ditto.
19996 * config/riscv/riscv-vector-builtins.cc: Ditto.
19997
19998 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19999 kito-cheng <kito.cheng@sifive.com>
20000
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.
20005
20006 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20007
20008 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
20009 (vsm): Ditto.
20010 (vsse): Ditto.
20011 (vsoxei64): Ditto.
20012 (vsub): Ditto.
20013 (vand): Ditto.
20014 (vor): Ditto.
20015 (vxor): Ditto.
20016 (vsll): Ditto.
20017 (vsra): Ditto.
20018 (vsrl): Ditto.
20019 (vmin): Ditto.
20020 (vmax): Ditto.
20021 (vminu): Ditto.
20022 (vmaxu): Ditto.
20023 (vmul): Ditto.
20024 (vmulh): Ditto.
20025 (vmulhu): Ditto.
20026 (vmulhsu): Ditto.
20027 (vdiv): Ditto.
20028 (vrem): Ditto.
20029 (vdivu): Ditto.
20030 (vremu): Ditto.
20031 (vnot): Ditto.
20032 (vsext): Ditto.
20033 (vzext): Ditto.
20034 (vwadd): Ditto.
20035 (vwsub): Ditto.
20036 (vwmul): Ditto.
20037 (vwmulu): Ditto.
20038 (vwmulsu): Ditto.
20039 (vwaddu): Ditto.
20040 (vwsubu): Ditto.
20041 (vsbc): Ditto.
20042 (vmsbc): Ditto.
20043 (vnsra): Ditto.
20044 (vmerge): Ditto.
20045 (vmv_v): Ditto.
20046 (vmsne): Ditto.
20047 (vmslt): Ditto.
20048 (vmsgt): Ditto.
20049 (vmsle): Ditto.
20050 (vmsge): Ditto.
20051 (vmsltu): Ditto.
20052 (vmsgtu): Ditto.
20053 (vmsleu): Ditto.
20054 (vmsgeu): Ditto.
20055 (vnmsac): Ditto.
20056 (vmadd): Ditto.
20057 (vnmsub): Ditto.
20058 (vwmacc): Ditto.
20059 (vsadd): Ditto.
20060 (vssub): Ditto.
20061 (vssubu): Ditto.
20062 (vaadd): Ditto.
20063 (vasub): Ditto.
20064 (vasubu): Ditto.
20065 (vsmul): Ditto.
20066 (vssra): Ditto.
20067 (vssrl): Ditto.
20068 (vnclip): Ditto.
20069
20070 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20071
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.
20076
20077 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20078
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.
20092 (get_ta): Ditto.
20093 (get_ma): Ditto.
20094 (get_avl_type): Ditto.
20095 (calculate_ratio): Ditto.
20096 (enum vlmul_type): Ditto.
20097 (simm5_p): Ditto.
20098 (neg_simm5_p): Ditto.
20099 (has_vi_variant_p): Ditto.
20100
20101 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20102
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.
20107
20108 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
20109
20110 * doc/invoke.texi (Optimize Options): Reword the explanation
20111 getting minimal, maximal and default values of a parameter.
20112
20113 2023-02-16 Patrick Palka <ppalka@redhat.com>
20114
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.
20127 * df.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.
20158 * ira.h: Likewise.
20159 * lra-int.h: Likewise.
20160 * lra.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.
20173 * rtl.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.
20205
20206 2023-02-16 Jakub Jelinek <jakub@redhat.com>
20207
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.
20212
20213 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
20214
20215 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
20216 using-declaration to unhide functions.
20217
20218 2023-02-16 Jakub Jelinek <jakub@redhat.com>
20219
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.
20225
20226 2023-02-16 Richard Biener <rguenther@suse.de>
20227
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
20231 type.
20232
20233 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
20234
20235 PR target/90458
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.
20239
20240 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
20241
20242 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
20243
20244 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
20245
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.
20252 (*extzvqi): 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.
20273
20274 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
20275
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.
20288
20289 2023-02-15 Richard Biener <rguenther@suse.de>
20290
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.
20298
20299 2023-02-15 Marek Polacek <polacek@redhat.com>
20300
20301 PR middle-end/106080
20302 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
20303 instead.
20304
20305 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20306
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
20311 enum.
20312 (class imac): New class.
20313 (enum widen_ternop_type): New enum.
20314 (class iwmac): New class.
20315 (BASE): New class.
20316 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20317 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
20318 (vnmsac): Ditto.
20319 (vmadd): Ditto.
20320 (vnmsub): Ditto.
20321 (vwmacc): Ditto.
20322 (vwmaccu): Ditto.
20323 (vwmaccsu): Ditto.
20324 (vwmaccus): 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.
20350
20351 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20352
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.
20362 (BASE): Ditto.
20363 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20364 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
20365 (vmsne): Ditto.
20366 (vmslt): Ditto.
20367 (vmsgt): Ditto.
20368 (vmsle): Ditto.
20369 (vmsge): Ditto.
20370 (vmsltu): Ditto.
20371 (vmsgtu): Ditto.
20372 (vmsleu): Ditto.
20373 (vmsgeu): 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.
20404
20405 2023-02-15 Martin Jambor <mjambor@suse.cz>
20406
20407 PR ipa/108679
20408 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
20409 creation of non-scalar replacements even if IPA-CP knows their
20410 contents.
20411
20412 2023-02-15 Jakub Jelinek <jakub@redhat.com>
20413
20414 PR target/108787
20415 PR target/103109
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.
20420
20421 2023-02-15 Martin Liska <mliska@suse.cz>
20422
20423 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
20424
20425 2023-02-15 Richard Biener <rguenther@suse.de>
20426
20427 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
20428 for with_poison and alias worklist to it.
20429 (sanitize_asan_mark_poison): Likewise.
20430
20431 2023-02-15 Richard Biener <rguenther@suse.de>
20432
20433 PR target/108738
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
20441 check.
20442
20443 2023-02-15 Richard Biener <rguenther@suse.de>
20444
20445 PR target/108738
20446 * config/i386/i386-features.cc (convert_scalars_to_vector):
20447 Switch candidates bitmaps to tree view before building the chains.
20448
20449 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
20450
20451 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
20452 "failure trying to reload" call.
20453
20454 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
20455
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.
20459
20460 2023-02-14 David Faust <david.faust@oracle.com>
20461
20462 PR target/108790
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.
20468
20469 2023-02-14 Andrew Pinski <apinski@marvell.com>
20470
20471 PR tree-optimization/108355
20472 PR tree-optimization/96921
20473 * match.pd: Add pattern for "1 - bool_val".
20474
20475 2023-02-14 Richard Biener <rguenther@suse.de>
20476
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.
20484
20485 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
20486
20487 * gimplify.cc (gimplify_save_expr): Add missing guard.
20488
20489 2023-02-14 Richard Biener <rguenther@suse.de>
20490
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.
20494
20495 2023-02-14 Jakub Jelinek <jakub@redhat.com>
20496
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.
20509
20510 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
20511
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
20515 possible.
20516
20517 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
20518
20519 PR rtl-optimization/108681
20520 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
20521 code to handle bare uses and clobbers.
20522
20523 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
20524
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.
20529
20530 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
20531
20532 PR target/108516
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.
20539
20540 2023-02-13 Richard Biener <rguenther@suse.de>
20541
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
20547 enabled.
20548 (process_bb): Instead call it once here for each edge
20549 we register possibly multiple predicates on.
20550
20551 2023-02-13 Richard Biener <rguenther@suse.de>
20552
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.
20560
20561 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20562
20563 PR target/108102
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
20567 the current side.
20568 (s390_sched_init): Unconditionally reset scheduler state.
20569
20570 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
20571
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.
20577
20578 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20579
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.
20583
20584 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
20585
20586 * common/config/arc/arc-common.cc (arc_option_optimization_table):
20587 Remove millicode from list.
20588
20589 2023-02-13 Martin Liska <mliska@suse.cz>
20590
20591 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
20592
20593 2023-02-13 Richard Biener <rguenther@suse.de>
20594
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.
20602
20603 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
20604
20605 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
20606 (DWARF_FRAME_REGISTERS): New.
20607 (DWARF_REG_TO_UNWIND_COLUMN): New.
20608
20609 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
20610
20611 * doc/sourcebuild.texi: Remove (broken) direct reference to
20612 "The GNU configure and build system".
20613
20614 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
20615
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.
20619
20620 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20621
20622 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
20623 (class vnclip): Ditto.
20624 (BASE): Ditto.
20625 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20626 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
20627 (vasub): Ditto.
20628 (vaaddu): Ditto.
20629 (vasubu): Ditto.
20630 (vsmul): Ditto.
20631 (vssra): Ditto.
20632 (vssrl): Ditto.
20633 (vnclipu): Ditto.
20634 (vnclip): Ditto.
20635 * config/riscv/vector-iterators.md (su): Add instruction.
20636 (aadd): Ditto.
20637 (vaalu): Ditto.
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.
20644
20645 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20646
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.
20653 (BASE): Ditto.
20654 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20655 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
20656 (vsrl): Ditto.
20657 (vnsrl): Ditto.
20658 (vnsra): Ditto.
20659 (vncvt_x): Ditto.
20660 (vmerge): Ditto.
20661 (vmv_v): Ditto.
20662 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
20663 (struct move_def): Ditto.
20664 (SHAPE): 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.
20669 (v_v): Ditto.
20670 (v_x): Ditto.
20671 (x_w): Ditto.
20672 (x): Ditto.
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.
20683
20684 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20685
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.
20691 (vmsbc): Ditto.
20692 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
20693 New class.
20694 (SHAPE): Ditto.
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.
20717
20718 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20719
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.
20724 (BASE): Ditto.
20725 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20726 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
20727 (vsbc): Ditto.
20728 * config/riscv/riscv-vector-builtins-shapes.cc
20729 (struct no_mask_policy_def): Ditto.
20730 (SHAPE): 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.
20747
20748 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20749
20750 * config/riscv/vector.md: use "zero" reg.
20751
20752 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20753
20754 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
20755 class.
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
20770 class.
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"
20778 (x_v): Ditto.
20779 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
20780 widening support.
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
20786 pattern.
20787 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
20788 Ditto.
20789 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
20790 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
20791 Ditto.
20792 (@pred_widen_mulsu<mode>): Ditto.
20793 (@pred_widen_mulsu<mode>_scalar): Ditto.
20794 (@pred_<optab><mode>): Ditto.
20795
20796 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20797 kito-cheng <kito.cheng@sifive.com>
20798
20799 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
20800 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
20801 (BASE): Ditto.
20802 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20803 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
20804 API support.
20805 (vmulhu): Ditto.
20806 (vmulhsu): Ditto.
20807 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
20808 New macro.
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.
20866
20867 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20868
20869 * config/riscv/iterators.md: Add sign_extend/zero_extend.
20870 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
20871 (BASE): Ditto.
20872 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
20873 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
20874 define.
20875 (vzext): Ditto.
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
20879 macro define.
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
20922 support.
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.
20929
20930 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20931
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.
20937 (vssub): Ditto.
20938 (vsaddu): Ditto.
20939 (vssubu): Ditto.
20940 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
20941 support.
20942 (sll.vv): Ditto.
20943 (%3,%v4): Ditto.
20944 (%3,%4): Ditto.
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.
20949
20950 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20951
20952 * config/riscv/iterators.md: Add neg and not.
20953 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
20954 (BASE): Ditto.
20955 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20956 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
20957 into alu.
20958 (vsub): Ditto.
20959 (vand): Ditto.
20960 (vor): Ditto.
20961 (vxor): Ditto.
20962 (vsll): Ditto.
20963 (vsra): Ditto.
20964 (vsrl): Ditto.
20965 (vmin): Ditto.
20966 (vmax): Ditto.
20967 (vminu): Ditto.
20968 (vmaxu): Ditto.
20969 (vmul): Ditto.
20970 (vdiv): Ditto.
20971 (vrem): Ditto.
20972 (vdivu): Ditto.
20973 (vremu): Ditto.
20974 (vrsub): Ditto.
20975 (vneg): Ditto.
20976 (vnot): Ditto.
20977 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
20978 (struct alu_def): Ditto.
20979 (SHAPE): 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
20984
20985 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20986
20987 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
20988
20989 2023-02-11 Jakub Jelinek <jakub@redhat.com>
20990
20991 PR ipa/108605
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.
20995
20996 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
20997
20998 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
20999
21000 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
21001
21002 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
21003 valid_combine only when ira_use_lra_p is true.
21004
21005 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
21006
21007 * params.opt (ira-simple-lra-insn-threshold): Add new param.
21008 * ira.cc (ira): Use the param to switch on simple LRA.
21009
21010 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
21011
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.
21017
21018 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
21019
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.
21027
21028 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21029
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.
21036 (simm32_p): 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.
21045 (simm5_p): Ditto.
21046 (neg_simm5_p): Ditto.
21047 (has_vi_variant_p): Ditto.
21048 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
21049 (BASE): Ditto.
21050 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21051 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
21052 unsigned cases.
21053 (vmax): Ditto.
21054 (vminu): Remove signed cases.
21055 (vmaxu): Ditto.
21056 (vdiv): Remove unsigned cases.
21057 (vrem): Ditto.
21058 (vdivu): Remove signed cases.
21059 (vremu): Ditto.
21060 (vadd): Adjust.
21061 (vsub): Ditto.
21062 (vrsub): New class.
21063 (vand): Adjust.
21064 (vor): Ditto.
21065 (vxor): Ditto.
21066 (vmul): Ditto.
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
21071 support.
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.
21078
21079 2023-02-10 Richard Biener <rguenther@suse.de>
21080
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.
21085
21086 2023-02-10 Jakub Jelinek <jakub@redhat.com>
21087
21088 Revert:
21089 2023-02-09 Martin Liska <mliska@suse.cz>
21090
21091 PR target/100758
21092 * doc/extend.texi: Document that the function
21093 does not work correctly for old VIA processors.
21094
21095 2023-02-10 Andrew Pinski <apinski@marvell.com>
21096 Andrew Macleod <amacleod@redhat.com>
21097
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
21103 removing it.
21104
21105 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
21106
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
21111 valid_combine.
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.
21116
21117 2023-02-09 Jakub Jelinek <jakub@redhat.com>
21118
21119 PR target/100758
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
21123 fixes.
21124
21125 2023-02-09 Jakub Jelinek <jakub@redhat.com>
21126
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.
21131
21132 2023-02-09 Andrew Pinski <apinski@marvell.com>
21133
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.
21137
21138 2023-02-09 Martin Liska <mliska@suse.cz>
21139
21140 PR target/100758
21141 * doc/extend.texi: Document that the function
21142 does not work correctly for old VIA processors.
21143
21144 2023-02-09 Andreas Schwab <schwab@suse.de>
21145
21146 * lto-wrapper.cc (merge_and_complain): Handle
21147 -funwind-tables and -fasynchronous-unwind-tables.
21148 (append_compiler_options): Likewise.
21149
21150 2023-02-09 Richard Biener <rguenther@suse.de>
21151
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
21156 in tree view.
21157 (walk_aliased_vdefs_1): Likewise.
21158
21159 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
21160
21161 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
21162
21163 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21164
21165 PR target/108505
21166 * config.gcc (tm_mlib_file): Define new variable.
21167
21168 2023-02-08 Jakub Jelinek <jakub@redhat.com>
21169
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.
21176
21177 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
21178
21179 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
21180 declaration.
21181 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
21182 definition.
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
21186 declaration.
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.
21190
21191 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
21192
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.
21197
21198 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
21199
21200 Revert:
21201 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
21202
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
21206 valid_combine.
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.
21211
21212 2023-02-08 Jakub Jelinek <jakub@redhat.com>
21213
21214 * tree.def (SAD_EXPR): Remove outdated comment about missing
21215 WIDEN_MINUS_EXPR.
21216
21217 2023-02-07 Marek Polacek <polacek@redhat.com>
21218
21219 * doc/invoke.texi: Update -fchar8_t documentation.
21220
21221 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
21222
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
21226 valid_combine.
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.
21231
21232 2023-02-07 Richard Biener <rguenther@suse.de>
21233
21234 PR tree-optimization/26854
21235 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
21236 instead of immediate uses.
21237
21238 2023-02-07 Jakub Jelinek <jakub@redhat.com>
21239
21240 PR tree-optimization/106923
21241 * ipa-split.cc (execute_split_functions): Don't split returns_twice
21242 functions.
21243
21244 2023-02-07 Jakub Jelinek <jakub@redhat.com>
21245
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.
21249
21250 2023-02-07 Jan Hubicka <jh@suse.cz>
21251
21252 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
21253 for znver4.
21254
21255 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
21256
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.
21260
21261 2023-02-06 Alex Coplan <alex.coplan@arm.com>
21262
21263 PR target/104921
21264 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
21265 Use correct constraint for operand 3.
21266
21267 2023-02-06 Martin Jambor <mjambor@suse.cz>
21268
21269 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
21270
21271 2023-02-06 Xi Ruoyao <xry111@xry111.site>
21272
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.
21289
21290 2023-02-06 Jakub Jelinek <jakub@redhat.com>
21291
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.
21296
21297 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
21298
21299 * doc/install.texi (Specific): Remove PW32.
21300
21301 2023-02-03 Jakub Jelinek <jakub@redhat.com>
21302
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 ().
21313
21314 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
21315
21316 PR tree-optimization/108639
21317 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
21318 widest_int.
21319 (irange::operator==): Same.
21320
21321 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
21322
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.
21340
21341 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
21342
21343 PR tree-optimization/107570
21344 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
21345
21346 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
21347
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.
21356 (Indices): Ditto.
21357 (Contents): Ditto.
21358 (Functions): Ditto.
21359
21360 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
21361
21362 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
21363 attribute.
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.
21368
21369 2023-02-03 Martin Jambor <mjambor@suse.cz>
21370
21371 PR ipa/108384
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.
21381
21382 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
21383
21384 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
21385 * config/riscv/riscv.cc: Ditto.
21386
21387 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21388
21389 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
21390 (sll.vv): Ditto.
21391 (%3,%4): Ditto.
21392 (%3,%v4): Ditto.
21393 * config/riscv/vector.md: Ditto.
21394
21395 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21396
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.
21400 (vsra): Ditto.
21401 (vsrl): Ditto.
21402 * config/riscv/riscv-vector-builtins.cc: Ditto.
21403 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
21404
21405 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
21406
21407 * toplev.cc (toplev::main): Only print the version information header
21408 from toplevel main().
21409
21410 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
21411
21412 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
21413 cond_{ashl|ashr|lshr}
21414
21415 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
21416
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.
21420
21421 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
21422
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
21428 tree.
21429
21430 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
21431
21432 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
21433 Fix finding best match score.
21434
21435 2023-02-02 Jakub Jelinek <jakub@redhat.com>
21436
21437 PR debug/106746
21438 PR rtl-optimization/108463
21439 PR target/108484
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.
21448
21449 2023-02-02 Richard Biener <rguenther@suse.de>
21450
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.
21455
21456 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
21457
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.
21475
21476 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21477
21478 PR target/108443
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
21483 format.
21484 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
21485 modes.
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
21489 qualifier.
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
21497 modes.
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.
21512 (mode1): Remove.
21513 (VCTPQ): Remove.
21514 (VCTPQ_M): Remove.
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
21517 attributes.
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
21534 predicates.
21535 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
21536 these...
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.
21542
21543 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21544
21545 PR target/107674
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.
21551
21552 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21553
21554 PR target/107674
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
21558 parameter.
21559 (arm_init_crypto_builtins): Likewise.
21560
21561 2023-02-02 Jakub Jelinek <jakub@redhat.com>
21562
21563 PR ipa/107300
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.
21583
21584 2023-02-02 liuhongt <hongtao.liu@intel.com>
21585
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):
21595 .. Here.
21596
21597 2023-02-02 Jakub Jelinek <jakub@redhat.com>
21598
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).
21608
21609 2023-02-01 Tamar Christina <tamar.christina@arm.com>
21610
21611 * common/config/aarch64/aarch64-common.cc
21612 (struct aarch64_option_extension): Add native_detect and document struct
21613 a bit more.
21614 (all_extensions): Set new field native_detect.
21615 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
21616 unused struct.
21617
21618 2023-02-01 Martin Liska <mliska@suse.cz>
21619
21620 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
21621 value if set.
21622
21623 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
21624
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.
21628
21629 2023-02-01 Martin Liska <mliska@suse.cz>
21630
21631 PR ipa/108509
21632 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
21633 ony non-null values.
21634 * ipa.cc (walk_polymorphic_call_targets): Likewise.
21635
21636 2023-02-01 Martin Liska <mliska@suse.cz>
21637
21638 PR driver/108572
21639 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
21640 -gz=zstd.
21641
21642 2023-02-01 Jakub Jelinek <jakub@redhat.com>
21643
21644 PR debug/108573
21645 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
21646 subregs in DEBUG_INSNs.
21647
21648 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
21649
21650 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
21651
21652 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
21653
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
21669
21670 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
21671
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
21678 rename to ...
21679 (@stack_tie<mode>): ... this.
21680
21681 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
21682
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.
21687
21688 2023-02-01 Richard Biener <rguenther@suse.de>
21689
21690 PR middle-end/108500
21691 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
21692 with tree traversal algorithm.
21693
21694 2023-02-01 Jason Merrill <jason@redhat.com>
21695
21696 * doc/invoke.texi: Document -Wno-changes-meaning.
21697
21698 2023-02-01 David Malcolm <dmalcolm@redhat.com>
21699
21700 * doc/invoke.texi (Static Analyzer Options): Add notes about
21701 limitations of -fanalyzer.
21702
21703 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21704
21705 * config/riscv/constraints.md (vj): New.
21706 (vk): Ditto
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.
21713 (vsub): Ditto.
21714 (vand): Ditto.
21715 (vor): Ditto.
21716 (vxor): Ditto.
21717 (vsll): Ditto.
21718 (vsra): Ditto.
21719 (vsrl): Ditto.
21720 (vmin): Ditto.
21721 (vmax): Ditto.
21722 (vminu): Ditto.
21723 (vmaxu): Ditto.
21724 (vmul): Ditto.
21725 (vdiv): Ditto.
21726 (vrem): Ditto.
21727 (vdivu): Ditto.
21728 (vremu): Ditto.
21729 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
21730 (vsub): Ditto.
21731 (vand): Ditto.
21732 (vor): Ditto.
21733 (vxor): Ditto.
21734 (vsll): Ditto.
21735 (vsra): Ditto.
21736 (vsrl): Ditto.
21737 (vmin): Ditto.
21738 (vmax): Ditto.
21739 (vminu): Ditto.
21740 (vmaxu): Ditto.
21741 (vmul): Ditto.
21742 (vdiv): Ditto.
21743 (vrem): Ditto.
21744 (vdivu): Ditto.
21745 (vremu): Ditto.
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.
21758
21759 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
21760
21761 PR target/108589
21762 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
21763 REG_P on SET_DEST.
21764
21765 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
21766
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.
21770
21771 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
21772
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.
21777
21778 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
21779
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.
21785
21786 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
21787
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.
21797
21798 2023-01-31 Jakub Jelinek <jakub@redhat.com>
21799
21800 PR target/108599
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.
21805
21806 2023-01-31 Jakub Jelinek <jakub@redhat.com>
21807
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.
21813
21814 2023-01-31 Jakub Jelinek <jakub@redhat.com>
21815
21816 PR c++/105593
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.
21822
21823 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
21824
21825 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
21826
21827 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21828
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.
21833 (BASE): Ditto.
21834 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
21835 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
21836 (vluxei16): Ditto.
21837 (vluxei32): Ditto.
21838 (vluxei64): Ditto.
21839 (vloxei8): Ditto.
21840 (vloxei16): Ditto.
21841 (vloxei32): Ditto.
21842 (vloxei64): Ditto.
21843 (vsuxei8): Ditto.
21844 (vsuxei16): Ditto.
21845 (vsuxei32): Ditto.
21846 (vsuxei64): Ditto.
21847 (vsoxei8): Ditto.
21848 (vsoxei16): Ditto.
21849 (vsoxei32): Ditto.
21850 (vsoxei64): Ditto.
21851 * config/riscv/riscv-vector-builtins-shapes.cc
21852 (struct indexed_loadstore_def): New class.
21853 (SHAPE): Ditto.
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
21861 support.
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
21872 pattern.
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.
21886
21887 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
21888
21889 * config.gcc: Recognize x86_64-*-gnu* targets and include
21890 i386/gnu64.h.
21891 * config/i386/gnu64.h: Define configuration for new target
21892 including ld.so location.
21893
21894 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
21895
21896 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
21897 ampere1a to include SM4.
21898
21899 2023-01-30 Andrew Pinski <apinski@marvell.com>
21900
21901 PR tree-optimization/108582
21902 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
21903 for middlebb to have no phi nodes.
21904
21905 2023-01-30 Richard Biener <rguenther@suse.de>
21906
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.
21911
21912 2023-01-30 Andreas Schwab <schwab@suse.de>
21913
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.
21920
21921 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
21922
21923 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
21924 value of includedir.
21925
21926 2023-01-30 Richard Biener <rguenther@suse.de>
21927
21928 PR ipa/108511
21929 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
21930 assert.
21931
21932 2023-01-30 liuhongt <hongtao.liu@intel.com>
21933
21934 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
21935 * doc/invoke.texi: Ditto.
21936
21937 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
21938
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
21945
21946 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
21947
21948 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
21949 off-by-one in checking the permissible shift-amount.
21950
21951 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21952
21953 * doc/extend.texi (Named Address Spaces): Update link to the
21954 AVR-Libc manual.
21955
21956 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21957
21958 * doc/standards.texi (Standards): Fix markup.
21959
21960 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21961
21962 * doc/standards.texi (Standards): Update link to Objective-C book.
21963
21964 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21965
21966 * doc/invoke.texi (Instrumentation Options): Update reference to
21967 AddressSanitizer.
21968
21969 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
21970
21971 * doc/standards.texi: Update Go1 link.
21972
21973 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21974
21975 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
21976 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
21977 Support vlse/vsse.
21978 (BASE): Ditto.
21979 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21980 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
21981 (vsse): 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.
21986
21987 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21988
21989 * config/riscv/vector.md (tail_policy_op_idx): Remove.
21990 (mask_policy_op_idx): Remove.
21991 (avl_type_op_idx): Remove.
21992
21993 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
21994
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.
22002
22003 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
22004
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.
22008
22009 2023-01-27 Richard Biener <rguenther@suse.de>
22010
22011 PR target/55522
22012 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
22013 and -Ofast FP environment side-effects.
22014
22015 2023-01-27 Richard Biener <rguenther@suse.de>
22016
22017 PR target/55522
22018 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
22019 Don't add crtfastmath.o for -shared.
22020
22021 2023-01-27 Richard Biener <rguenther@suse.de>
22022
22023 PR target/55522
22024 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
22025 for -shared.
22026
22027 2023-01-27 Richard Biener <rguenther@suse.de>
22028
22029 PR target/55522
22030 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
22031 crtfastmath.o for -shared.
22032
22033 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
22034
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.
22040
22041 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
22042
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.
22046
22047 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22048
22049 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
22050 Remove _m suffix for "vop_m" C++ overloaded API name.
22051
22052 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22053
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.
22057 (vsm): Ditto.
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.
22063 (vbool8_t): Ditto.
22064 (vbool4_t): Ditto.
22065 (vbool2_t): Ditto.
22066 (vbool1_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.
22071
22072 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22073
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.
22110
22111 2023-01-27 Jakub Jelinek <jakub@redhat.com>
22112
22113 PR other/108560
22114 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
22115 from size_t to int.
22116
22117 2023-01-27 Jakub Jelinek <jakub@redhat.com>
22118
22119 PR ipa/106061
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.
22123
22124 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22125
22126 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
22127
22128 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22129
22130 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
22131 (emit_vsetvl_insn): Ditto.
22132
22133 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22134
22135 * config/riscv/vector.md: Fix constraints.
22136
22137 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22138
22139 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
22140
22141 2023-01-27 Patrick Palka <ppalka@redhat.com>
22142 Jakub Jelinek <jakub@redhat.com>
22143
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.
22149
22150 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22151
22152 * config/riscv/riscv-vsetvl.h: Change it into public.
22153
22154 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22155
22156 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
22157 pass.
22158
22159 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22160
22161 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
22162
22163 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22164
22165 * config/riscv/vector.md: Fix incorrect attributes.
22166
22167 2023-01-27 Richard Biener <rguenther@suse.de>
22168
22169 PR target/55522
22170 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
22171 Don't add crtfastmath.o for -shared.
22172
22173 2023-01-27 Alexandre Oliva <oliva@gnu.org>
22174
22175 * doc/options.texi (option, RejectNegative): Mention that
22176 -g-started options are also implicitly negatable.
22177
22178 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
22179
22180 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
22181 Use get_typenode_from_name to get fixed-width integer type
22182 nodes.
22183 * config/riscv/riscv-vector-builtins.def: Update define with
22184 fixed-width integer type nodes.
22185
22186 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22187
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.
22226
22227 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22228
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.
22234
22235 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22236
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.
22245
22246 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22247
22248 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
22249 rinsn.
22250
22251 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22252
22253 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
22254
22255 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22256
22257 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
22258 Add pre-check for redundant flow.
22259
22260 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22261
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.
22266
22267 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22268
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.
22279
22280 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22281
22282 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
22283
22284 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22285
22286 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
22287 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
22288
22289 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22290
22291 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
22292 (backward_propagate_worthwhile_p): Fix non-worthwhile.
22293
22294 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22295
22296 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
22297
22298 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22299
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.
22304
22305 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22306
22307 * config/riscv/vector.md:
22308
22309 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22310
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
22316 implementation.
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.
22320
22321 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22322
22323 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
22324
22325 2023-01-26 Marek Polacek <polacek@redhat.com>
22326
22327 PR middle-end/108543
22328 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
22329 if it was previously set.
22330
22331 2023-01-26 Jakub Jelinek <jakub@redhat.com>
22332
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.
22346
22347 2023-01-26 Jakub Jelinek <jakub@redhat.com>
22348
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.
22357
22358 2023-01-26 Richard Biener <rguenther@suse.de>
22359
22360 PR tree-optimization/108547
22361 * gimple-predicate-analysis.cc (value_sat_pred_p):
22362 Use widest_int.
22363
22364 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
22365
22366 PR tree-optimization/108522
22367 * tree-object-size.cc (compute_object_offset): Make EXPR
22368 argument non-const. Call component_ref_field_offset.
22369
22370 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22371
22372 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
22373 FEATURE_STRING field.
22374
22375 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
22376
22377 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
22378
22379 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
22380
22381 PR modula2/102343
22382 PR modula2/108182
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.
22386
22387 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22388
22389 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
22390
22391 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22392
22393 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
22394
22395 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22396
22397 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
22398 Fix spacing.
22399
22400 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22401
22402 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
22403
22404 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
22405
22406 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
22407
22408 2023-01-25 Richard Biener <rguenther@suse.de>
22409
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
22413 prove equivalence.
22414
22415 2023-01-25 Richard Biener <rguenther@suse.de>
22416
22417 * doc/lto.texi (Command line options): Reword and update reference
22418 to removed lto_read_all_file_options.
22419
22420 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
22421
22422 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
22423 tests.
22424
22425 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
22426
22427 * doc/contrib.texi: Add Jose E. Marchesi.
22428
22429 2023-01-25 Jakub Jelinek <jakub@redhat.com>
22430
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.
22437
22438 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
22439 Jakub Jelinek <jakub@redhat.com>
22440
22441 PR tree-optimization/108522
22442 * tree-object-size.cc (compute_object_offset): Use
22443 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
22444
22445 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22446
22447 * config/xtensa/xtensa.md:
22448 Fix exit from loops detecting references before overwriting in the
22449 split pattern.
22450
22451 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
22452
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.
22457
22458 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
22459
22460 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
22461 of CPU version.
22462
22463 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
22464
22465 PR target/108177
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
22468 as input operand.
22469
22470 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22471
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.
22476
22477 2023-01-24 Richard Biener <rguenther@suse.de>
22478
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.
22486
22487 2023-01-24 Eric Biggers <ebiggers@google.com>
22488
22489 PR bootstrap/90543
22490 * optc-save-gen.awk: Fix copy-and-paste error.
22491
22492 2023-01-24 Jakub Jelinek <jakub@redhat.com>
22493
22494 PR c++/108474
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.
22498
22499 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22500
22501 PR target/108505
22502 * config.gcc (tm_file): Move the variable out of loop.
22503
22504 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
22505 Yang Yujie <yangyujie@loongson.cn>
22506
22507 PR target/107731
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.
22514
22515 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22516
22517 * doc/invoke.texi (-mbranch-protection): Update documentation.
22518
22519 2023-01-23 Richard Biener <rguenther@suse.de>
22520
22521 PR target/55522
22522 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
22523 for -shared.
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.
22528
22529 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22530
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
22542 register.
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.
22551
22552 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22553
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.
22560
22561 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22562
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.
22568
22569 2023-01-23 Richard Biener <rguenther@suse.de>
22570
22571 PR tree-optimization/108482
22572 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
22573 .LOOP_DIST_ALIAS calls.
22574
22575 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22576
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
22589 compatibility.
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.
22593
22594 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22595
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'
22599 proto.
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
22608 target.
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.
22613
22614 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22615
22616 * config/arm/arm.h (arm_arch8m_main): Declare it.
22617 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
22618 Declare it.
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):
22628 Add new patterns.
22629 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
22630 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
22631
22632 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22633
22634 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
22635 mbranch-protection.
22636
22637 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22638 Tejas Belagod <tbelagod@arm.com>
22639
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.
22642
22643 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22644 Tejas Belagod <tbelagod@arm.com>
22645 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
22646
22647 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
22648 new pseudo register class _UVRSC_PAC.
22649
22650 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22651 Tejas Belagod <tbelagod@arm.com>
22652
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.
22656
22657 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22658 Tejas Belagod <tbelagod@arm.com>
22659
22660 * doc/sourcebuild.texi: Document arm_pacbti_hw.
22661
22662 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22663 Tejas Belagod <tbelagod@arm.com>
22664 Richard Earnshaw <Richard.Earnshaw@arm.com>
22665
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.
22670
22671 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22672 Tejas Belagod <tbelagod@arm.com>
22673
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.
22677
22678 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
22679 Tejas Belagod <tbelagod@arm.com>
22680
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
22692 aarch-common.h
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
22697 and enum value.
22698 * config/aarch64/aarch64.opt: Include aarch-common.h to import
22699 type move. Fix up name changes from factoring out common code and
22700 data.
22701 * config/arm/aarch-common-protos.h: Export factored out routines to both
22702 backends.
22703 * config/arm/aarch-common.cc: Include newly factored out types.
22704 Move all mbranch-protection code and data structures from
22705 aarch64.cc.
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.
22714
22715 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
22716
22717 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
22718
22719 2023-01-23 Richard Biener <rguenther@suse.de>
22720
22721 PR tree-optimization/108449
22722 * cgraphunit.cc (check_global_declaration): Do not turn
22723 undefined statics into externs.
22724
22725 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
22726
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
22730 input modes.
22731
22732 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
22733
22734 * config/v850/v850.cc (v850_select_section): Put const volatile
22735 objects into read-only sections.
22736
22737 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
22738
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".
22742
22743 2023-01-20 Jakub Jelinek <jakub@redhat.com>
22744
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.
22749
22750 2023-01-19 Jakub Jelinek <jakub@redhat.com>
22751
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}
22755 commutativity.
22756 * selftest.h (relation_tests): Declare.
22757 * function-tests.cc (test_ranges): Call it.
22758
22759 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
22760
22761 PR target/108436
22762 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
22763 invalid third argument to __builtin_ia32_prefetch.
22764
22765 2023-01-19 Jakub Jelinek <jakub@redhat.com>
22766
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.
22770
22771 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
22772
22773 PR target/108411
22774 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
22775 comment. Move assert about alignment a bit later.
22776
22777 2023-01-19 Jakub Jelinek <jakub@redhat.com>
22778
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
22789 been created.
22790
22791 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
22792
22793 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
22794 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
22795 the pattern.
22796 (aarch64_simd_vec_copy_lane<mode>): Likewise.
22797 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
22798
22799 2023-01-19 Alexandre Oliva <oliva@adacore.com>
22800
22801 PR debug/106746
22802 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
22803 within debug insns.
22804
22805 2023-01-18 Martin Jambor <mjambor@suse.cz>
22806
22807 PR ipa/107944
22808 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
22809 lcone_of chain also do not need the body.
22810
22811 2023-01-18 Richard Biener <rguenther@suse.de>
22812
22813 Revert:
22814 2022-12-16 Richard Biener <rguenther@suse.de>
22815
22816 PR middle-end/108086
22817 * tree-inline.cc (remap_ssa_name): Do not unshare the
22818 result from the decl_map.
22819
22820 2023-01-18 Murray Steele <murray.steele@arm.com>
22821
22822 PR target/108442
22823 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
22824 function.
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.
22840
22841 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22842
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
22847 if TARGET_DENSITY.
22848
22849 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
22850 Andrew Pinski <apinski@marvell.com>
22851
22852 PR target/108396
22853 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
22854 vec_vsubcuqP with vec_vsubcuq.
22855
22856 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
22857
22858 PR target/108348
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.
22861
22862 2023-01-18 liuhongt <hongtao.liu@intel.com>
22863
22864 PR target/55522
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.
22870
22871 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
22872
22873 * config/bpf/bpf.cc (bpf_option_override): Disable
22874 -fstack-protector.
22875
22876 2023-01-17 Jakub Jelinek <jakub@redhat.com>
22877
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.
22883
22884 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
22885
22886 PR target/105980
22887 * config/i386/i386.cc (x86_output_mi_thunk): Disable
22888 -mforce-indirect-call for PIC in 32-bit mode.
22889
22890 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
22891
22892 PR ipa/106077
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.
22900
22901 2023-01-16 Jan Hubicka <jh@suse.cz>
22902
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.
22911
22912 2023-01-16 Richard Biener <rguenther@suse.de>
22913
22914 PR target/55522
22915 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
22916
22917 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
22918
22919 PR target/96795
22920 PR target/107515
22921 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
22922 (__ARM_mve_coerce3): Likewise.
22923
22924 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22925
22926 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
22927
22928 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22929
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.
22934
22935 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22936
22937 * doc/sourcebuild.texi: Add missing target attributes.
22938
22939 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
22940
22941 PR tree-optimization/94793
22942 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
22943 for c[lt]z optabs.
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.
22947
22948 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
22949
22950 * doc/extend.texi (Common Function Attributes): Fix grammar.
22951
22952 2023-01-16 Jakub Jelinek <jakub@redhat.com>
22953
22954 PR other/108413
22955 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
22956 * config/riscv/riscv-vsetvl.cc: Likewise.
22957
22958 2023-01-16 Jakub Jelinek <jakub@redhat.com>
22959
22960 PR c++/105593
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):
22964 Likewise.
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.
22971
22972 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
22973
22974 PR target/108272
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.
22978
22979 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
22980
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.
22985
22986 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22987
22988 * config.gcc (csky-*-*): Support --with-float=softfp.
22989
22990 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22991
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.
23002
23003 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23004
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.
23008
23009 2023-01-14 Alexandre Oliva <oliva@adacore.com>
23010
23011 * hash-table.h (is_deleted): Precheck !is_empty.
23012 (mark_deleted): Postcheck !is_empty.
23013 (copy constructor): Test is_empty before is_deleted.
23014
23015 2023-01-14 Alexandre Oliva <oliva@adacore.com>
23016
23017 PR target/40457
23018 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
23019 moves.
23020
23021 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
23022
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.
23026
23027 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
23028
23029 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
23030 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
23031 define.
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
23035 enabled.
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.
23043
23044 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
23045
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.
23050
23051 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
23052
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.
23057
23058 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
23059
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.
23066
23067 2023-01-13 Richard Biener <rguenther@suse.de>
23068
23069 PR target/55522
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.
23073
23074 2023-01-13 Richard Biener <rguenther@suse.de>
23075
23076 PR target/55522
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):
23080 Likewise.
23081 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
23082 Likewise.
23083
23084 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
23085
23086 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
23087 function.
23088 (TARGET_DWARF_FRAME_REG_MODE): Define.
23089
23090 2023-01-13 Richard Biener <rguenther@suse.de>
23091
23092 PR target/107209
23093 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
23094 update EH info on the fly.
23095
23096 2023-01-13 Richard Biener <rguenther@suse.de>
23097
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.
23101
23102 2023-01-12 Andrew Pinski <apinski@marvell.com>
23103 Roger Sayle <roger@nextmovesoftware.com>
23104
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.
23109
23110 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
23111 Richard Sandiford <richard.sandiford@arm.com>
23112
23113 PR target/105549
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
23119 changes.
23120
23121 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
23122 Richard Sandiford <richard.sandiford@arm.com>
23123
23124 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
23125 comment.
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.
23132
23133 2023-01-12 Richard Biener <rguenther@suse.de>
23134
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.
23141
23142 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23143
23144 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
23145 Rearrange the emitting codes.
23146
23147 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23148
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.
23153
23154 2023-01-12 Alexandre Oliva <oliva@adacore.com>
23155
23156 * hash-table.h (expand): Check elements and deleted counts.
23157 (verify): Likewise.
23158
23159 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
23160
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).
23165
23166 2023-01-11 David Faust <david.faust@oracle.com>
23167
23168 PR target/108293
23169 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
23170 floating point modes.
23171
23172 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
23173
23174 PR tree-optimization/108199
23175 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
23176 for bit-field references.
23177
23178 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
23179
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.
23184
23185 2023-01-11 Richard Biener <rguenther@suse.de>
23186
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.
23193
23194 2023-01-11 Martin Liska <mliska@suse.cz>
23195
23196 PR middle-end/107976
23197 * params.opt: Limit JT params.
23198 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
23199
23200 2023-01-11 Richard Biener <rguenther@suse.de>
23201
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
23206 irreducible loops.
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.
23211
23212 2023-01-11 Richard Biener <rguenther@suse.de>
23213
23214 PR tree-optimization/108353
23215 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
23216 Remove.
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.
23222
23223 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
23224
23225 * config/s390/s390.md (*not<mode>): New pattern.
23226
23227 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23228
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.
23232
23233 2023-01-10 Richard Biener <rguenther@suse.de>
23234
23235 PR tree-optimization/106293
23236 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
23237 process degenerate PHI defs.
23238
23239 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
23240
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.
23244
23245 2023-01-10 Martin Jambor <mjambor@suse.cz>
23246
23247 PR ipa/108110
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
23257 sort_replacements.
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
23261 std::lower_bound.
23262 (ipa_param_body_adjustments::lookup_first_base_replacement): New
23263 function.
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.
23268
23269 2023-01-10 Richard Biener <rguenther@suse.de>
23270
23271 PR tree-optimization/108314
23272 * tree-vect-stmts.cc (vectorizable_condition): Do not
23273 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
23274
23275 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23276
23277 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
23278
23279 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23280
23281 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
23282
23283 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23284
23285 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
23286 defines for soft float abi.
23287
23288 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23289
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.
23297
23298 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
23299
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.
23303
23304 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
23305
23306 * config/s390/s390.cc (s390_register_info): Check call_used_regs
23307 instead of hard-coding the register numbers for call saved
23308 registers.
23309 (s390_optimize_register_info): Likewise.
23310
23311 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
23312
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.
23316
23317 2023-01-09 Richard Biener <rguenther@suse.de>
23318
23319 PR middle-end/108209
23320 * genmatch.cc (commutative_op): Fix return value for
23321 user-id with non-commutative first replacement.
23322
23323 2023-01-09 Jakub Jelinek <jakub@redhat.com>
23324
23325 PR target/107453
23326 * calls.cc (expand_call): For calls with
23327 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
23328 Formatting fix.
23329
23330 2023-01-09 Richard Biener <rguenther@suse.de>
23331
23332 PR middle-end/69482
23333 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
23334 qualified accesses also force objects to memory.
23335
23336 2023-01-09 Martin Liska <mliska@suse.cz>
23337
23338 PR lto/108330
23339 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
23340 NULL (deleleted value) to a hash_set.
23341
23342 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23343
23344 * config/xtensa/xtensa.md (*splice_bits):
23345 New insn_and_split pattern.
23346
23347 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23348
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.
23357
23358 2023-01-07 LIU Hao <lh_mouse@126.com>
23359
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.
23366
23367 2023-01-06 Joseph Myers <joseph@codesourcery.com>
23368
23369 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
23370 for handling real integer types.
23371
23372 2023-01-06 Tamar Christina <tamar.christina@arm.com>
23373
23374 Revert:
23375 2022-12-12 Tamar Christina <tamar.christina@arm.com>
23376
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):
23386 Add E_V2HFmode.
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.
23391
23392 2023-01-06 Martin Liska <mliska@suse.cz>
23393
23394 PR middle-end/107966
23395 * doc/options.texi: Fix Var documentation in internal manual.
23396
23397 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
23398
23399 Revert:
23400 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
23401
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.
23405
23406 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
23407
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.
23412
23413 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
23414
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.
23419
23420 2023-01-04 Jakub Jelinek <jakub@redhat.com>
23421
23422 PR tree-optimization/108253
23423 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
23424 types.
23425
23426 2023-01-04 Jakub Jelinek <jakub@redhat.com>
23427
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.
23433
23434 2023-01-04 Jakub Jelinek <jakub@redhat.com>
23435
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
23439 is on.
23440 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
23441
23442 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
23443
23444 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
23445 * common/config/i386/i386-common.cc: Add Emeraldrapids.
23446
23447 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
23448
23449 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
23450 for meteorlake.
23451
23452 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
23453
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
23460 on local clones.
23461 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
23462 gc_candidate bit when a clone is used.
23463
23464 2023-01-03 Florian Weimer <fweimer@redhat.com>
23465
23466 Revert:
23467 2023-01-02 Florian Weimer <fweimer@redhat.com>
23468
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
23476 hook signature.
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.
23482
23483 2023-01-03 Florian Weimer <fweimer@redhat.com>
23484
23485 Revert:
23486 2023-01-02 Florian Weimer <fweimer@redhat.com>
23487
23488 * debug.h (dwarf_reg_sizes_constant): Declare.
23489 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
23490
23491 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
23492
23493 PR tree-optimization/105043
23494 * doc/extend.texi (Object Size Checking): Split out into two
23495 subsections and mention _FORTIFY_SOURCE.
23496
23497 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
23498
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.
23502
23503 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
23504
23505 PR target/108229
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.
23509
23510 2023-01-03 Jakub Jelinek <jakub@redhat.com>
23511
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
23515 it to outer_mode.
23516
23517 2023-01-03 Jakub Jelinek <jakub@redhat.com>
23518
23519 PR rtl-optimization/108263
23520 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
23521 asm goto to EXIT.
23522
23523 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
23524
23525 PR target/87832
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.
23554
23555 2023-01-02 Florian Weimer <fweimer@redhat.com>
23556
23557 * debug.h (dwarf_reg_sizes_constant): Declare.
23558 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
23559
23560 2023-01-02 Florian Weimer <fweimer@redhat.com>
23561
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
23569 hook signature.
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.
23575
23576 2023-01-02 Jakub Jelinek <jakub@redhat.com>
23577
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.
23590
23591 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
23592 Uroš Bizjak <ubizjak@gmail.com>
23593
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.
23600
23601 \f
23602 Copyright (C) 2023 Free Software Foundation, Inc.
23603
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.