1 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
3 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
4 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
5 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
6 NOT (BITREVERSE x) as BITREVERSE (NOT x).
7 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
8 Optimize PARITY (BITREVERSE x) as PARITY x.
9 Optimize BITREVERSE (BITREVERSE x) as x.
10 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
11 BITREVERSE of a constant integer at compile-time.
12 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
13 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
14 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
15 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
16 Optimize COPYSIGN (x, ABS y) as ABS x.
17 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
18 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
19 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
20 arguments at compile-time.
22 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
24 * rtl.h (function_invariant_p): Change return type from int to bool.
25 * reload1.cc (function_invariant_p): Change return type from
26 int to bool and adjust function body accordingly.
28 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
30 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
31 (*single_<optab>mult_plus<mode>): Ditto.
32 (*double_<optab>mult_plus<mode>): Ditto.
33 (*sign_zero_extend_fma): Ditto.
34 (*zero_sign_extend_fma): Ditto.
35 * config/riscv/riscv-protos.h (enum insn_type): New enum.
37 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
38 Tobias Burnus <tobias@codesourcery.com>
40 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
41 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
43 (omp_get_attachment): Handle map clauses with 'present' modifier.
44 (omp_group_base): Likewise.
45 (gimplify_scan_omp_clauses): Reorder present maps to come first.
46 Set GOVD flags for present defaultmaps.
47 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
48 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
50 (lower_omp_target): Handle map clauses with 'present' modifier.
51 Handle 'to' and 'from' clauses with 'present'.
52 * tree-core.h (enum omp_clause_defaultmap_kind): Add
53 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
54 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
55 'from' clauses with 'present' modifier. Handle present defaultmap.
56 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
58 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
60 * config/rs6000/genfusion.pl: Delete some dead code.
62 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
64 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
66 (gen_ld_cmpi_p10): ... this.
68 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
71 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
74 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
76 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
77 Handle unsigned reduc_plus_scal_ builtins.
78 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
79 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
80 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
81 __builtin_aarch64_reduc_plus_scal_v2di.
82 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
84 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
86 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
87 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
88 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
90 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
92 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
93 (aarch64_shrn<mode>_insn_be): Delete.
94 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
95 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
96 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
97 (aarch64_rshrn<mode>_insn_le): Delete.
98 (aarch64_rshrn<mode>_insn_be): Delete.
99 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
100 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
102 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
104 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
106 (aarch64_pars_overlap_p): Likewise.
107 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
108 Express in terms of UNSPEC_ADDV.
109 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
110 (*aarch64_<su>addlv<mode>_reduction): Define.
111 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
112 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
113 (aarch64_pars_overlap_p): Likewise.
114 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
115 (VQUADW): New mode attribute.
116 (VWIDE2X_S): Likewise.
118 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
119 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
121 2023-06-06 Richard Biener <rguenther@suse.de>
124 * gimplify.cc (gimplify_target_expr): Do not emit
125 CLOBBERs for variables which have static storage duration
126 after gimplifying their initializers.
128 2023-06-06 Richard Biener <rguenther@suse.de>
130 PR tree-optimization/109143
131 * tree-ssa-structalias.cc (solution_set_expand): Avoid
132 one bitmap iteration and optimize bit range setting.
134 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
137 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
138 XVECEXP, not XEXP, to access first item of a PARALLEL.
140 2023-06-06 Pan Li <pan2.li@intel.com>
142 * config/riscv/riscv-vector-builtins-types.def
143 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
144 (vfloat16mf2_t): Likewise.
145 (vfloat16m1_t): Likewise.
146 (vfloat16m2_t): Likewise.
147 (vfloat16m4_t): Likewise.
148 (vfloat16m8_t): Likewise.
149 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
150 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
152 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
154 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
155 for cfi reg/mem machmode
156 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
158 2023-06-06 Li Xu <xuli1@eswincomputing.com>
160 * config/riscv/vector-iterators.md:
161 Fix 'REQUIREMENT' for machine_mode 'MODE'.
162 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
163 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
164 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
166 2023-06-06 Pan Li <pan2.li@intel.com>
168 * config/riscv/vector-iterators.md: Fix typo in mode attr.
170 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
171 Joel Hutton <joel.hutton@arm.com>
173 * doc/generic.texi: Remove old tree codes.
174 * expr.cc (expand_expr_real_2): Remove old tree code cases.
175 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
176 * optabs-tree.cc (optab_for_tree_code): Likewise.
177 (supportable_half_widening_operation): Likewise.
178 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
179 * tree-inline.cc (estimate_operator_cost): Likewise.
180 (op_symbol_code): Likewise.
181 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
182 (vect_analyze_data_ref_accesses): Likewise.
183 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
184 * cfgexpand.cc (expand_debug_expr): Likewise.
185 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
186 (supportable_widening_operation): Likewise.
187 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
189 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
190 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
191 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
192 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
193 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
194 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
195 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
196 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
198 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
199 Joel Hutton <joel.hutton@arm.com>
200 Tamar Christina <tamar.christina@arm.com>
202 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
204 (vec_widen_<su>add_lo_<mode>): ... to this.
205 (vec_widen_<su>addl_hi_<mode>): Rename this ...
206 (vec_widen_<su>add_hi_<mode>): ... to this.
207 (vec_widen_<su>subl_lo_<mode>): Rename this ...
208 (vec_widen_<su>sub_lo_<mode>): ... to this.
209 (vec_widen_<su>subl_hi_<mode>): Rename this ...
210 (vec_widen_<su>sub_hi_<mode>): ...to this.
211 * doc/generic.texi: Document new IFN codes.
212 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
213 (commutative_binary_fn_p): Add widen_plus fn's.
214 (widening_fn_p): New function.
215 (narrowing_fn_p): New function.
216 (direct_internal_fn_optab): Change visibility.
217 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
218 internal_fn that expands into multiple internal_fns for widening.
219 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
220 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
221 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
222 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
223 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
224 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
225 (lookup_hilo_internal_fn): Likewise.
226 (widening_fn_p): Likewise.
227 (Narrowing_fn_p): Likewise.
228 * optabs.cc (commutative_optab_p): Add widening plus optabs.
229 * optabs.def (OPTAB_D): Define widen add, sub optabs.
230 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
231 patterns with a hi/lo or even/odd split.
232 (vect_recog_sad_pattern): Refactor to use new IFN codes.
233 (vect_recog_widen_plus_pattern): Likewise.
234 (vect_recog_widen_minus_pattern): Likewise.
235 (vect_recog_average_pattern): Likewise.
236 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
238 (supportable_widening_operation): Likewise.
239 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
241 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
242 Joel Hutton <joel.hutton@arm.com>
244 * tree-vect-patterns.cc: Add include for gimple-iterator.
245 (vect_recog_widen_op_pattern): Refactor to use code_helper.
246 (vect_gimple_build): New function.
247 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
249 (vectorizable_call): Likewise.
250 (vect_gen_widened_results_half): Likewise.
251 (vect_create_vectorized_demotion_stmts): Likewise.
252 (vect_create_vectorized_promotion_stmts): Likewise.
253 (vect_create_half_widening_stmts): Likewise.
254 (vectorizable_conversion): Likewise.
255 (supportable_widening_operation): Likewise.
256 (supportable_narrowing_operation): Likewise.
257 * tree-vectorizer.h (supportable_widening_operation): Change
258 prototype to use code_helper.
259 (supportable_narrowing_operation): Likewise.
260 (vect_gimple_build): New function prototype.
261 * tree.h (code_helper::safe_as_tree_code): New function.
262 (code_helper::safe_as_fn_code): New function.
264 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
266 * wide-int.cc (wi::bitreverse_large): New function implementing
267 bit reversal of an integer.
268 * wide-int.h (wi::bitreverse): New (template) function prototype.
269 (bitreverse_large): Prototype helper function/implementation.
270 (wi::bitreverse): New template wrapper around bitreverse_large.
272 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
274 * rtl.h (print_rtl_single): Change return type from int to void.
275 (print_rtl_single_with_indent): Ditto.
276 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
277 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
278 (rtx_writer::print_rtx_operand_code_0): Ditto.
279 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
280 (rtx_writer::print_rtx_operand_code_i): Ditto.
281 (rtx_writer::print_rtx_operand_code_u): Ditto.
282 (rtx_writer::print_rtx_operand): Ditto.
283 (rtx_writer::print_rtx): Ditto.
284 (rtx_writer::finish_directive): Ditto.
285 (print_rtl_single): Change return type from int to void
286 and adjust function body accordingly.
287 (rtx_writer::print_rtl_single_with_indent): Ditto.
289 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
291 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
292 (reg_class_subset_p): Ditto.
293 * reginfo.cc (reg_classes_intersect_p): Ditto.
294 (reg_class_subset_p): Ditto.
296 2023-06-05 Pan Li <pan2.li@intel.com>
298 * config/riscv/riscv-vector-builtins-types.def
299 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
300 (vfloat32m1_t): Ditto.
301 (vfloat32m2_t): Ditto.
302 (vfloat32m4_t): Ditto.
303 (vfloat32m8_t): Ditto.
304 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
305 (vint16mf2_t): Ditto.
310 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
311 (vuint16mf2_t): Ditto.
312 (vuint16m1_t): Ditto.
313 (vuint16m2_t): Ditto.
314 (vuint16m4_t): Ditto.
315 (vuint16m8_t): Ditto.
316 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
321 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
322 (vuint32m1_t): Ditto.
323 (vuint32m2_t): Ditto.
324 (vuint32m4_t): Ditto.
325 (vuint32m8_t): Ditto.
326 * config/riscv/vector-iterators.md: Add FP=16 support for V,
327 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
329 2023-06-05 Andrew Pinski <apinski@marvell.com>
332 * Makefile.in (clean): Remove the removing of
333 MULTILIB_DIR/MULTILIB_OPTIONS directories.
335 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
337 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
339 * config/mips/mips.cc (speculation_barrier_libfunc): New static
341 (mips_init_libfuncs): Initialize it.
342 (mips_emit_speculation_barrier): New function.
343 * config/mips/mips.md (speculation_barrier): Call
344 mips_emit_speculation_barrier.
346 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
348 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
349 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
350 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
351 (rvv_builder::get_merged_repeating_sequence): Ditto.
352 (rvv_builder::get_merge_scalar_mask): Ditto.
353 (emit_scalar_move_insn): Ditto.
354 (emit_vlmax_integer_move_insn): Ditto.
355 (emit_nonvlmax_integer_move_insn): Ditto.
356 (emit_vlmax_gather_insn): Ditto.
357 (emit_vlmax_masked_gather_mu_insn): Ditto.
358 (get_repeating_sequence_dup_machine_mode): Ditto.
360 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
362 * config/riscv/autovec.md: Split arguments.
363 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
364 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
366 2023-06-04 Andrew Pinski <apinski@marvell.com>
368 * expr.cc (do_store_flag): Improve for single bit testing
369 not against zero but against that single bit.
371 2023-06-04 Andrew Pinski <apinski@marvell.com>
373 * expr.cc (do_store_flag): Extend the one bit checking case
374 to handle the case where we don't have an and but rather still
375 one bit is known to be non-zero.
377 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
379 * config/h8300/constraints.md (Zz): Make this a normal
381 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
382 * config/h8300/logical.md (H8/SX bit patterns): Remove.
384 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
386 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
387 New insn_and_split patterns.
389 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
392 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
393 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
394 (@vlmul_extx4<mode>): Ditto.
395 (@vlmul_extx8<mode>): Ditto.
396 (@vlmul_extx16<mode>): Ditto.
397 (@vlmul_extx32<mode>): Ditto.
398 (@vlmul_extx64<mode>): Ditto.
399 (*vlmul_extx2<mode>): Ditto.
400 (*vlmul_extx4<mode>): Ditto.
401 (*vlmul_extx8<mode>): Ditto.
402 (*vlmul_extx16<mode>): Ditto.
403 (*vlmul_extx32<mode>): Ditto.
404 (*vlmul_extx64<mode>): Ditto.
406 2023-06-04 Pan Li <pan2.li@intel.com>
408 * config/riscv/riscv-vector-builtins-types.def
409 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
410 (vfloat32m1_t): Likewise.
411 (vfloat32m2_t): Likewise.
412 (vfloat32m4_t): Likewise.
413 (vfloat32m8_t): Likewise.
414 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
415 * config/riscv/vector-iterators.md: Add single to half machine
418 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
420 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
421 (*n<optab><mode>): Ditto.
422 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
423 (*n<optab><mode>): Ditto.
424 * config/riscv/vector.md: Ditto.
426 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
429 * config/i386/i386-features.cc (scalar_chain::convert_compare):
430 Update or delete REG_EQUAL notes, converting CONST_INT and
431 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
433 2023-06-04 Jason Merrill <jason@redhat.com>
436 * tree-eh.cc (lower_resx): Pass the exception pointer to the
438 * except.h: Tweak comment.
440 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
442 * postreload.cc (move2add_use_add2_insn): Handle
443 trivial single_sets. Rename variable PAT to SET.
444 (move2add_use_add3_insn, reload_cse_move2add): Similar.
446 2023-06-04 Pan Li <pan2.li@intel.com>
448 * config/riscv/riscv-vector-builtins-types.def
449 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
450 (vfloat16mf2_t): Likewise.
451 (vfloat16m1_t): Likewise.
452 (vfloat16m2_t): Likewise.
453 (vfloat16m4_t): Likewise.
454 (vfloat16m8_t): Likewise.
455 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
456 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
457 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
458 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
461 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
463 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
466 2023-06-03 Die Li <lidie@eswincomputing.com>
468 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
470 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
472 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
474 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
476 * config/riscv/vector.md: Add vector-opt.md.
477 * config/riscv/autovec-opt.md: New file.
479 2023-06-03 liuhongt <hongtao.liu@intel.com>
481 PR tree-optimization/110067
482 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
483 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
485 2023-06-03 liuhongt <hongtao.liu@intel.com>
488 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
489 (truncv2si<mode>2): Ditto.
491 2023-06-02 Andrew Pinski <apinski@marvell.com>
493 PR rtl-optimization/102733
494 * dse.cc (store_info): Add addrspace field.
495 (record_store): Record the address space
496 and check to make sure they are the same.
498 2023-06-02 Andrew Pinski <apinski@marvell.com>
500 PR rtl-optimization/110042
501 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
502 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
504 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
507 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
508 Make sure that we do not have a cap on field alignment before altering
509 the struct layout based on the type alignment of the first entry.
511 2023-06-02 David Faust <david.faust@oracle.com>
514 * btfout.cc (btf_absolute_func_id): New function.
515 (btf_asm_func_type): Call it here. Change index parameter from
516 size_t to ctf_id_t. Use PRIu64 formatter.
518 2023-06-02 Alex Coplan <alex.coplan@arm.com>
520 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
521 (btf_asm_datasec_type): Likewise.
523 2023-06-02 Carl Love <cel@us.ibm.com>
525 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
526 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
528 2023-06-02 Jason Merrill <jason@redhat.com>
532 * tree.h (DECL_MERGEABLE): New.
533 * tree-core.h (struct tree_decl_common): Mention it.
534 * gimplify.cc (gimplify_init_constructor): Check it.
535 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
536 * varasm.cc (categorize_decl_for_section): Likewise.
538 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
540 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
541 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
542 (stack_regs_mentioned_p): Change return type from int to bool
543 and adjust function body accordingly.
544 (stack_regs_mentioned): Ditto.
545 (check_asm_stack_operands): Ditto. Change "malformed_asm"
547 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
548 (swap_rtx_condition_1): Change return type from int to bool
549 and adjust function body accordingly. Change "r" variable to bool.
550 (swap_rtx_condition): Change return type from int to bool
551 and adjust function body accordingly.
552 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
553 (subst_stack_regs): Ditto.
554 (convert_regs_entry): Change return type from int to bool and adjust
555 function body accordingly. Change "inserted" variable to bool.
556 (convert_regs_1): Recode handling of control_flow_insn_deleted.
557 (convert_regs_2): Recode handling of cfg_altered.
558 (convert_regs): Ditto. Change "inserted" variable to bool.
560 2023-06-02 Jason Merrill <jason@redhat.com>
563 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
564 (initializer_constant_valid_p_1): Compare float precision.
566 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
568 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
571 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
573 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
574 (vect_set_loop_condition_partial_vectors): Ditto.
576 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
579 * config/avr/avr.md: Add an RTL peephole to optimize operations on
580 non-LD_REGS after a move from LD_REGS.
581 (piaop): New code iterator.
583 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
586 * doc/install.texi: Document (optional) Perl usage for parallel
589 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
592 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
595 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
596 KuanLin Chen <best124612@gmail.com>
598 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
599 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
601 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
603 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
605 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
607 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
609 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
611 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
613 (DEF_RVV_FRM_ENUM): Ditto.
615 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
617 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
618 intrinsic API expander
619 * config/riscv/vector.md
620 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
621 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
622 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
624 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
626 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
627 * config/riscv/predicates.md (vector_perm_operand): New predicate.
628 * config/riscv/riscv-protos.h (enum insn_type): New enum.
629 (expand_vec_perm): New function.
630 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
631 (gen_const_vector_dup): Ditto.
632 (emit_vlmax_gather_insn): Ditto.
633 (emit_vlmax_masked_gather_mu_insn): Ditto.
634 (expand_vec_perm): Ditto.
636 2023-06-01 Jason Merrill <jason@redhat.com>
638 * doc/invoke.texi (-Wpedantic): Improve clarity.
640 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
642 * rtl.h (exp_equiv_p): Change return type from int to bool.
643 * cse.cc (mention_regs): Change return type from int to bool
644 and adjust function body accordingly.
645 (exp_equiv_p): Ditto.
646 (insert_regs): Ditto. Change "modified" function argument to bool
647 and update usage accordingly.
648 (record_jump_cond): Remove always zero "reversed_nonequality"
649 function argument and update usage accordingly.
650 (fold_rtx): Change "changed" variable to bool.
651 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
652 (is_dead_reg): Change return type from int to bool.
654 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
656 * config/xtensa/xtensa.md (adddi3, subdi3):
657 New RTL generation patterns implemented according to the instruc-
658 tion idioms described in the Xtensa ISA reference manual (p. 600).
660 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
661 Uros Bizjak <ubizjak@gmail.com>
664 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
665 CODE_for_sse4_1_ptestzv2di.
666 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
667 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
668 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
669 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
670 when expanding UNSPEC_PTEST to compare against zero.
671 * config/i386/i386-features.cc (scalar_chain::convert_compare):
672 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
673 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
674 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
675 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
676 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
677 check for suitable matching modes for the UNSPEC_PTEST pattern.
678 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
679 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
680 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
681 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
682 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
683 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
684 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
686 (*ptest<mode>_and): Specify CCZ to only perform this optimization
687 when only the Z flag is required.
689 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
692 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
694 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
696 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
697 Add =r,m and =r,m alternatives.
698 (load_pair<DREG:mode><DREG2:mode>): Likewise.
699 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
701 2023-06-01 Pan Li <pan2.li@intel.com>
703 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
705 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
706 (main): Disable FP16 tuple.
707 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
708 (TARGET_VECTOR_ELEN_FP_16): Ditto.
709 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
711 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
712 (vfloat16mf2_t): Ditto.
713 (vfloat16m1_t): Ditto.
714 (vfloat16m2_t): Ditto.
715 (vfloat16m4_t): Ditto.
716 (vfloat16m8_t): Ditto.
717 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
719 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
720 machine mode based on TARGET_VECTOR_ELEN_FP_16.
722 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
724 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
725 (DEF_RVV_FRM_ENUM): New macro.
726 (handle_pragma_vector): Add FRM enum
727 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
734 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
735 Richard Sandiford <richard.sandiford@arm.com>
737 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
738 Update call to wi::bswap.
739 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
740 Update call to wi::bswap.
741 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
742 Update calls to wi::bswap.
743 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
744 (wi::bswap_large): New function, with revised API.
745 * wide-int.h (wi::bswap): New (template) function prototype.
746 (wide_int_storage::bswap): Remove method.
747 (sext_large, zext_large): Consistent indentation/line wrapping.
748 (bswap_large): Prototype helper function containing implementation.
749 (wi::bswap): New template wrapper around bswap_large.
751 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
754 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
755 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
756 (usdot_prod<vsi2qi>): Rename to...
757 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
758 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
759 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
760 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
761 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
762 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
763 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
766 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
769 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
770 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
771 (aarch64_sq<r>dmulh_n<mode>): Rename to...
772 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
773 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
774 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
775 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
776 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
777 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
778 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
779 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
780 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
781 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
782 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
784 2023-05-31 David Faust <david.faust@oracle.com>
786 * btfout.cc (btf_kind_names): New.
787 (btf_kind_name): New.
788 (btf_absolute_var_id): New utility function.
789 (btf_relative_var_id): Likewise.
790 (btf_relative_func_id): Likewise.
791 (btf_absolute_datasec_id): Likewise.
792 (btf_asm_type_ref): New.
793 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
794 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
795 (btf_asm_varent): Likewise.
796 (btf_asm_func_arg): Likewise.
797 (btf_asm_datasec_entry): Likewise.
798 (btf_asm_datasec_type): Likewise.
799 (btf_asm_func_type): Likewise. Add index parameter.
800 (btf_asm_enum_const): Likewise.
801 (btf_asm_sou_member): Likewise.
802 (output_btf_vars): Update btf_asm_* call accordingly.
803 (output_asm_btf_sou_fields): Likewise.
804 (output_asm_btf_enum_list): Likewise.
805 (output_asm_btf_func_args_list): Likewise.
806 (output_asm_btf_vlen_bytes): Likewise.
807 (output_btf_func_types): Add ctf_container_ref parameter.
808 Pass it to btf_asm_func_type.
809 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
810 (btf_output): Update output_btf_func_types call similarly.
812 2023-05-31 David Faust <david.faust@oracle.com>
814 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
815 and BTF_KIND_FWD which do not use the size/type field at all.
817 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
819 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
820 (active_insn_p): Ditto.
821 (in_sequence_p): Ditto.
822 (unshare_all_rtl): Change return type from int to void.
823 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
824 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
825 and adjust function body accordingly.
826 (mem_expr_equal_p): Ditto.
827 (unshare_all_rtl): Change return type from int to void
828 and adjust function body accordingly.
829 (verify_rtx_sharing): Remove unneeded return.
830 (active_insn_p): Change return type from int to bool
831 and adjust function body accordingly.
832 (in_sequence_p): Ditto.
834 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
836 * rtl.h (true_dependence): Change return type from int to bool.
837 (canon_true_dependence): Ditto.
838 (read_dependence): Ditto.
839 (anti_dependence): Ditto.
840 (canon_anti_dependence): Ditto.
841 (output_dependence): Ditto.
842 (canon_output_dependence): Ditto.
843 (may_alias_p): Ditto.
844 * alias.h (alias_sets_conflict_p): Ditto.
845 (alias_sets_must_conflict_p): Ditto.
846 (objects_must_conflict_p): Ditto.
847 (nonoverlapping_memrefs_p): Ditto.
848 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
850 (base_alias_check): Ditto.
851 (find_base_value): Ditto.
852 (mems_in_disjoint_alias_sets_p): Ditto.
853 (get_alias_set_entry): Ditto.
854 (decl_for_component_ref): Ditto.
855 (write_dependence_p): Ditto.
856 (memory_modified_1): Ditto.
857 (mems_in_disjoint_alias_set_p): Change return type from int to bool
858 and adjust function body accordingly.
859 (alias_sets_conflict_p): Ditto.
860 (alias_sets_must_conflict_p): Ditto.
861 (objects_must_conflict_p): Ditto.
862 (rtx_equal_for_memref_p): Ditto.
863 (base_alias_check): Ditto.
864 (read_dependence): Ditto.
865 (nonoverlapping_memrefs_p): Ditto.
866 (true_dependence_1): Ditto.
867 (true_dependence): Ditto.
868 (canon_true_dependence): Ditto.
869 (write_dependence_p): Ditto.
870 (anti_dependence): Ditto.
871 (canon_anti_dependence): Ditto.
872 (output_dependence): Ditto.
873 (canon_output_dependence): Ditto.
874 (may_alias_p): Ditto.
875 (init_alias_analysis): Change "changed" variable to bool.
877 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
879 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
880 expand into define_insn_and_split.
882 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
884 * config/riscv/vector.md: Remove FRM.
886 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
888 * config/riscv/vector.md: Remove FRM.
890 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
892 * config/riscv/vector.md: Remove FRM.
894 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
897 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
900 2023-05-31 Richard Biener <rguenther@suse.de>
903 PR tree-optimization/109143
904 * tree-ssa-structalias.cc (struct topo_info): Remove.
905 (init_topo_info): Likewise.
906 (free_topo_info): Likewise.
907 (compute_topo_order): Simplify API, put the component
908 with ESCAPED last so it's processed first.
909 (topo_visit): Adjust.
910 (solve_graph): Likewise.
912 2023-05-31 Richard Biener <rguenther@suse.de>
914 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
916 (add_graph_edge): Count redundant edges we avoid to create.
917 (dump_sa_stats): Dump them.
918 (ipa_pta_execute): Do not dump generating constraints when
919 we are not dumping them.
921 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
923 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
924 output template to avoid explicit switch on which_alternative.
925 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
926 (and<mode>3): Likewise.
927 (ior<mode>3): Likewise.
928 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
930 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
932 * config/xtensa/predicates.md (xtensa_bit_join_operator):
934 * config/xtensa/xtensa.md (ior_op): Remove.
935 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
936 insn_and_split pattern of the same name to express and capture
937 the bit-combining operation with both sides swapped.
938 In addition, replace use of code iterator with new operator
940 (*shlrd_const, *shlrd_per_byte):
941 Likewise regarding the code iterator.
943 2023-05-31 Cui, Lili <lili.cui@intel.com>
945 PR tree-optimization/110038
946 * params.opt: Add a limit on tree-reassoc-width.
947 * tree-ssa-reassoc.cc
948 (rewrite_expr_tree_parallel): Add width limit.
950 2023-05-31 Pan Li <pan2.li@intel.com>
952 * common/config/riscv/riscv-common.cc:
953 (riscv_implied_info): Add zvfh item.
954 (riscv_ext_version_table): Ditto.
955 (riscv_ext_flag_table): Ditto.
956 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
957 (TARGET_ZVFH): Ditto.
959 2023-05-30 liuhongt <hongtao.liu@intel.com>
961 PR tree-optimization/108804
962 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
963 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
964 Add new parameter narrow_src_p.
965 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
966 vectorization by truncating to lower precision.
967 * tree-vectorizer.h (vect_get_range_info): New declare.
969 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
971 * lra-int.h (lra_update_sp_offset): Add the prototype.
972 * lra.cc (setup_sp_offset): Change the return type. Use
973 lra_update_sp_offset.
974 * lra-eliminations.cc (lra_update_sp_offset): New function.
975 (lra_process_new_insns): Push the current insn to reprocess if the
976 input reload changes sp offset.
978 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
981 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
982 Fix misleading identation.
984 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
986 * rtl.h (comparison_dominates_p): Change return type from int to bool.
988 (any_condjump_p): Ditto.
989 (any_uncondjump_p): Ditto.
990 (simplejump_p): Ditto.
991 (returnjump_p): Ditto.
992 (eh_returnjump_p): Ditto.
994 (invert_jump_1): Ditto.
995 (invert_jump): Ditto.
996 (rtx_renumbered_equal_p): Ditto.
997 (redirect_jump_1): Ditto.
998 (redirect_jump): Ditto.
999 (condjump_in_parallel_p): Ditto.
1000 * jump.cc (invert_exp_1): Adjust forward declaration.
1001 (comparison_dominates_p): Change return type from int to bool
1002 and adjust function body accordingly.
1003 (simplejump_p): Ditto.
1004 (condjump_p): Ditto.
1005 (condjump_in_parallel_p): Ditto.
1006 (any_uncondjump_p): Ditto.
1007 (any_condjump_p): Ditto.
1008 (returnjump_p): Ditto.
1009 (eh_returnjump_p): Ditto.
1010 (onlyjump_p): Ditto.
1011 (redirect_jump_1): Ditto.
1012 (redirect_jump): Ditto.
1013 (invert_exp_1): Ditto.
1014 (invert_jump_1): Ditto.
1015 (invert_jump): Ditto.
1016 (rtx_renumbered_equal_p): Ditto.
1018 2023-05-30 Andrew Pinski <apinski@marvell.com>
1020 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
1021 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
1022 Add ne as a possible cmp.
1023 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
1025 2023-05-30 Andrew Pinski <apinski@marvell.com>
1027 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
1030 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
1032 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
1033 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
1034 (and (extend X) C) as (zero_extend (and X C)), to also optimize
1035 modes wider than HOST_WIDE_INT.
1037 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
1040 * simplify-rtx.cc (simplify_const_relational_operation): Return
1041 early if we have a MODE_CC comparison that isn't a COMPARE against
1044 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
1046 * config/riscv/riscv.cc (riscv_const_insns): Allow
1047 const_vec_duplicates.
1049 2023-05-30 liuhongt <hongtao.liu@intel.com>
1051 PR middle-end/108938
1052 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
1053 function, cut from original find_bswap_or_nop function.
1054 (find_bswap_or_nop): Add a new parameter, detect bswap +
1055 rotate and save rotate result in the new parameter.
1056 (bswap_replace): Add a new parameter to indicate rotate and
1057 generate rotate stmt if needed.
1058 (maybe_optimize_vector_constructor): Adjust for new rotate
1059 parameter in the upper 2 functions.
1060 (pass_optimize_bswap::execute): Ditto.
1061 (imm_store_chain_info::output_merged_store): Ditto.
1063 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1065 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
1066 (aarch64_<su>adalp<mode>): New define_expand.
1067 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
1068 (aarch64_<su>addlp<mode>): Convert to define_expand.
1069 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
1070 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
1072 (USADDLP): Likewise.
1073 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
1075 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1077 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
1078 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
1079 srhadd, urhadd builtin codes for standard optab ones.
1080 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
1081 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
1083 (<u>avg<mode>3_ceil): Rename to...
1084 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
1086 (aarch64_<su>hsub<mode>): New define_expand.
1087 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
1088 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
1089 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
1091 2023-05-30 Andreas Schwab <schwab@suse.de>
1094 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
1097 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1099 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
1100 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
1102 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
1103 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
1104 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
1105 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
1106 (aarch64_<sra_op>sra_n<mode>): New define_expand.
1107 (aarch64_<sra_op>rsra_n<mode>): Likewise.
1108 (aarch64_<sur>sra_n<mode>): Rename to...
1109 (aarch64_<sur>sra_ndi): ... This.
1110 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
1111 any_target_p argument.
1112 (aarch64_extract_vec_duplicate_wide_int): Define.
1113 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
1114 (aarch64_const_vec_rnd_cst_p): Likewise.
1115 (aarch64_vector_mode_supported_any_target_p): Likewise.
1116 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
1117 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
1118 (VSRA): Adjust for the above.
1120 (V2XWIDE): New mode_attr.
1121 (vec_or_offset): Likewise.
1122 (SHIFTEXTEND): Likewise.
1123 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
1125 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
1126 clarify that it applies to current target options.
1127 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
1128 * doc/tm.texi.in: Regenerate.
1129 * stor-layout.cc (mode_for_vector): Check
1130 vector_mode_supported_any_target_p when iterating through vector modes.
1131 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
1132 clarify that it applies to current target options.
1133 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
1135 2023-05-30 Lili Cui <lili.cui@intel.com>
1137 PR tree-optimization/98350
1138 * tree-ssa-reassoc.cc
1139 (rewrite_expr_tree_parallel): Rewrite this function.
1140 (rank_ops_for_fma): New.
1141 (reassociate_bb): Handle new function.
1143 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
1145 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
1146 (rtx_unstable_p): Ditto.
1147 (reg_mentioned_p): Ditto.
1148 (reg_referenced_p): Ditto.
1149 (reg_used_between_p): Ditto.
1150 (reg_set_between_p): Ditto.
1151 (modified_between_p): Ditto.
1152 (no_labels_between_p): Ditto.
1153 (modified_in_p): Ditto.
1155 (multiple_sets): Ditto.
1156 (set_noop_p): Ditto.
1157 (noop_move_p): Ditto.
1158 (reg_overlap_mentioned_p): Ditto.
1159 (dead_or_set_p): Ditto.
1160 (dead_or_set_regno_p): Ditto.
1161 (find_reg_fusage): Ditto.
1162 (find_regno_fusage): Ditto.
1163 (side_effects_p): Ditto.
1164 (volatile_refs_p): Ditto.
1165 (volatile_insn_p): Ditto.
1166 (may_trap_p_1): Ditto.
1167 (may_trap_p): Ditto.
1168 (may_trap_or_fault_p): Ditto.
1169 (computed_jump_p): Ditto.
1170 (auto_inc_p): Ditto.
1171 (loc_mentioned_in_p): Ditto.
1172 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
1173 (rtx_unstable_p): Change return type from int to bool
1174 and adjust function body accordingly.
1175 (rtx_addr_can_trap_p): Ditto.
1176 (reg_mentioned_p): Ditto.
1177 (no_labels_between_p): Ditto.
1178 (reg_used_between_p): Ditto.
1179 (reg_referenced_p): Ditto.
1180 (reg_set_between_p): Ditto.
1182 (modified_between_p): Ditto.
1183 (modified_in_p): Ditto.
1184 (multiple_sets): Ditto.
1185 (set_noop_p): Ditto.
1186 (noop_move_p): Ditto.
1187 (reg_overlap_mentioned_p): Ditto.
1188 (dead_or_set_p): Ditto.
1189 (dead_or_set_regno_p): Ditto.
1190 (find_reg_fusage): Ditto.
1191 (find_regno_fusage): Ditto.
1192 (remove_node_from_insn_list): Ditto.
1193 (volatile_insn_p): Ditto.
1194 (volatile_refs_p): Ditto.
1195 (side_effects_p): Ditto.
1196 (may_trap_p_1): Ditto.
1197 (may_trap_p): Ditto.
1198 (may_trap_or_fault_p): Ditto.
1199 (computed_jump_p): Ditto.
1200 (auto_inc_p): Ditto.
1201 (loc_mentioned_in_p): Ditto.
1202 * combine.cc (can_combine_p): Update indirect function.
1204 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1206 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
1207 * config/riscv/iterators.md: New attribute.
1208 * config/riscv/vector-iterators.md: New attribute.
1210 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
1212 * config/riscv/riscv.md: Fix signed and unsigned comparison
1215 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1217 * config/riscv/autovec.md (fnma<mode>4): New pattern.
1218 (*fnma<mode>): Ditto.
1220 2023-05-29 Die Li <lidie@eswincomputing.com>
1222 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
1224 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
1225 process for TARGET_XTHEADCONDMOV
1227 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
1230 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
1231 TARGET_AVX512BW to generate truncv16hiv16qi2.
1233 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1235 * config/riscv/riscv.md (and<mode>3): New expander.
1236 (*and<mode>3) New pattern.
1237 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
1240 2023-05-29 Pan Li <pan2.li@intel.com>
1242 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
1243 comments and rename local variables.
1244 (emit_nonvlmax_insn): Diito.
1245 (emit_vlmax_merge_insn): Ditto.
1246 (emit_vlmax_cmp_insn): Ditto.
1247 (emit_vlmax_cmp_mu_insn): Ditto.
1248 (emit_scalar_move_insn): Ditto.
1250 2023-05-29 Pan Li <pan2.li@intel.com>
1252 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
1254 (emit_nonvlmax_insn): Ditto.
1255 (emit_vlmax_merge_insn): Ditto.
1256 (emit_vlmax_cmp_insn): Ditto.
1257 (emit_vlmax_cmp_mu_insn): Ditto.
1258 (expand_vec_series): Ditto.
1260 2023-05-29 Pan Li <pan2.li@intel.com>
1262 * config/riscv/riscv-protos.h (enum insn_type): New type.
1263 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
1264 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
1266 (rvv_builder::get_merged_repeating_sequence): Ditto.
1267 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
1268 to evaluate the optimization cost.
1269 (rvv_builder::get_merge_scalar_mask): New function to get the merge
1271 (emit_scalar_move_insn): New function to emit vmv.s.x.
1272 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
1273 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
1275 (get_repeating_sequence_dup_machine_mode): New function to get the dup
1277 (expand_vector_init_merge_repeating_sequence): New function to perform
1279 (expand_vec_init): Add this vector init optimization.
1280 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
1282 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
1284 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
1285 put onto the increment when it is inserted after the position.
1287 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
1289 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
1292 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1294 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
1296 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1298 * config/riscv/autovec.md (fma<mode>4): New pattern.
1299 (*fma<mode>): Ditto.
1300 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1301 (emit_vlmax_ternary_insn): New function.
1302 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
1304 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1306 * config/riscv/vector.md: Fix vimuladd instruction bug.
1308 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1310 * config/riscv/riscv.cc (global_state_unknown_p): New function.
1311 (riscv_mode_after): Fix incorrect VXM.
1313 2023-05-29 Pan Li <pan2.li@intel.com>
1315 * common/config/riscv/riscv-common.cc:
1316 (riscv_implied_info): Add zvfhmin item.
1317 (riscv_ext_version_table): Ditto.
1318 (riscv_ext_flag_table): Ditto.
1319 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
1320 (TARGET_ZFHMIN): Align indent.
1321 (TARGET_ZFH): Ditto.
1322 (TARGET_ZVFHMIN): New macro.
1324 2023-05-27 liuhongt <hongtao.liu@intel.com>
1327 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
1328 to VI_AVX2 to cover more modes.
1330 2023-05-27 liuhongt <hongtao.liu@intel.com>
1332 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
1333 Remove ATOM and ICELAKE(and later) core processors.
1335 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
1337 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
1339 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
1341 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
1344 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
1345 Juzhe Zhong <juzhe.zhong@rivai.ai>
1347 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
1349 (<optab><v_quad_trunc><mode>2): Dito.
1350 (<optab><v_oct_trunc><mode>2): Dito.
1351 (trunc<mode><v_double_trunc>2): Dito.
1352 (trunc<mode><v_quad_trunc>2): Dito.
1353 (trunc<mode><v_oct_trunc>2): Dito.
1354 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
1355 (autovectorize_vector_modes): Define.
1356 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
1358 (autovectorize_vector_modes): Implement hook.
1359 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
1360 Implement target hook.
1361 (riscv_vectorize_related_mode): Implement target hook.
1362 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
1363 (TARGET_VECTORIZE_RELATED_MODE): Define.
1364 * config/riscv/vector-iterators.md: Add lowercase versions of
1365 mode_attr iterators.
1367 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
1368 Tobias Burnus <tobias@codesourcery.com>
1370 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
1371 (ASM_SPEC): Use XNACKOPT.
1372 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
1373 (enum hsaco_attr_type): ... this, and generalize the names.
1374 (TARGET_XNACK): New macro.
1375 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
1377 (output_file_start): Update xnack handling.
1378 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
1379 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
1380 (sram_ecc_type): Rename to ...
1381 (hsaco_attr_type: ... this.)
1382 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
1383 (TEST_XNACK): Delete.
1384 (TEST_XNACK_ANY): New macro.
1385 (TEST_XNACK_ON): New macro.
1386 (main): Support the new -mxnack=on/off/any syntax.
1387 * doc/invoke.texi (-mxnack): Update for new syntax.
1389 2023-05-26 Andrew Pinski <apinski@marvell.com>
1391 * genmatch.cc (emit_debug_printf): New function.
1392 (dt_simplify::gen_1): Emit printf into the code
1393 before the `return true` or returning the folded result
1394 instead of emitting it always.
1396 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1398 * config/xtensa/xtensa-protos.h
1399 (xtensa_expand_block_set_unrolled_loop,
1400 xtensa_expand_block_set_small_loop): Remove.
1401 (xtensa_expand_block_set): New prototype.
1402 * config/xtensa/xtensa.cc
1403 (xtensa_expand_block_set_libcall): New subfunction.
1404 (xtensa_expand_block_set_unrolled_loop,
1405 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
1406 (xtensa_expand_block_set): New function that calls the above
1408 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
1409 xtensa_expand_block_set().
1411 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1413 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
1415 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
1417 * config/xtensa/constraints.md (O):
1418 Change to use the above function.
1419 * config/xtensa/xtensa.md (*subsi3_from_const):
1420 New insn_and_split pattern.
1422 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1424 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
1425 Retract excessive line folding, and correct the value of
1426 the "length" insn attribute related to TARGET_DENSITY.
1427 (*extzvsi-1bit_addsubx): Ditto.
1429 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
1431 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
1432 Do not disable call to ix86_expand_vecop_qihi2.
1434 2023-05-26 liuhongt <hongtao.liu@intel.com>
1438 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
1439 calculation when !hard_regno_mode_ok for GENERAL_REGS and
1440 mode, otherwise still use GENERAL_REGS.
1442 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1444 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
1445 explict VL and drop VL in ops.
1447 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
1449 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
1450 in different BB blocks.
1452 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
1454 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1455 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
1456 instructions when available. Emulate truncation via
1457 ix86_expand_vec_perm_const_1 when native truncate insn
1459 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
1460 when available. Trivially rename some variables.
1461 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
1462 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
1463 calculation of V*QImode emulations to account for generation of
1464 2x-wider mode instructions.
1465 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
1466 emulations to account for generation of 2x-wider mode instructions.
1468 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
1471 * config/avr/avr.cc (avr_can_inline_p): New static function.
1472 (TARGET_CAN_INLINE_P): Define to that function.
1474 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
1477 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
1478 Handle any bit position and use mode QISI.
1479 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
1480 of 2 insns for bit-transfer of respective style.
1482 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
1484 * config/arm/iterators.md (MVE_6): Remove.
1485 * config/arm/mve.md: Replace MVE_6 with MVE_5.
1487 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1488 Richard Sandiford <richard.sandiford@arm.com>
1490 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
1492 (vect_set_loop_controls_directly): Add decrement IV support.
1493 (vect_set_loop_condition_partial_vectors): Ditto.
1494 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
1496 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
1499 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1502 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
1503 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
1504 Fix canonicalization of PLUS operands.
1505 (aarch64_fcmla<rot><mode>): Rename to...
1506 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
1507 Fix canonicalization of PLUS operands.
1508 (aarch64_fcmla_lane<rot><mode>): Rename to...
1509 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
1510 Fix canonicalization of PLUS operands.
1511 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
1512 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
1513 Fix canonicalization of PLUS operands.
1514 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
1516 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
1518 * config/arm/arm.md (rbitsi2): Rename to...
1519 (arm_rbit): ... This.
1520 (ctzsi2): Adjust for the above.
1521 (arm_rev16si2): Convert to define_expand.
1522 (arm_rev16si2_alt1): New pattern.
1523 (arm_rev16si2_alt): Rename to...
1524 (*arm_rev16si2_alt2): ... This.
1525 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
1526 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
1527 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
1528 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
1530 2023-05-25 Alex Coplan <alex.coplan@arm.com>
1533 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
1535 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
1536 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
1537 DFmode as an rvalue.
1539 2023-05-25 Richard Biener <rguenther@suse.de>
1542 * tree-vect-stmts.cc (vectorizable_condition): For
1543 embedded comparisons also handle the case when the target
1544 only provides vec_cmp and vcond_mask.
1546 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
1548 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
1551 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1553 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
1554 (seq_cost_ignoring_scalar_moves): Likewise.
1555 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
1557 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1559 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
1560 (vcage_f32): Likewise.
1561 (vcages_f32): Likewise.
1562 (vcageq_f32): Likewise.
1563 (vcaged_f64): Likewise.
1564 (vcageq_f64): Likewise.
1565 (vcagts_f32): Likewise.
1566 (vcagt_f32): Likewise.
1567 (vcagt_f64): Likewise.
1568 (vcagtq_f32): Likewise.
1569 (vcagtd_f64): Likewise.
1570 (vcagtq_f64): Likewise.
1571 (vcale_f32): Likewise.
1572 (vcale_f64): Likewise.
1573 (vcaled_f64): Likewise.
1574 (vcales_f32): Likewise.
1575 (vcaleq_f32): Likewise.
1576 (vcaleq_f64): Likewise.
1577 (vcalt_f32): Likewise.
1578 (vcalt_f64): Likewise.
1579 (vcaltd_f64): Likewise.
1580 (vcaltq_f32): Likewise.
1581 (vcaltq_f64): Likewise.
1582 (vcalts_f32): Likewise.
1584 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
1588 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
1589 int to const int or const int to const unsigned int.
1590 (_mm512_mask_srli_epi16): Ditto.
1591 (_mm512_slli_epi16): Ditto.
1592 (_mm512_mask_slli_epi16): Ditto.
1593 (_mm512_maskz_slli_epi16): Ditto.
1594 (_mm512_srai_epi16): Ditto.
1595 (_mm512_mask_srai_epi16): Ditto.
1596 (_mm512_maskz_srai_epi16): Ditto.
1597 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
1598 (_mm512_mask_slli_epi64): Ditto.
1599 (_mm512_maskz_slli_epi64): Ditto.
1600 (_mm512_srli_epi64): Ditto.
1601 (_mm512_mask_srli_epi64): Ditto.
1602 (_mm512_maskz_srli_epi64): Ditto.
1603 (_mm512_srai_epi64): Ditto.
1604 (_mm512_mask_srai_epi64): Ditto.
1605 (_mm512_maskz_srai_epi64): Ditto.
1606 (_mm512_slli_epi32): Ditto.
1607 (_mm512_mask_slli_epi32): Ditto.
1608 (_mm512_maskz_slli_epi32): Ditto.
1609 (_mm512_srli_epi32): Ditto.
1610 (_mm512_mask_srli_epi32): Ditto.
1611 (_mm512_maskz_srli_epi32): Ditto.
1612 (_mm512_srai_epi32): Ditto.
1613 (_mm512_mask_srai_epi32): Ditto.
1614 (_mm512_maskz_srai_epi32): Ditto.
1615 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
1616 (_mm256_maskz_srai_epi16): Ditto.
1617 (_mm_mask_srai_epi16): Ditto.
1618 (_mm_maskz_srai_epi16): Ditto.
1619 (_mm256_mask_slli_epi16): Ditto.
1620 (_mm256_maskz_slli_epi16): Ditto.
1621 (_mm_mask_slli_epi16): Ditto.
1622 (_mm_maskz_slli_epi16): Ditto.
1623 (_mm_maskz_srli_epi16): Ditto.
1624 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
1625 (_mm256_maskz_srli_epi32): Ditto.
1626 (_mm_mask_srli_epi32): Ditto.
1627 (_mm_maskz_srli_epi32): Ditto.
1628 (_mm256_mask_srli_epi64): Ditto.
1629 (_mm256_maskz_srli_epi64): Ditto.
1630 (_mm_mask_srli_epi64): Ditto.
1631 (_mm_maskz_srli_epi64): Ditto.
1632 (_mm256_mask_srai_epi32): Ditto.
1633 (_mm256_maskz_srai_epi32): Ditto.
1634 (_mm_mask_srai_epi32): Ditto.
1635 (_mm_maskz_srai_epi32): Ditto.
1636 (_mm256_srai_epi64): Ditto.
1637 (_mm256_mask_srai_epi64): Ditto.
1638 (_mm256_maskz_srai_epi64): Ditto.
1639 (_mm_srai_epi64): Ditto.
1640 (_mm_mask_srai_epi64): Ditto.
1641 (_mm_maskz_srai_epi64): Ditto.
1642 (_mm_mask_slli_epi32): Ditto.
1643 (_mm_maskz_slli_epi32): Ditto.
1644 (_mm_mask_slli_epi64): Ditto.
1645 (_mm_maskz_slli_epi64): Ditto.
1646 (_mm256_mask_slli_epi32): Ditto.
1647 (_mm256_maskz_slli_epi32): Ditto.
1648 (_mm256_mask_slli_epi64): Ditto.
1649 (_mm256_maskz_slli_epi64): Ditto.
1651 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1653 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
1656 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1658 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
1659 * data-streamer-out.cc (streamer_write_vrange): Same.
1660 * value-range.h (class vrange): Make streamer_write_vrange a friend.
1662 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1664 * value-query.cc (range_query::get_tree_range): Set NAN directly
1666 * value-range.cc (frange::set): Assert that bounds are not NAN.
1668 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1670 * value-range.cc (add_vrange): Handle known NANs.
1672 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1674 * value-range.h (frange::set_nan): New.
1676 2023-05-25 Alexandre Oliva <oliva@adacore.com>
1679 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
1680 requires stricter alignment than MEM's.
1682 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1684 PR tree-optimization/107822
1685 PR tree-optimization/107986
1686 * Makefile.in (OBJS): Add gimple-range-phi.o.
1687 * gimple-range-cache.h (ranger_cache::m_estimate): New
1688 phi_analyzer pointer member.
1689 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
1690 phi_analyzer if no loop info is available.
1691 * gimple-range-phi.cc: New file.
1692 * gimple-range-phi.h: New file.
1693 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
1695 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1697 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
1699 (fold_range): Add range_query parameter.
1700 (fur_relation::fur_relation): New.
1701 (fur_relation::trio): New.
1702 (fur_relation::register_relation): New.
1703 (fold_relations): New.
1704 * gimple-range-fold.h (fold_range): Adjust prototypes.
1705 (fold_relations): New.
1707 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1709 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
1710 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
1711 (ranger_cache::const_query): New.
1712 * gimple-range.cc (gimple_ranger::const_query): New.
1713 * gimple-range.h (gimple_ranger::const_query): New prototype.
1715 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1717 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
1718 (ssa_cache::dump_range_query): Delete.
1719 (ssa_lazy_cache::dump_range_query): Delete.
1720 (ssa_lazy_cache::get_range): Move from header file.
1721 (ssa_lazy_cache::clear_range): ditto.
1722 (ssa_lazy_cache::clear): Ditto.
1723 * gimple-range-cache.h (class ssa_cache): Virtualize.
1724 (class ssa_lazy_cache): Inherit and virtualize.
1726 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
1728 * value-range.h (vrange::kind): Remove.
1730 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
1732 PR middle-end/109840
1733 * match.pd <popcount optimizations>: Preserve zero-extension when
1734 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
1735 popcount((T)x), so the popcount's argument keeps the same type.
1736 <parity optimizations>: Likewise preserve extensions when
1737 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
1738 parity((T)x), so that the parity's argument type is the same.
1740 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
1742 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
1743 (ipcp_store_vr_results): Same.
1744 * ipa-prop.cc (ipa_vr::ipa_vr): New.
1745 (ipa_vr::get_vrange): New.
1746 (ipa_vr::set_unknown): New.
1747 (ipa_vr::streamer_read): New.
1748 (ipa_vr::streamer_write): New.
1749 (write_ipcp_transformation_info): Use new ipa_vr API.
1750 (read_ipcp_transformation_info): Same.
1751 (ipa_vr::nonzero_p): Delete.
1752 (ipcp_update_vr): Use new ipa_vr API.
1753 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
1754 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
1756 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
1758 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
1759 silence overflow warnings later on.
1761 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
1763 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1764 Remove handling of V8QImode.
1765 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
1766 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
1767 (v<insn>v4qi3): Ditto.
1768 * config/i386/sse.md (v<insn>v8qi3): Remove.
1770 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1773 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
1774 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
1775 (aarch64_simd_ashr<mode>): Rename to...
1776 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
1777 (aarch64_simd_imm_shl<mode>): Rename to...
1778 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
1779 (aarch64_simd_reg_sshl<mode>): Rename to...
1780 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
1781 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
1782 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
1783 (aarch64_simd_reg_shl<mode>_signed): Rename to...
1784 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
1785 (vec_shr_<mode>): Rename to...
1786 (vec_shr_<mode><vczle><vczbe>): ... This.
1787 (aarch64_<sur>shl<mode>): Rename to...
1788 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
1789 (aarch64_<sur>q<r>shl<mode>): Rename to...
1790 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
1792 2023-05-24 Richard Biener <rguenther@suse.de>
1795 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
1796 Perform final vector composition using
1797 ix86_expand_vector_init_general instead of setting
1798 the highpart and lowpart which causes spilling.
1800 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1802 PR tree-optimization/109695
1803 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
1805 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
1806 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
1807 flag to set_global_range.
1808 (gimple_ranger::prefill_stmt_dependencies): Ditto.
1810 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1812 PR tree-optimization/109695
1813 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
1815 (temporal_cache::current_p): Check always_current method.
1816 (temporal_cache::set_always_current): Add param and set value
1818 (temporal_cache::always_current_p): New.
1819 (ranger_cache::get_global_range): Adjust.
1820 (ranger_cache::set_global_range): set always current first.
1822 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1824 PR tree-optimization/109695
1825 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
1826 fold_range with global query to choose an initial value.
1828 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1830 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
1833 2023-05-24 Richard Biener <rguenther@suse.de>
1835 PR tree-optimization/109849
1836 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
1837 expressions but take the first sets.
1839 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
1842 * doc/gm2.texi (High procedure function): New node.
1843 (Using): New menu entry for High procedure function.
1845 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
1847 PR rtl-optimization/109940
1848 * early-remat.cc (postorder_index): Rename to...
1849 (rpo_index): ...this.
1850 (compare_candidates): Sort by decreasing rpo_index rather than
1851 increasing postorder_index.
1852 (early_remat::sort_candidates): Calculate the forward RPO from
1854 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
1855 rather than DF_BACKWARD in reverse.
1857 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1860 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
1861 qualifier_none for the return operand.
1863 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1865 * config/riscv/autovec.md (<optab><mode>3): New pattern.
1866 (one_cmpl<mode>2): Ditto.
1867 (*<optab>not<mode>): Ditto.
1868 (*n<optab><mode>): Ditto.
1869 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
1872 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
1874 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
1875 calculation on n_perms by considering nvectors_per_build.
1877 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1878 Richard Sandiford <richard.sandiford@arm.com>
1880 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
1881 (vec_cmp<mode><vm>): New pattern.
1882 (vec_cmpu<mode><vm>): New pattern.
1883 (vcond<V:mode><VI:mode>): New pattern.
1884 (vcondu<V:mode><VI:mode>): New pattern.
1885 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
1886 (emit_vlmax_merge_insn): New function.
1887 (emit_vlmax_cmp_insn): Ditto.
1888 (emit_vlmax_cmp_mu_insn): Ditto.
1889 (expand_vec_cmp): Ditto.
1890 (expand_vec_cmp_float): Ditto.
1891 (expand_vcond): Ditto.
1892 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
1893 (emit_vlmax_cmp_insn): Ditto.
1894 (emit_vlmax_cmp_mu_insn): Ditto.
1895 (get_cmp_insn_code): Ditto.
1896 (expand_vec_cmp): Ditto.
1897 (expand_vec_cmp_float): Ditto.
1898 (expand_vcond): Ditto.
1900 2023-05-24 Pan Li <pan2.li@intel.com>
1902 * config/riscv/genrvv-type-indexer.cc (main): Add
1903 unsigned_eew*_lmul1_interpret for indexer.
1904 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
1905 Register vuint*m1_t interpret function.
1906 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
1907 New macro for vuint8m1_t.
1908 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1909 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1910 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1911 (vbool1_t): Add to unsigned_eew*_interpret_ops.
1912 (vbool2_t): Likewise.
1913 (vbool4_t): Likewise.
1914 (vbool8_t): Likewise.
1915 (vbool16_t): Likewise.
1916 (vbool32_t): Likewise.
1917 (vbool64_t): Likewise.
1918 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
1919 New macro for vuint*m1_t.
1920 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1921 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1922 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1923 (required_extensions_p): Add vuint*m1_t interpret case.
1924 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
1925 Add vuint*m1_t interpret to base type.
1926 (unsigned_eew16_lmul1_interpret): Likewise.
1927 (unsigned_eew32_lmul1_interpret): Likewise.
1928 (unsigned_eew64_lmul1_interpret): Likewise.
1930 2023-05-24 Pan Li <pan2.li@intel.com>
1932 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
1933 for the eew size list.
1934 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
1935 (main): Add signed_eew*_lmul1_interpret for indexer.
1936 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
1937 Register vint*m1_t interpret function.
1938 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
1939 New macro for vint8m1_t.
1940 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1941 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1942 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1943 (vbool1_t): Add to signed_eew*_interpret_ops.
1944 (vbool2_t): Likewise.
1945 (vbool4_t): Likewise.
1946 (vbool8_t): Likewise.
1947 (vbool16_t): Likewise.
1948 (vbool32_t): Likewise.
1949 (vbool64_t): Likewise.
1950 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
1951 New macro for vint*m1_t.
1952 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1953 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1954 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1955 (required_extensions_p): Add vint8m1_t interpret case.
1956 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
1957 Add vint*m1_t interpret to base type.
1958 (signed_eew16_lmul1_interpret): Likewise.
1959 (signed_eew32_lmul1_interpret): Likewise.
1960 (signed_eew64_lmul1_interpret): Likewise.
1962 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1964 * config/riscv/autovec.md: Adjust for new interface.
1965 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
1966 (emit_nonvlmax_insn): Add AVL operand.
1967 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
1968 (emit_nonvlmax_insn): Add AVL operand.
1969 (sew64_scalar_helper): Adjust for new interface.
1970 (expand_tuple_move): Ditto.
1971 * config/riscv/vector.md: Ditto.
1973 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1975 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
1976 (expand_const_vector): Ditto.
1977 (legitimize_move): Ditto.
1978 (sew64_scalar_helper): Ditto.
1979 (expand_tuple_move): Ditto.
1980 (expand_vector_init_insert_elems): Ditto.
1981 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
1983 2023-05-24 liuhongt <hongtao.liu@intel.com>
1986 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
1987 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
1988 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
1989 (ix86_masked_all_ones): Handle 64-bit mask.
1990 * config/i386/i386-builtin.def: Replace icode of related
1991 non-mask simd abs builtins with CODE_FOR_nothing.
1993 2023-05-23 Martin Uecker <uecker@tugraz.at>
1996 * function.cc (gimplify_parm_type): Remove function.
1997 (gimplify_parameters): Call gimplify_type_sizes.
1999 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2001 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
2002 and change to also accept '*subx' pattern.
2005 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2007 * config/xtensa/predicates.md (addsub_operator): New.
2008 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
2009 *extzvsi-1bit_addsubx): New insn_and_split patterns.
2010 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
2011 Add a special case about ifcvt 'noce_try_cmove()' to handle
2012 constant loads that do not fit into signed 12 bits in the
2013 patterns added above.
2015 2023-05-23 Richard Biener <rguenther@suse.de>
2017 PR tree-optimization/109747
2018 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
2019 the SLP node only once to the cost hook.
2021 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
2023 * config/avr/avr.cc (avr_insn_cost): New static function.
2024 (TARGET_INSN_COST): Define to that function.
2026 2023-05-23 Richard Biener <rguenther@suse.de>
2029 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
2030 For vector construction or splats apply GPR->XMM move
2031 costing. QImode memory can be handled directly only
2034 2023-05-23 Richard Biener <rguenther@suse.de>
2036 PR tree-optimization/108752
2037 * tree-vect-stmts.cc (vectorizable_operation): For bit
2038 operations with generic word_mode vectors do not cost
2039 an extra stmt. For plus, minus and negate also cost the
2040 constant materialization.
2042 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
2044 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
2045 Call ix86_expand_vec_shift_qihi_constant for shifts
2046 with constant count operand.
2047 * config/i386/i386.cc (ix86_shift_rotate_cost):
2048 Handle V4QImode and V8QImode.
2049 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
2050 (<insn>v4qi3): Ditto.
2052 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2054 * config/riscv/vector.md: Add mode.
2056 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
2058 PR tree-optimization/109934
2059 * value-range.cc (irange::invert): Remove buggy special case.
2061 2023-05-23 Richard Biener <rguenther@suse.de>
2063 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
2066 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
2069 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
2070 subregs between any scalars that are 64 bits or smaller.
2071 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
2072 (bits_etype): New int attribute.
2073 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
2074 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
2075 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
2077 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
2079 * doc/md.texi: Document that <FOO> can be used to refer to the
2080 numerical value of an int iterator FOO. Tweak other parts of
2081 the int iterator documentation.
2082 * read-rtl.cc (iterator_group::has_self_attr): New field.
2083 (map_attr_string): When has_self_attr is true, make <FOO>
2084 expand to the current value of iterator FOO.
2085 (initialize_iterators): Set has_self_attr for int iterators.
2087 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2089 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
2090 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
2091 (RVV_UNOP_NUM): New macro.
2092 (RVV_BINOP_NUM): Ditto.
2093 (legitimize_move): Refactor the framework of RVV auto-vectorization.
2094 (emit_vlmax_op): Ditto.
2095 (emit_vlmax_reg_op): Ditto.
2096 (emit_len_op): Ditto.
2097 (emit_len_binop): Ditto.
2098 (emit_vlmax_tany_many): Ditto.
2099 (emit_nonvlmax_tany_many): Ditto.
2100 (sew64_scalar_helper): Ditto.
2101 (expand_tuple_move): Ditto.
2102 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
2103 (emit_pred_binop): Ditto.
2104 (emit_vlmax_op): Ditto.
2105 (emit_vlmax_tany_many): New function.
2106 (emit_len_op): Remove.
2107 (emit_nonvlmax_tany_many): New function.
2108 (emit_vlmax_reg_op): Remove.
2109 (emit_len_binop): Ditto.
2110 (emit_index_op): Ditto.
2111 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
2112 (expand_const_vector): Ditto.
2113 (legitimize_move): Ditto.
2114 (sew64_scalar_helper): Ditto.
2115 (expand_tuple_move): Ditto.
2116 (expand_vector_init_insert_elems): Ditto.
2117 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
2118 * config/riscv/vector.md: Ditto.
2120 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2123 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
2124 and constraint for operand 0.
2125 (add_vec_concat_subst_be): Likewise.
2127 2023-05-23 Richard Biener <rguenther@suse.de>
2129 PR tree-optimization/109849
2130 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
2131 and use that to determine what to hoist.
2133 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
2135 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
2136 specific treatment for bit-fields only if they have an integral type
2137 and filter out non-integral bit-fields that do not start and end on
2140 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
2142 PR tree-optimization/109920
2143 * value-range.h (RESIZABLE>::~int_range): Use delete[].
2145 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
2147 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
2148 calcuation of integer vector mode costs to reflect generated
2149 instruction sequences of different integer vector modes and
2150 different target ABIs. Remove "speed" function argument.
2151 (ix86_rtx_costs): Update call for removed function argument.
2152 (ix86_vector_costs::add_stmt_cost): Ditto.
2154 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
2156 * value-range.h (class Value_Range): Implement set_zero,
2157 set_nonzero, and nonzero_p.
2159 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
2161 * config/i386/i386.cc (ix86_multiplication_cost): Add
2162 the cost of a memory read to the cost of V?QImode sequences.
2164 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2166 * config/riscv/riscv-v.cc: Add "m_" prefix.
2168 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2170 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
2171 multiple-rgroup of length.
2172 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2173 (vectorizable_load): Ditto.
2174 * tree-vectorizer.h (vect_get_loop_len): Ditto.
2176 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2178 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
2181 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
2183 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
2184 handling for the case index == count.
2186 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
2189 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
2190 Don't fold to XOR / AND / XOR if just one bit is copied to the
2193 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
2195 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
2196 builtin for bit reversal using brev instruction.
2197 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
2198 NVPTX_BUILTIN_BREVLL.
2199 (nvptx_init_builtins): Define "brev" and "brevll".
2200 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
2201 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
2202 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
2203 section, document __builtin_nvptx_brev{,ll}.
2205 2023-05-21 Jakub Jelinek <jakub@redhat.com>
2207 PR tree-optimization/109505
2208 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
2209 Combine successive equal operations with constants,
2210 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
2211 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
2214 2023-05-21 Andrew Pinski <apinski@marvell.com>
2216 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
2218 2023-05-21 Pan Li <pan2.li@intel.com>
2220 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
2221 rest bool size, aka 2, 4, 8, 16, 32, 64.
2222 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
2223 Register vbool[2|4|8|16|32|64] interpret function.
2224 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
2225 New macro for vbool2_t.
2226 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
2227 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
2228 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
2229 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
2230 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
2231 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
2232 (vint16m1_t): Likewise.
2233 (vint32m1_t): Likewise.
2234 (vint64m1_t): Likewise.
2235 (vuint8m1_t): Likewise.
2236 (vuint16m1_t): Likewise.
2237 (vuint32m1_t): Likewise.
2238 (vuint64m1_t): Likewise.
2239 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
2240 New macro for vbool2_t.
2241 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
2242 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
2243 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
2244 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
2245 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
2246 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
2247 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
2248 vbool2_t interprect to base type.
2249 (bool4_interpret): Likewise.
2250 (bool8_interpret): Likewise.
2251 (bool16_interpret): Likewise.
2252 (bool32_interpret): Likewise.
2253 (bool64_interpret): Likewise.
2255 2023-05-21 Andrew Pinski <apinski@marvell.com>
2257 PR middle-end/109919
2258 * expr.cc (expand_single_bit_test): Don't use the
2259 target for expand_expr.
2261 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
2263 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
2266 2023-05-20 Pan Li <pan2.li@intel.com>
2268 * mode-switching.cc (entity_map): Initialize the array to zero.
2271 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
2274 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
2275 Remove superfluous "parallel" in insn pattern.
2276 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
2277 printing error text to assembly.
2279 2023-05-20 Andrew Pinski <apinski@marvell.com>
2281 * expr.cc (fold_single_bit_test): Rename to ...
2282 (expand_single_bit_test): This and expand directly.
2283 (do_store_flag): Update for the rename function.
2285 2023-05-20 Andrew Pinski <apinski@marvell.com>
2287 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
2288 instead of shift/and.
2290 2023-05-20 Andrew Pinski <apinski@marvell.com>
2292 * expr.cc (fold_single_bit_test): Add an assert
2293 and simplify based on code being NE_EXPR or EQ_EXPR.
2295 2023-05-20 Andrew Pinski <apinski@marvell.com>
2297 * expr.cc (fold_single_bit_test): Take inner and bitnum
2298 instead of arg0 and arg1. Update the code.
2299 (do_store_flag): Don't create a tree when calling
2300 fold_single_bit_test instead just call it with the bitnum
2303 2023-05-20 Andrew Pinski <apinski@marvell.com>
2305 * expr.cc (fold_single_bit_test): Use get_def_for_expr
2306 instead of checking the inner's code.
2308 2023-05-20 Andrew Pinski <apinski@marvell.com>
2310 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
2311 (fold_single_bit_test): This and simplify.
2313 2023-05-20 Andrew Pinski <apinski@marvell.com>
2315 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
2317 (fold_single_bit_test): Likewise.
2318 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
2319 (fold_single_bit_test): Likewise and make static.
2320 * fold-const.h (fold_single_bit_test): Remove declaration.
2322 2023-05-20 Die Li <lidie@eswincomputing.com>
2324 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
2327 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
2329 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
2331 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
2334 * config/riscv/bitmanip.md
2335 (<bitmanip_optab>disi2): Match with any_extend.
2336 (<bitmanip_optab>disi2_sext): New pattern to match
2337 with sign extend using an ANDI instruction.
2339 2023-05-19 Nathan Sidwell <nathan@acm.org>
2342 * opts.h (handle_deferred_dump_options): Declare.
2343 * opts-global.cc (handle_common_deferred_options): Do not handle
2345 (handle_deferred_dump_options): New.
2346 * toplev.cc (toplev::main): Call it after plugin init.
2348 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
2350 * config/riscv/constraints.md (DsS, DsD): Restore agreement
2351 with shiftm1 mode attribute.
2353 2023-05-19 Andrew Pinski <apinski@marvell.com>
2356 * gcc.cc (default_compilers["@c-header"]): Add %w
2357 after the --output-pch.
2359 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
2361 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
2362 to hival, ASHIFT the corresponding regs.
2364 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
2366 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
2368 2023-05-19 Jakub Jelinek <jakub@redhat.com>
2370 PR tree-optimization/105776
2371 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
2372 non-NULL, allow division statement to have a cast as single imm use
2373 rather than comparison/condition.
2374 (match_arith_overflow): In that case remove the cast stmt in addition
2375 to the division statement.
2377 2023-05-19 Jakub Jelinek <jakub@redhat.com>
2379 PR tree-optimization/101856
2380 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
2381 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
2382 support it but umul_highpart_optab does.
2384 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
2386 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
2387 of tree_to_shwi on array indices. Minor tweaks.
2389 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2391 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
2392 * attribs.cc (diag_attr_exclusions): Ditto.
2393 (decl_attributes): Ditto.
2394 (build_type_attribute_qual_variant): Ditto.
2395 * builtins.cc (fold_builtin_carg): Ditto.
2396 (fold_builtin_next_arg): Ditto.
2397 (do_mpc_arg2): Ditto.
2398 * cfgexpand.cc (expand_return): Ditto.
2399 * cgraph.h (decl_in_symtab_p): Ditto.
2400 (symtab_node::get_create): Ditto.
2401 * dwarf2out.cc (base_type_die): Ditto.
2402 (implicit_ptr_descriptor): Ditto.
2403 (gen_array_type_die): Ditto.
2404 (gen_type_die_with_usage): Ditto.
2405 (optimize_location_into_implicit_ptr): Ditto.
2406 * expr.cc (do_store_flag): Ditto.
2407 * fold-const.cc (negate_expr_p): Ditto.
2408 (fold_negate_expr_1): Ditto.
2409 (fold_convert_const): Ditto.
2410 (fold_convert_loc): Ditto.
2411 (constant_boolean_node): Ditto.
2412 (fold_binary_op_with_conditional_arg): Ditto.
2413 (build_fold_addr_expr_with_type_loc): Ditto.
2414 (fold_comparison): Ditto.
2415 (fold_checksum_tree): Ditto.
2416 (tree_unary_nonnegative_warnv_p): Ditto.
2417 (integer_valued_real_unary_p): Ditto.
2418 (fold_read_from_constant_string): Ditto.
2419 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
2420 * gimple-expr.cc (useless_type_conversion_p): Ditto.
2421 (is_gimple_reg): Ditto.
2422 (is_gimple_asm_val): Ditto.
2423 (mark_addressable): Ditto.
2424 * gimple-expr.h (is_gimple_variable): Ditto.
2425 (virtual_operand_p): Ditto.
2426 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
2427 * gimplify.cc (gimplify_bind_expr): Ditto.
2428 (gimplify_return_expr): Ditto.
2429 (gimple_add_padding_init_for_auto_var): Ditto.
2430 (gimplify_addr_expr): Ditto.
2431 (omp_add_variable): Ditto.
2432 (omp_notice_variable): Ditto.
2433 (omp_get_base_pointer): Ditto.
2434 (omp_strip_components_and_deref): Ditto.
2435 (omp_strip_indirections): Ditto.
2436 (omp_accumulate_sibling_list): Ditto.
2437 (omp_build_struct_sibling_lists): Ditto.
2438 (gimplify_adjust_omp_clauses_1): Ditto.
2439 (gimplify_adjust_omp_clauses): Ditto.
2440 (gimplify_omp_for): Ditto.
2441 (goa_lhs_expr_p): Ditto.
2442 (gimplify_one_sizepos): Ditto.
2443 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
2444 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
2445 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
2446 (propagate_controlled_uses): Ditto.
2447 * ipa-sra.cc (type_prevails_p): Ditto.
2448 (scan_expr_access): Ditto.
2449 * optabs-tree.cc (optab_for_tree_code): Ditto.
2450 * toplev.cc (wrapup_global_declaration_1): Ditto.
2451 * trans-mem.cc (transaction_invariant_address_p): Ditto.
2452 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
2453 (verify_gimple_comparison): Ditto.
2454 (verify_gimple_assign_binary): Ditto.
2455 (verify_gimple_assign_single): Ditto.
2456 * tree-complex.cc (get_component_ssa_name): Ditto.
2457 * tree-emutls.cc (lower_emutls_2): Ditto.
2458 * tree-inline.cc (copy_tree_body_r): Ditto.
2459 (estimate_move_cost): Ditto.
2460 (copy_decl_for_dup_finish): Ditto.
2461 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
2462 (note_nonlocal_vla_type): Ditto.
2463 (convert_local_omp_clauses): Ditto.
2464 (remap_vla_decls): Ditto.
2465 (fixup_vla_decls): Ditto.
2466 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
2467 * tree-pretty-print.cc (print_declaration): Ditto.
2468 (print_call_name): Ditto.
2469 * tree-sra.cc (compare_access_positions): Ditto.
2470 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
2471 * tree-ssa-ccp.cc (get_default_value): Ditto.
2472 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
2473 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
2474 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
2475 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
2476 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
2477 * tree-ssa-sink.cc (statement_sink_location): Ditto.
2478 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
2479 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
2480 * tree-ssa-uninit.cc (warn_uninit): Ditto.
2481 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
2482 (non_rewritable_mem_ref_base): Ditto.
2483 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
2484 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
2485 * tree-vect-generic.cc (do_binop): Ditto.
2487 * tree-vect-stmts.cc (vect_init_vector): Ditto.
2488 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
2489 * tree.cc (sign_mask_for): Ditto.
2490 (verify_type_variant): Ditto.
2491 (gimple_canonical_types_compatible_p): Ditto.
2492 (verify_type): Ditto.
2493 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
2494 * var-tracking.cc (prepare_call_arguments): Ditto.
2495 (vt_add_function_parameters): Ditto.
2496 * varasm.cc (decode_addr_const): Ditto.
2498 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2500 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
2501 (lower_reduction_clauses): Ditto.
2502 (lower_send_clauses): Ditto.
2503 (lower_omp_task_reductions): Ditto.
2504 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
2505 (worker_single_copy): Ditto.
2506 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
2507 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
2509 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2511 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
2513 (lto_read_body_or_constructor): Ditto.
2514 * lto-streamer-out.cc (tree_is_indexable): Ditto.
2515 (lto_output_var_decl_ref): Ditto.
2516 (DFS::DFS_write_tree_body): Ditto.
2518 (write_symbol_extension_info): Ditto.
2520 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2522 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
2523 defines from tree.h.
2524 (aarch64_mangle_type): Ditto.
2525 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
2526 (alpha_gimplify_va_arg_1): Ditto.
2527 * config/arc/arc.cc (arc_encode_section_info): Ditto.
2528 (arc_is_aux_reg_p): Ditto.
2529 (arc_is_uncached_mem_p): Ditto.
2530 (arc_handle_aux_attribute): Ditto.
2531 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
2532 (arm_handle_cmse_nonsecure_call): Ditto.
2533 (arm_set_default_type_attributes): Ditto.
2534 (arm_is_segment_info_known): Ditto.
2535 (arm_mangle_type): Ditto.
2536 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
2537 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
2538 (avr_decl_absdata_p): Ditto.
2539 (avr_insert_attributes): Ditto.
2540 (avr_section_type_flags): Ditto.
2541 (avr_encode_section_info): Ditto.
2542 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
2543 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
2544 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
2545 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
2546 (csky_mangle_type): Ditto.
2547 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
2548 * config/darwin.cc (is_objc_metadata): Ditto.
2549 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
2550 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
2551 * config/frv/frv.cc (frv_emit_movsi): Ditto.
2552 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
2553 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
2554 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
2555 * config/i386/i386-expand.cc: Ditto.
2556 * config/i386/i386.cc (type_natural_mode): Ditto.
2557 (ix86_function_arg): Ditto.
2558 (ix86_data_alignment): Ditto.
2559 (ix86_local_alignment): Ditto.
2560 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
2561 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
2562 (i386_pe_type_dllexport_p): Ditto.
2563 (i386_pe_adjust_class_at_definition): Ditto.
2564 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
2565 (i386_pe_binds_local_p): Ditto.
2566 (i386_pe_section_type_flags): Ditto.
2567 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
2568 (ia64_gimplify_va_arg): Ditto.
2569 (ia64_in_small_data_p): Ditto.
2570 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
2571 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
2572 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
2573 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
2574 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
2575 (mcore_encode_section_info): Ditto.
2576 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
2577 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
2578 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
2579 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
2580 (pass_in_memory): Ditto.
2581 (nvptx_generate_vector_shuffle): Ditto.
2582 (nvptx_lockless_update): Ditto.
2583 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
2584 (pa_function_value): Ditto.
2585 (pa_function_arg): Ditto.
2586 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
2587 (TEXT_SPACE_P): Ditto.
2588 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
2589 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
2590 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
2591 (riscv_mangle_type): Ditto.
2592 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
2593 (rl78_addsi3_internal): Ditto.
2594 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
2595 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
2596 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
2597 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
2598 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
2599 (rs6000_function_arg_advance_1): Ditto.
2600 (rs6000_function_arg): Ditto.
2601 (rs6000_pass_by_reference): Ditto.
2602 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
2603 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
2604 (rs6000_set_default_type_attributes): Ditto.
2605 (rs6000_elf_in_small_data_p): Ditto.
2606 (IN_NAMED_SECTION): Ditto.
2607 (rs6000_xcoff_encode_section_info): Ditto.
2608 (rs6000_function_value): Ditto.
2609 (invalid_arg_for_unprototyped_fn): Ditto.
2610 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
2611 (s390_vec_n_elem): Ditto.
2612 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
2613 (s390_function_arg_integer): Ditto.
2614 (s390_return_in_memory): Ditto.
2615 (s390_encode_section_info): Ditto.
2616 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
2617 (sh_function_value): Ditto.
2618 * config/sol2.cc (solaris_insert_attributes): Ditto.
2619 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
2620 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
2621 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
2622 (xstormy16_handle_below100_attribute): Ditto.
2623 * config/v850/v850.cc (v850_encode_section_info): Ditto.
2624 (v850_insert_attributes): Ditto.
2625 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
2626 (visium_return_in_memory): Ditto.
2627 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
2629 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
2631 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
2632 (ix86_expand_vecop_qihi): Add op2vec bool variable.
2633 Do not set REG_EQUAL note.
2634 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
2636 * config/i386/i386.cc (ix86_multiplication_cost): Handle
2637 V4QImode and V8QImode.
2638 * config/i386/mmx.md (mulv8qi3): New expander.
2640 * config/i386/sse.md (mulv8qi3): Remove.
2642 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
2644 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
2646 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
2649 * config.gcc: Use = operator instead of ==.
2651 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
2654 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
2655 * configure.ac: Likewise.
2656 * configure: Regenerate.
2658 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2660 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
2661 (__ARM_mve_coerce1): Remove.
2662 (__ARM_mve_coerce2): Remove.
2663 (__ARM_mve_coerce3): Remove.
2664 (__ARM_mve_coerce_i_scalar): New.
2665 (__ARM_mve_coerce_s8_ptr): New.
2666 (__ARM_mve_coerce_u8_ptr): New.
2667 (__ARM_mve_coerce_s16_ptr): New.
2668 (__ARM_mve_coerce_u16_ptr): New.
2669 (__ARM_mve_coerce_s32_ptr): New.
2670 (__ARM_mve_coerce_u32_ptr): New.
2671 (__ARM_mve_coerce_s64_ptr): New.
2672 (__ARM_mve_coerce_u64_ptr): New.
2673 (__ARM_mve_coerce_f_scalar): New.
2674 (__ARM_mve_coerce_f16_ptr): New.
2675 (__ARM_mve_coerce_f32_ptr): New.
2676 (__arm_vst4q): Change _coerce_ overloads.
2677 (__arm_vbicq): Change _coerce_ overloads.
2678 (__arm_vld1q): Change _coerce_ overloads.
2679 (__arm_vld1q_z): Change _coerce_ overloads.
2680 (__arm_vld2q): Change _coerce_ overloads.
2681 (__arm_vld4q): Change _coerce_ overloads.
2682 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
2683 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
2684 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
2685 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
2686 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
2687 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
2688 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
2689 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
2690 (__arm_vst1q_p): Change _coerce_ overloads.
2691 (__arm_vst2q): Change _coerce_ overloads.
2692 (__arm_vst1q): Change _coerce_ overloads.
2693 (__arm_vstrhq): Change _coerce_ overloads.
2694 (__arm_vstrhq_p): Change _coerce_ overloads.
2695 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
2696 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
2697 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
2698 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
2699 (__arm_vstrwq_p): Change _coerce_ overloads.
2700 (__arm_vstrwq): Change _coerce_ overloads.
2701 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
2702 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
2703 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
2704 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
2705 (__arm_vsetq_lane): Change _coerce_ overloads.
2706 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
2707 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
2708 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
2709 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
2710 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
2711 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
2712 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
2713 (__arm_vidupq_x_u8): Change _coerce_ overloads.
2714 (__arm_vddupq_x_u8): Change _coerce_ overloads.
2715 (__arm_vidupq_x_u16): Change _coerce_ overloads.
2716 (__arm_vddupq_x_u16): Change _coerce_ overloads.
2717 (__arm_vidupq_x_u32): Change _coerce_ overloads.
2718 (__arm_vddupq_x_u32): Change _coerce_ overloads.
2719 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
2720 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
2721 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
2722 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
2723 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
2724 (__arm_vidupq_u16): Change _coerce_ overloads.
2725 (__arm_vidupq_u32): Change _coerce_ overloads.
2726 (__arm_vidupq_u8): Change _coerce_ overloads.
2727 (__arm_vddupq_u16): Change _coerce_ overloads.
2728 (__arm_vddupq_u32): Change _coerce_ overloads.
2729 (__arm_vddupq_u8): Change _coerce_ overloads.
2730 (__arm_viwdupq_m): Change _coerce_ overloads.
2731 (__arm_viwdupq_u16): Change _coerce_ overloads.
2732 (__arm_viwdupq_u32): Change _coerce_ overloads.
2733 (__arm_viwdupq_u8): Change _coerce_ overloads.
2734 (__arm_vdwdupq_m): Change _coerce_ overloads.
2735 (__arm_vdwdupq_u16): Change _coerce_ overloads.
2736 (__arm_vdwdupq_u32): Change _coerce_ overloads.
2737 (__arm_vdwdupq_u8): Change _coerce_ overloads.
2738 (__arm_vstrbq): Change _coerce_ overloads.
2739 (__arm_vstrbq_p): Change _coerce_ overloads.
2740 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
2741 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
2742 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
2743 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
2744 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
2746 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2748 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
2751 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2753 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
2754 (__arm_vadcq_u32): Likewise.
2755 (__arm_vadcq_m_s32): Likewise.
2756 (__arm_vadcq_m_u32): Likewise.
2757 (__arm_vsbcq_s32): Likewise.
2758 (__arm_vsbcq_u32): Likewise.
2759 (__arm_vsbcq_m_s32): Likewise.
2760 (__arm_vsbcq_m_u32): Likewise.
2761 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
2763 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
2765 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
2766 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
2767 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
2768 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
2769 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
2770 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
2771 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
2772 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
2773 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
2774 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
2775 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
2776 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
2777 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
2778 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
2779 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
2780 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
2781 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
2782 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
2783 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
2784 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
2785 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
2786 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
2787 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
2788 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
2789 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
2790 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
2791 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
2792 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
2793 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
2794 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
2795 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
2796 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
2797 (mve_vorrq_m_f<mode>)
2798 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
2799 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
2800 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
2801 capitalization in the emitted asm.
2803 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
2805 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
2807 (Ri): Move constraint definition from predicates.md.
2808 (Rl): Define new constraint.
2809 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
2811 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
2812 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
2813 op 2. Fix asm output spacing.
2814 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
2815 * config/arm/predicates.md (Ri) Move constraint to constraints.md
2816 (mve_vldrd_immediate): Move it from
2818 (mve_vstrw_immediate): New predicate.
2820 2023-05-18 Pan Li <pan2.li@intel.com>
2821 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2822 Kito Cheng <kito.cheng@sifive.com>
2823 Richard Biener <rguenther@suse.de>
2824 Richard Sandiford <richard.sandiford@arm.com>
2826 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
2827 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
2828 (struct table_elt): Extend machine_mode to 16 bits.
2829 (struct set): Ditto.
2830 * genmodes.cc (emit_mode_wider): Extend type from char to short.
2831 (emit_mode_complex): Ditto.
2832 (emit_mode_inner): Ditto.
2833 (emit_class_narrowest_mode): Ditto.
2834 * genopinit.cc (main): Extend the machine_mode limit.
2835 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
2836 re-ordered the struct fields for padding.
2837 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
2838 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
2839 (get_mode_alignment): Extend type from char to short.
2840 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
2841 removed the ATTRIBUTE_PACKED.
2842 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
2843 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
2844 m_kind to 2 bits and remove m_spare.
2845 * rtl.h (RTX_CODE_BITSIZE): New macro.
2846 (struct rtx_def): Swap both the bit size and location between the
2847 rtx_code and the machine_mode.
2848 (subreg_shape::unique_id): Extend the machine_mode limit.
2849 * rtlanal.h: Extend machine_mode to 16 bits.
2850 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
2851 bits and re-ordered the struct fields for padding.
2852 (struct tree_decl_common): Extend machine_mode to 16 bits.
2854 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
2856 * genrecog.cc (print_nonbool_test): Fix type error of
2857 switch (SUBREG_BYTE (op))'.
2859 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
2861 * common/config/riscv/riscv-common.cc: Remove
2862 trailing spaces on lines.
2863 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
2864 * config/riscv/riscv.h (enum reg_class): Likewise.
2865 * config/riscv/riscv.md: Likewise.
2867 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
2869 * config/pa/pa.md (clear_cache): New.
2871 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
2873 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
2874 parenthesis. Fix misnamed index entry.
2875 <concept>: Fix misnamed index entry.
2877 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
2879 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
2881 (*<optab>si3_mask, *<optab>di3_mask): Here.
2882 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
2883 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
2885 (*<bitmanip_optab>si3_sext_mask): Likewise.
2886 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
2887 and const_di_mask_operand.
2888 (bitmanip_rotate): New iterator.
2889 (bitmanip_optab): Add rotates.
2890 * config/riscv/predicates.md (const_si_mask_operand): Renamed
2891 from const31_operand. Generalize to handle more mask constants.
2892 (const_di_mask_operand): Similarly.
2894 2023-05-17 Jakub Jelinek <jakub@redhat.com>
2897 * config/i386/i386-builtin-types.def (FLOAT128): Use
2898 float128t_type_node rather than float128_type_node.
2900 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
2902 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
2903 FP_CONTRACT_FAST (no functional change).
2905 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
2907 * config/i386/i386.cc (ix86_multiplication_cost): Correct
2908 calcuation of integer vector mode costs to reflect generated
2909 instruction sequences of different integer vector modes and
2910 different target ABIs.
2912 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2914 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
2915 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
2916 (riscv_mode_needed): Ditto.
2917 (riscv_mode_after): Ditto.
2918 (riscv_mode_entry): Ditto.
2919 (riscv_mode_exit): Ditto.
2920 (riscv_mode_priority): Ditto.
2921 (TARGET_MODE_EMIT): New target hook.
2922 (TARGET_MODE_NEEDED): Ditto.
2923 (TARGET_MODE_AFTER): Ditto.
2924 (TARGET_MODE_ENTRY): Ditto.
2925 (TARGET_MODE_EXIT): Ditto.
2926 (TARGET_MODE_PRIORITY): Ditto.
2927 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
2928 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
2929 * config/riscv/riscv.md: Add csrwvxrm.
2930 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
2931 (vxrmsi): New pattern.
2933 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2935 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
2936 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
2937 (struct narrow_alu_def): Ditto.
2938 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
2939 (function_expander::use_exact_insn): Ditto.
2940 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
2941 (function_base::has_rounding_mode_operand_p): New function.
2943 2023-05-17 Andrew Pinski <apinski@marvell.com>
2945 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
2946 against 0 instead of calling integer_zerop.
2948 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2950 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
2951 (DEF_RVV_VXRM_ENUM): New macro.
2952 (handle_pragma_vector): Add vxrm enum register.
2953 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
2959 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
2961 * value-range.h (Value_Range::operator=): New.
2963 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
2965 * value-range.cc (vrange::operator=): Add a stub to copy
2967 * value-range.h (is_a <unsupported_range>): New.
2968 (Value_Range::operator=): Support copying unsupported ranges.
2970 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
2972 * data-streamer-in.cc (streamer_read_real_value): New.
2973 (streamer_read_value_range): New.
2974 * data-streamer-out.cc (streamer_write_real_value): New.
2975 (streamer_write_vrange): New.
2976 * data-streamer.h (streamer_write_vrange): New.
2977 (streamer_read_value_range): New.
2979 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
2982 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
2983 is ignored for a fixed underlying type.
2984 (C++ Dialect Options): Likewise for -fstrict-enums.
2986 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
2988 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
2991 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
2993 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
2995 (s390_atomic_align_for_mode): New.
2997 2023-05-17 Jakub Jelinek <jakub@redhat.com>
2999 * wide-int.cc (wi::from_array): Add missing closing paren in function
3002 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
3004 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
3005 suggested unroll factor once the previous analysis fails.
3007 2023-05-17 Pan Li <pan2.li@intel.com>
3009 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
3011 (main): Add bool1 to the type indexer.
3012 * config/riscv/riscv-vector-builtins-functions.def
3013 (vreinterpret): Register vbool1 interpret function.
3014 * config/riscv/riscv-vector-builtins-types.def
3015 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
3016 (vint8m1_t): Add the type to bool1_interpret_ops.
3017 (vint16m1_t): Ditto.
3018 (vint32m1_t): Ditto.
3019 (vint64m1_t): Ditto.
3020 (vuint8m1_t): Ditto.
3021 (vuint16m1_t): Ditto.
3022 (vuint32m1_t): Ditto.
3023 (vuint64m1_t): Ditto.
3024 * config/riscv/riscv-vector-builtins.cc
3025 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
3026 (required_extensions_p): Add bool1 interpret case.
3027 * config/riscv/riscv-vector-builtins.def
3028 (bool1_interpret): Add bool1 interpret to base type.
3029 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
3030 with VB dest for vreinterpret.
3032 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
3035 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
3036 constants through "lis; xoris".
3038 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
3040 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
3041 default rs6000 target pass for O2 and above.
3042 * doc/invoke.texi: Document -free
3044 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
3046 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
3047 Fix wrong select_kind...
3049 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3051 * config/s390/s390-protos.h (s390_expand_setmem): Change
3053 * config/s390/s390.cc (s390_expand_setmem): For memset's less
3054 than or equal to 256 byte do not perform a libc call.
3055 * config/s390/s390.md: Change expander into a version which
3058 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3060 * config/s390/s390-protos.h (s390_expand_movmem): New.
3061 * config/s390/s390.cc (s390_expand_movmem): New.
3062 * config/s390/s390.md (movmem<mode>): New.
3066 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3068 * config/s390/s390-protos.h (s390_expand_cpymem): Change
3070 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
3071 than or equal to 256 byte do not perform a libc call.
3072 (s390_expand_insv): Adapt new function signature of
3074 * config/s390/s390.md: Change expander into a version which
3077 2023-05-16 Andrew Pinski <apinski@marvell.com>
3079 PR tree-optimization/109424
3080 * match.pd: Add patterns for min/max of zero_one_valued
3083 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3085 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
3086 * config/riscv/riscv-vector-builtins.cc
3087 (function_expander::use_ternop_insn): Add default rounding mode.
3088 (function_expander::use_widen_ternop_insn): Ditto.
3089 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
3090 (riscv_hard_regno_mode_ok): Ditto.
3091 (riscv_conditional_register_usage): Ditto.
3092 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
3094 (RISCV_DWARF_FRM): Ditto.
3095 * config/riscv/riscv.md: Ditto.
3096 * config/riscv/vector-iterators.md: split no frm and has frm operations.
3097 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
3098 (@pred_<optab><mode>): Ditto.
3100 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
3102 PR tree-optimization/109695
3103 * value-range.cc (irange::operator=): Resize range.
3104 (irange::union_): Same.
3105 (irange::intersect): Same.
3106 (irange::invert): Same.
3107 (int_range_max): Default to 3 sub-ranges and resize as needed.
3108 * value-range.h (irange::maybe_resize): New.
3110 (int_range::int_range): Adjust for resizing.
3111 (int_range::operator=): Same.
3113 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
3115 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
3117 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
3120 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3122 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
3123 * config/riscv/riscv-vector-builtins.cc
3124 (function_expander::use_exact_insn): Add default rounding mode operand.
3125 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
3126 (riscv_hard_regno_mode_ok): Ditto.
3127 (riscv_conditional_register_usage): Ditto.
3128 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
3129 (VXRM_REG_P): Ditto.
3130 (RISCV_DWARF_VXRM): Ditto.
3131 * config/riscv/riscv.md: Ditto.
3132 * config/riscv/vector.md: Ditto
3134 2023-05-15 Pan Li <pan2.li@intel.com>
3136 * optabs.cc (maybe_gen_insn): Add case to generate instruction
3137 that has 11 operands.
3139 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3141 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
3142 logic for vector modes.
3144 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3147 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
3148 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
3149 (aarch64_cmtst<mode>): Rename to...
3150 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
3151 (*aarch64_cmtst_same_<mode>): Rename to...
3152 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
3153 (*aarch64_cmtstdi): Rename to...
3154 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
3155 (aarch64_fac<optab><mode>): Rename to...
3156 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
3158 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3161 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
3162 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
3164 2023-05-15 Pan Li <pan2.li@intel.com>
3165 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3166 kito-cheng <kito.cheng@sifive.com>
3168 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
3169 deciding the mode is constant or not.
3170 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
3172 2023-05-15 Richard Biener <rguenther@suse.de>
3174 PR tree-optimization/109848
3175 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
3176 TARGET_MEM_REF address preparation before the store, not
3179 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3181 * config/riscv/riscv.cc
3182 (riscv_vectorize_preferred_vector_alignment): New function.
3183 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
3185 2023-05-14 Andrew Pinski <apinski@marvell.com>
3187 PR tree-optimization/109829
3188 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
3190 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
3193 * config/i386/i386.cc: Revert the 2023-05-11 change.
3194 (ix86_widen_mult_cost): Return high value instead of
3195 ICEing for unsupported modes.
3197 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
3199 * config/i386/i386.cc (x86_function_profiler): Take
3200 ix86_direct_extern_access into account when generating calls
3203 2023-05-14 Pan Li <pan2.li@intel.com>
3205 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
3206 Refactor the or pattern to switch cases.
3208 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3210 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
3211 aarch64_expand_vector_init to this, and remove interleaving case.
3212 Recursively call aarch64_expand_vector_init_fallback, instead of
3213 aarch64_expand_vector_init.
3214 (aarch64_unzip_vector_init): New function.
3215 (aarch64_expand_vector_init): Likewise.
3217 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
3219 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
3220 Pull out function call from the gcc_assert.
3222 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
3224 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
3225 (policy_to_str): New.
3226 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
3228 2023-05-13 Andrew Pinski <apinski@marvell.com>
3230 PR tree-optimization/109834
3231 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
3232 (popcount(rotate(x,y))->popcount(x)): Likewise.
3234 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
3236 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
3237 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
3238 gen_extend_insn to generate zero/sign extension instructions.
3240 (ix86_expand_vecop_qihi): Initialize interleave functions
3241 for MULT code only. Fix comments.
3243 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
3246 * config/i386/mmx.md (mulv2si3): Remove expander.
3247 (mulv2si3): Rename insn pattern from *mulv2si.
3249 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
3252 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
3253 '!lto_stream_offload_p'.
3255 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
3256 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3259 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
3260 (local_avl_compatible_p): New.
3261 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
3262 for LCM, rewrite as a backward algorithm.
3263 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
3264 interface, handle a BB at once.
3266 2023-05-12 Richard Biener <rguenther@suse.de>
3268 PR tree-optimization/64731
3269 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
3270 handle TARGET_MEM_REF destinations of stores from vector
3273 2023-05-12 Richard Biener <rguenther@suse.de>
3275 PR tree-optimization/109791
3276 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
3278 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
3281 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3283 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
3284 * config/arm/arm-mve-builtins-base.def (vsriq): New.
3285 * config/arm/arm-mve-builtins-base.h (vsriq): New.
3286 * config/arm/arm-mve-builtins.cc
3287 (function_instance::has_inactive_argument): Handle vsriq.
3288 * config/arm/arm_mve.h (vsriq): Remove.
3290 (vsriq_n_u8): Remove.
3291 (vsriq_n_s8): Remove.
3292 (vsriq_n_u16): Remove.
3293 (vsriq_n_s16): Remove.
3294 (vsriq_n_u32): Remove.
3295 (vsriq_n_s32): Remove.
3296 (vsriq_m_n_s8): Remove.
3297 (vsriq_m_n_u8): Remove.
3298 (vsriq_m_n_s16): Remove.
3299 (vsriq_m_n_u16): Remove.
3300 (vsriq_m_n_s32): Remove.
3301 (vsriq_m_n_u32): Remove.
3302 (__arm_vsriq_n_u8): Remove.
3303 (__arm_vsriq_n_s8): Remove.
3304 (__arm_vsriq_n_u16): Remove.
3305 (__arm_vsriq_n_s16): Remove.
3306 (__arm_vsriq_n_u32): Remove.
3307 (__arm_vsriq_n_s32): Remove.
3308 (__arm_vsriq_m_n_s8): Remove.
3309 (__arm_vsriq_m_n_u8): Remove.
3310 (__arm_vsriq_m_n_s16): Remove.
3311 (__arm_vsriq_m_n_u16): Remove.
3312 (__arm_vsriq_m_n_s32): Remove.
3313 (__arm_vsriq_m_n_u32): Remove.
3314 (__arm_vsriq): Remove.
3315 (__arm_vsriq_m): Remove.
3317 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3319 * config/arm/iterators.md (mve_insn): Add vsri.
3320 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
3321 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
3322 (mve_vsriq_m_n_<supf><mode>): Rename into ...
3323 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3325 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3327 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
3328 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
3330 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3332 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
3333 * config/arm/arm-mve-builtins-base.def (vsliq): New.
3334 * config/arm/arm-mve-builtins-base.h (vsliq): New.
3335 * config/arm/arm-mve-builtins.cc
3336 (function_instance::has_inactive_argument): Handle vsliq.
3337 * config/arm/arm_mve.h (vsliq): Remove.
3339 (vsliq_n_u8): Remove.
3340 (vsliq_n_s8): Remove.
3341 (vsliq_n_u16): Remove.
3342 (vsliq_n_s16): Remove.
3343 (vsliq_n_u32): Remove.
3344 (vsliq_n_s32): Remove.
3345 (vsliq_m_n_s8): Remove.
3346 (vsliq_m_n_s32): Remove.
3347 (vsliq_m_n_s16): Remove.
3348 (vsliq_m_n_u8): Remove.
3349 (vsliq_m_n_u32): Remove.
3350 (vsliq_m_n_u16): Remove.
3351 (__arm_vsliq_n_u8): Remove.
3352 (__arm_vsliq_n_s8): Remove.
3353 (__arm_vsliq_n_u16): Remove.
3354 (__arm_vsliq_n_s16): Remove.
3355 (__arm_vsliq_n_u32): Remove.
3356 (__arm_vsliq_n_s32): Remove.
3357 (__arm_vsliq_m_n_s8): Remove.
3358 (__arm_vsliq_m_n_s32): Remove.
3359 (__arm_vsliq_m_n_s16): Remove.
3360 (__arm_vsliq_m_n_u8): Remove.
3361 (__arm_vsliq_m_n_u32): Remove.
3362 (__arm_vsliq_m_n_u16): Remove.
3363 (__arm_vsliq): Remove.
3364 (__arm_vsliq_m): Remove.
3366 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3368 * config/arm/iterators.md (mve_insn>): Add vsli.
3369 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
3370 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3371 (mve_vsliq_m_n_<supf><mode>): Rename into ...
3372 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3374 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3376 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
3377 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
3379 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3381 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
3382 * config/arm/arm-mve-builtins-base.def (vpselq): New.
3383 * config/arm/arm-mve-builtins-base.h (vpselq): New.
3384 * config/arm/arm_mve.h (vpselq): Remove.
3385 (vpselq_u8): Remove.
3386 (vpselq_s8): Remove.
3387 (vpselq_u16): Remove.
3388 (vpselq_s16): Remove.
3389 (vpselq_u32): Remove.
3390 (vpselq_s32): Remove.
3391 (vpselq_u64): Remove.
3392 (vpselq_s64): Remove.
3393 (vpselq_f16): Remove.
3394 (vpselq_f32): Remove.
3395 (__arm_vpselq_u8): Remove.
3396 (__arm_vpselq_s8): Remove.
3397 (__arm_vpselq_u16): Remove.
3398 (__arm_vpselq_s16): Remove.
3399 (__arm_vpselq_u32): Remove.
3400 (__arm_vpselq_s32): Remove.
3401 (__arm_vpselq_u64): Remove.
3402 (__arm_vpselq_s64): Remove.
3403 (__arm_vpselq_f16): Remove.
3404 (__arm_vpselq_f32): Remove.
3405 (__arm_vpselq): Remove.
3407 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3409 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
3410 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
3412 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3414 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
3416 * config/arm/iterators.md (MVE_VPSELQ_F): New.
3417 (mve_insn): Add vpsel.
3418 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
3419 (@mve_<mve_insn>q_<supf><mode>): ... this.
3420 (@mve_vpselq_f<mode>): Rename into ...
3421 (@mve_<mve_insn>q_f<mode>): ... this.
3423 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3425 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
3426 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
3427 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
3428 * config/arm/arm-mve-builtins.cc
3429 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
3431 * config/arm/arm_mve.h (vfmaq): Remove.
3437 (vfmaq_f16): Remove.
3438 (vfmaq_n_f16): Remove.
3439 (vfmasq_n_f16): Remove.
3440 (vfmsq_f16): Remove.
3441 (vfmaq_f32): Remove.
3442 (vfmaq_n_f32): Remove.
3443 (vfmasq_n_f32): Remove.
3444 (vfmsq_f32): Remove.
3445 (vfmaq_m_f32): Remove.
3446 (vfmaq_m_f16): Remove.
3447 (vfmaq_m_n_f32): Remove.
3448 (vfmaq_m_n_f16): Remove.
3449 (vfmasq_m_n_f32): Remove.
3450 (vfmasq_m_n_f16): Remove.
3451 (vfmsq_m_f32): Remove.
3452 (vfmsq_m_f16): Remove.
3453 (__arm_vfmaq_f16): Remove.
3454 (__arm_vfmaq_n_f16): Remove.
3455 (__arm_vfmasq_n_f16): Remove.
3456 (__arm_vfmsq_f16): Remove.
3457 (__arm_vfmaq_f32): Remove.
3458 (__arm_vfmaq_n_f32): Remove.
3459 (__arm_vfmasq_n_f32): Remove.
3460 (__arm_vfmsq_f32): Remove.
3461 (__arm_vfmaq_m_f32): Remove.
3462 (__arm_vfmaq_m_f16): Remove.
3463 (__arm_vfmaq_m_n_f32): Remove.
3464 (__arm_vfmaq_m_n_f16): Remove.
3465 (__arm_vfmasq_m_n_f32): Remove.
3466 (__arm_vfmasq_m_n_f16): Remove.
3467 (__arm_vfmsq_m_f32): Remove.
3468 (__arm_vfmsq_m_f16): Remove.
3469 (__arm_vfmaq): Remove.
3470 (__arm_vfmasq): Remove.
3471 (__arm_vfmsq): Remove.
3472 (__arm_vfmaq_m): Remove.
3473 (__arm_vfmasq_m): Remove.
3474 (__arm_vfmsq_m): Remove.
3476 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3478 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
3480 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
3481 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
3482 (mve_insn): Add vfma, vfmas, vfms.
3483 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
3485 (@mve_<mve_insn>q_f<mode>): ... this.
3486 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
3487 (@mve_<mve_insn>q_n_f<mode>): ... this.
3488 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
3489 @mve_<mve_insn>q_m_f<mode>.
3490 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
3491 @mve_<mve_insn>q_m_n_f<mode>.
3493 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3495 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
3496 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
3498 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3500 * config/arm/arm-mve-builtins-base.cc
3501 (FUNCTION_WITH_RTX_M_N_NO_F): New.
3503 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
3504 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
3505 * config/arm/arm_mve.h (vmvnq): Remove.
3509 (vmvnq_s16): Remove.
3510 (vmvnq_s32): Remove.
3511 (vmvnq_n_s16): Remove.
3512 (vmvnq_n_s32): Remove.
3514 (vmvnq_u16): Remove.
3515 (vmvnq_u32): Remove.
3516 (vmvnq_n_u16): Remove.
3517 (vmvnq_n_u32): Remove.
3518 (vmvnq_m_u8): Remove.
3519 (vmvnq_m_s8): Remove.
3520 (vmvnq_m_u16): Remove.
3521 (vmvnq_m_s16): Remove.
3522 (vmvnq_m_u32): Remove.
3523 (vmvnq_m_s32): Remove.
3524 (vmvnq_m_n_s16): Remove.
3525 (vmvnq_m_n_u16): Remove.
3526 (vmvnq_m_n_s32): Remove.
3527 (vmvnq_m_n_u32): Remove.
3528 (vmvnq_x_s8): Remove.
3529 (vmvnq_x_s16): Remove.
3530 (vmvnq_x_s32): Remove.
3531 (vmvnq_x_u8): Remove.
3532 (vmvnq_x_u16): Remove.
3533 (vmvnq_x_u32): Remove.
3534 (vmvnq_x_n_s16): Remove.
3535 (vmvnq_x_n_s32): Remove.
3536 (vmvnq_x_n_u16): Remove.
3537 (vmvnq_x_n_u32): Remove.
3538 (__arm_vmvnq_s8): Remove.
3539 (__arm_vmvnq_s16): Remove.
3540 (__arm_vmvnq_s32): Remove.
3541 (__arm_vmvnq_n_s16): Remove.
3542 (__arm_vmvnq_n_s32): Remove.
3543 (__arm_vmvnq_u8): Remove.
3544 (__arm_vmvnq_u16): Remove.
3545 (__arm_vmvnq_u32): Remove.
3546 (__arm_vmvnq_n_u16): Remove.
3547 (__arm_vmvnq_n_u32): Remove.
3548 (__arm_vmvnq_m_u8): Remove.
3549 (__arm_vmvnq_m_s8): Remove.
3550 (__arm_vmvnq_m_u16): Remove.
3551 (__arm_vmvnq_m_s16): Remove.
3552 (__arm_vmvnq_m_u32): Remove.
3553 (__arm_vmvnq_m_s32): Remove.
3554 (__arm_vmvnq_m_n_s16): Remove.
3555 (__arm_vmvnq_m_n_u16): Remove.
3556 (__arm_vmvnq_m_n_s32): Remove.
3557 (__arm_vmvnq_m_n_u32): Remove.
3558 (__arm_vmvnq_x_s8): Remove.
3559 (__arm_vmvnq_x_s16): Remove.
3560 (__arm_vmvnq_x_s32): Remove.
3561 (__arm_vmvnq_x_u8): Remove.
3562 (__arm_vmvnq_x_u16): Remove.
3563 (__arm_vmvnq_x_u32): Remove.
3564 (__arm_vmvnq_x_n_s16): Remove.
3565 (__arm_vmvnq_x_n_s32): Remove.
3566 (__arm_vmvnq_x_n_u16): Remove.
3567 (__arm_vmvnq_x_n_u32): Remove.
3568 (__arm_vmvnq): Remove.
3569 (__arm_vmvnq_m): Remove.
3570 (__arm_vmvnq_x): Remove.
3572 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3574 * config/arm/iterators.md (mve_insn): Add vmvn.
3575 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
3576 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3577 (mve_vmvnq_m_<supf><mode>): Rename into ...
3578 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3579 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
3580 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3582 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3584 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
3585 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
3587 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3589 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
3590 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
3591 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
3592 * config/arm/arm_mve.h (vbrsrq): Remove.
3595 (vbrsrq_n_f16): Remove.
3596 (vbrsrq_n_f32): Remove.
3597 (vbrsrq_n_u8): Remove.
3598 (vbrsrq_n_s8): Remove.
3599 (vbrsrq_n_u16): Remove.
3600 (vbrsrq_n_s16): Remove.
3601 (vbrsrq_n_u32): Remove.
3602 (vbrsrq_n_s32): Remove.
3603 (vbrsrq_m_n_s8): Remove.
3604 (vbrsrq_m_n_s32): Remove.
3605 (vbrsrq_m_n_s16): Remove.
3606 (vbrsrq_m_n_u8): Remove.
3607 (vbrsrq_m_n_u32): Remove.
3608 (vbrsrq_m_n_u16): Remove.
3609 (vbrsrq_m_n_f32): Remove.
3610 (vbrsrq_m_n_f16): Remove.
3611 (vbrsrq_x_n_s8): Remove.
3612 (vbrsrq_x_n_s16): Remove.
3613 (vbrsrq_x_n_s32): Remove.
3614 (vbrsrq_x_n_u8): Remove.
3615 (vbrsrq_x_n_u16): Remove.
3616 (vbrsrq_x_n_u32): Remove.
3617 (vbrsrq_x_n_f16): Remove.
3618 (vbrsrq_x_n_f32): Remove.
3619 (__arm_vbrsrq_n_u8): Remove.
3620 (__arm_vbrsrq_n_s8): Remove.
3621 (__arm_vbrsrq_n_u16): Remove.
3622 (__arm_vbrsrq_n_s16): Remove.
3623 (__arm_vbrsrq_n_u32): Remove.
3624 (__arm_vbrsrq_n_s32): Remove.
3625 (__arm_vbrsrq_m_n_s8): Remove.
3626 (__arm_vbrsrq_m_n_s32): Remove.
3627 (__arm_vbrsrq_m_n_s16): Remove.
3628 (__arm_vbrsrq_m_n_u8): Remove.
3629 (__arm_vbrsrq_m_n_u32): Remove.
3630 (__arm_vbrsrq_m_n_u16): Remove.
3631 (__arm_vbrsrq_x_n_s8): Remove.
3632 (__arm_vbrsrq_x_n_s16): Remove.
3633 (__arm_vbrsrq_x_n_s32): Remove.
3634 (__arm_vbrsrq_x_n_u8): Remove.
3635 (__arm_vbrsrq_x_n_u16): Remove.
3636 (__arm_vbrsrq_x_n_u32): Remove.
3637 (__arm_vbrsrq_n_f16): Remove.
3638 (__arm_vbrsrq_n_f32): Remove.
3639 (__arm_vbrsrq_m_n_f32): Remove.
3640 (__arm_vbrsrq_m_n_f16): Remove.
3641 (__arm_vbrsrq_x_n_f16): Remove.
3642 (__arm_vbrsrq_x_n_f32): Remove.
3643 (__arm_vbrsrq): Remove.
3644 (__arm_vbrsrq_m): Remove.
3645 (__arm_vbrsrq_x): Remove.
3647 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3649 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
3650 (mve_insn): Add vbrsr.
3651 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
3652 (@mve_<mve_insn>q_n_f<mode>): ... this.
3653 (mve_vbrsrq_n_<supf><mode>): Rename into ...
3654 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3655 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
3656 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3657 (mve_vbrsrq_m_n_f<mode>): Rename into ...
3658 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
3660 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3662 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
3663 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
3665 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3667 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
3668 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
3669 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
3670 * config/arm/arm_mve.h (vqshluq): Remove.
3671 (vqshluq_m): Remove.
3672 (vqshluq_n_s8): Remove.
3673 (vqshluq_n_s16): Remove.
3674 (vqshluq_n_s32): Remove.
3675 (vqshluq_m_n_s8): Remove.
3676 (vqshluq_m_n_s16): Remove.
3677 (vqshluq_m_n_s32): Remove.
3678 (__arm_vqshluq_n_s8): Remove.
3679 (__arm_vqshluq_n_s16): Remove.
3680 (__arm_vqshluq_n_s32): Remove.
3681 (__arm_vqshluq_m_n_s8): Remove.
3682 (__arm_vqshluq_m_n_s16): Remove.
3683 (__arm_vqshluq_m_n_s32): Remove.
3684 (__arm_vqshluq): Remove.
3685 (__arm_vqshluq_m): Remove.
3687 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3689 * config/arm/iterators.md (mve_insn): Add vqshlu.
3690 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
3691 (VQSHLUQ_M_N, VQSHLUQ_N): New.
3692 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
3693 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3694 (mve_vqshluq_m_n_s<mode>): Change name into ...
3695 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3697 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3699 * config/arm/arm-mve-builtins-shapes.cc
3700 (binary_lshift_unsigned): New.
3701 * config/arm/arm-mve-builtins-shapes.h
3702 (binary_lshift_unsigned): New.
3704 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3706 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
3707 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3708 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
3709 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3710 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
3711 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3712 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
3713 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
3714 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
3715 (vrmlaldavhaxq): Remove.
3716 (vrmlsldavhaq): Remove.
3717 (vrmlsldavhaxq): Remove.
3718 (vrmlaldavhaq_p): Remove.
3719 (vrmlaldavhaxq_p): Remove.
3720 (vrmlsldavhaq_p): Remove.
3721 (vrmlsldavhaxq_p): Remove.
3722 (vrmlaldavhaq_s32): Remove.
3723 (vrmlaldavhaq_u32): Remove.
3724 (vrmlaldavhaxq_s32): Remove.
3725 (vrmlsldavhaq_s32): Remove.
3726 (vrmlsldavhaxq_s32): Remove.
3727 (vrmlaldavhaq_p_s32): Remove.
3728 (vrmlaldavhaq_p_u32): Remove.
3729 (vrmlaldavhaxq_p_s32): Remove.
3730 (vrmlsldavhaq_p_s32): Remove.
3731 (vrmlsldavhaxq_p_s32): Remove.
3732 (__arm_vrmlaldavhaq_s32): Remove.
3733 (__arm_vrmlaldavhaq_u32): Remove.
3734 (__arm_vrmlaldavhaxq_s32): Remove.
3735 (__arm_vrmlsldavhaq_s32): Remove.
3736 (__arm_vrmlsldavhaxq_s32): Remove.
3737 (__arm_vrmlaldavhaq_p_s32): Remove.
3738 (__arm_vrmlaldavhaq_p_u32): Remove.
3739 (__arm_vrmlaldavhaxq_p_s32): Remove.
3740 (__arm_vrmlsldavhaq_p_s32): Remove.
3741 (__arm_vrmlsldavhaxq_p_s32): Remove.
3742 (__arm_vrmlaldavhaq): Remove.
3743 (__arm_vrmlaldavhaxq): Remove.
3744 (__arm_vrmlsldavhaq): Remove.
3745 (__arm_vrmlsldavhaxq): Remove.
3746 (__arm_vrmlaldavhaq_p): Remove.
3747 (__arm_vrmlaldavhaxq_p): Remove.
3748 (__arm_vrmlsldavhaq_p): Remove.
3749 (__arm_vrmlsldavhaxq_p): Remove.
3751 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3753 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
3754 (MVE_VRMLxLDAVHAxQ_P): New.
3755 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
3757 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
3758 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
3760 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
3761 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
3762 (mve_vrmlsldavhaq_sv4si): Merge into ...
3763 (@mve_<mve_insn>q_<supf>v4si): ... this.
3764 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
3765 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
3766 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
3767 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
3769 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3771 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
3772 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
3774 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
3775 * config/arm/arm_mve.h (vqdmulltq): Remove.
3776 (vqdmullbq): Remove.
3777 (vqdmullbq_m): Remove.
3778 (vqdmulltq_m): Remove.
3779 (vqdmulltq_s16): Remove.
3780 (vqdmulltq_n_s16): Remove.
3781 (vqdmullbq_s16): Remove.
3782 (vqdmullbq_n_s16): Remove.
3783 (vqdmulltq_s32): Remove.
3784 (vqdmulltq_n_s32): Remove.
3785 (vqdmullbq_s32): Remove.
3786 (vqdmullbq_n_s32): Remove.
3787 (vqdmullbq_m_n_s32): Remove.
3788 (vqdmullbq_m_n_s16): Remove.
3789 (vqdmullbq_m_s32): Remove.
3790 (vqdmullbq_m_s16): Remove.
3791 (vqdmulltq_m_n_s32): Remove.
3792 (vqdmulltq_m_n_s16): Remove.
3793 (vqdmulltq_m_s32): Remove.
3794 (vqdmulltq_m_s16): Remove.
3795 (__arm_vqdmulltq_s16): Remove.
3796 (__arm_vqdmulltq_n_s16): Remove.
3797 (__arm_vqdmullbq_s16): Remove.
3798 (__arm_vqdmullbq_n_s16): Remove.
3799 (__arm_vqdmulltq_s32): Remove.
3800 (__arm_vqdmulltq_n_s32): Remove.
3801 (__arm_vqdmullbq_s32): Remove.
3802 (__arm_vqdmullbq_n_s32): Remove.
3803 (__arm_vqdmullbq_m_n_s32): Remove.
3804 (__arm_vqdmullbq_m_n_s16): Remove.
3805 (__arm_vqdmullbq_m_s32): Remove.
3806 (__arm_vqdmullbq_m_s16): Remove.
3807 (__arm_vqdmulltq_m_n_s32): Remove.
3808 (__arm_vqdmulltq_m_n_s16): Remove.
3809 (__arm_vqdmulltq_m_s32): Remove.
3810 (__arm_vqdmulltq_m_s16): Remove.
3811 (__arm_vqdmulltq): Remove.
3812 (__arm_vqdmullbq): Remove.
3813 (__arm_vqdmullbq_m): Remove.
3814 (__arm_vqdmulltq_m): Remove.
3816 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3818 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
3819 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
3820 (mve_insn): Add vqdmullb, vqdmullt.
3821 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
3822 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
3824 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
3825 (mve_vqdmulltq_n_s<mode>): Merge into ...
3826 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3827 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
3828 (@mve_<mve_insn>q_<supf><mode>): ... this.
3829 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
3831 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3832 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
3833 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3835 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3837 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
3838 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
3840 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
3842 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
3843 Drop unused parameter.
3844 (riscv_select_multilib): Ditto.
3845 (riscv_compute_multilib): Update call site of
3846 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
3848 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
3850 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
3851 * config/riscv/riscv-protos.h (expand_vec_init): New function.
3852 * config/riscv/riscv-v.cc (class rvv_builder): New class.
3853 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
3854 (rvv_builder::get_merged_repeating_sequence): Ditto.
3855 (expand_vector_init_insert_elems): Ditto.
3856 (expand_vec_init): Ditto.
3857 * config/riscv/vector-iterators.md: New attribute.
3859 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
3861 * config/rs6000/rs6000-builtins.def
3862 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
3864 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
3865 xsiexpdpf to xsiexpdpf_di.
3866 * config/rs6000/vsx.md (xsiexpdp): Rename to...
3867 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
3868 replace TARGET_64BIT with TARGET_POWERPC64.
3869 (xsiexpdpf): Rename to...
3870 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
3871 replace TARGET_64BIT with TARGET_POWERPC64.
3873 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
3875 * config/rs6000/rs6000-builtins.def
3876 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
3878 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
3881 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
3883 * config/rs6000/rs6000-builtins.def
3884 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
3885 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
3887 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
3888 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
3890 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
3891 requirement when it has a 64-bit argument.
3893 2023-05-12 Pan Li <pan2.li@intel.com>
3894 Richard Sandiford <richard.sandiford@arm.com>
3895 Richard Biener <rguenther@suse.de>
3896 Jakub Jelinek <jakub@redhat.com>
3898 * mux-utils.h: Add overload operator == and != for pointer_mux.
3899 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
3900 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
3901 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
3902 (dv_as_decl): Ditto.
3903 (dv_as_opaque): Removed due to unnecessary.
3904 (struct variable_hasher): Take decl_or_value as compare_type.
3905 (variable_hasher::equal): Diito.
3906 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
3907 (dv_from_value): Ditto.
3908 (attrs_list_member): Ditto.
3910 (var_reg_decl_set): Ditto.
3911 (var_reg_delete_and_set): Ditto.
3912 (find_loc_in_1pdv): Ditto.
3913 (canonicalize_values_star): Ditto.
3914 (variable_post_merge_new_vals): Ditto.
3915 (dump_onepart_variable_differences): Ditto.
3916 (variable_different_p): Ditto.
3917 (set_slot_part): Ditto.
3918 (clobber_slot_part): Ditto.
3919 (clobber_variable_part): Ditto.
3921 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
3923 * match.pd: simplify vector shift + bit_and + multiply.
3925 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3927 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
3928 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
3929 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
3930 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
3931 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
3932 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
3933 * config/arm/arm-mve-builtins.cc
3934 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
3935 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
3936 * config/arm/arm_mve.h (vqrdmlashq): Remove.
3937 (vqrdmlahq): Remove.
3938 (vqdmlashq): Remove.
3944 (vqdmlashq_m): Remove.
3945 (vqdmlahq_m): Remove.
3946 (vqrdmlahq_m): Remove.
3947 (vqrdmlashq_m): Remove.
3948 (vmlasq_n_u8): Remove.
3949 (vmlaq_n_u8): Remove.
3950 (vqrdmlashq_n_s8): Remove.
3951 (vqrdmlahq_n_s8): Remove.
3952 (vqdmlahq_n_s8): Remove.
3953 (vqdmlashq_n_s8): Remove.
3954 (vmlasq_n_s8): Remove.
3955 (vmlaq_n_s8): Remove.
3956 (vmlasq_n_u16): Remove.
3957 (vmlaq_n_u16): Remove.
3958 (vqrdmlashq_n_s16): Remove.
3959 (vqrdmlahq_n_s16): Remove.
3960 (vqdmlashq_n_s16): Remove.
3961 (vqdmlahq_n_s16): Remove.
3962 (vmlasq_n_s16): Remove.
3963 (vmlaq_n_s16): Remove.
3964 (vmlasq_n_u32): Remove.
3965 (vmlaq_n_u32): Remove.
3966 (vqrdmlashq_n_s32): Remove.
3967 (vqrdmlahq_n_s32): Remove.
3968 (vqdmlashq_n_s32): Remove.
3969 (vqdmlahq_n_s32): Remove.
3970 (vmlasq_n_s32): Remove.
3971 (vmlaq_n_s32): Remove.
3972 (vmlaq_m_n_s8): Remove.
3973 (vmlaq_m_n_s32): Remove.
3974 (vmlaq_m_n_s16): Remove.
3975 (vmlaq_m_n_u8): Remove.
3976 (vmlaq_m_n_u32): Remove.
3977 (vmlaq_m_n_u16): Remove.
3978 (vmlasq_m_n_s8): Remove.
3979 (vmlasq_m_n_s32): Remove.
3980 (vmlasq_m_n_s16): Remove.
3981 (vmlasq_m_n_u8): Remove.
3982 (vmlasq_m_n_u32): Remove.
3983 (vmlasq_m_n_u16): Remove.
3984 (vqdmlashq_m_n_s8): Remove.
3985 (vqdmlashq_m_n_s32): Remove.
3986 (vqdmlashq_m_n_s16): Remove.
3987 (vqdmlahq_m_n_s8): Remove.
3988 (vqdmlahq_m_n_s32): Remove.
3989 (vqdmlahq_m_n_s16): Remove.
3990 (vqrdmlahq_m_n_s8): Remove.
3991 (vqrdmlahq_m_n_s32): Remove.
3992 (vqrdmlahq_m_n_s16): Remove.
3993 (vqrdmlashq_m_n_s8): Remove.
3994 (vqrdmlashq_m_n_s32): Remove.
3995 (vqrdmlashq_m_n_s16): Remove.
3996 (__arm_vmlasq_n_u8): Remove.
3997 (__arm_vmlaq_n_u8): Remove.
3998 (__arm_vqrdmlashq_n_s8): Remove.
3999 (__arm_vqdmlashq_n_s8): Remove.
4000 (__arm_vqrdmlahq_n_s8): Remove.
4001 (__arm_vqdmlahq_n_s8): Remove.
4002 (__arm_vmlasq_n_s8): Remove.
4003 (__arm_vmlaq_n_s8): Remove.
4004 (__arm_vmlasq_n_u16): Remove.
4005 (__arm_vmlaq_n_u16): Remove.
4006 (__arm_vqrdmlashq_n_s16): Remove.
4007 (__arm_vqdmlashq_n_s16): Remove.
4008 (__arm_vqrdmlahq_n_s16): Remove.
4009 (__arm_vqdmlahq_n_s16): Remove.
4010 (__arm_vmlasq_n_s16): Remove.
4011 (__arm_vmlaq_n_s16): Remove.
4012 (__arm_vmlasq_n_u32): Remove.
4013 (__arm_vmlaq_n_u32): Remove.
4014 (__arm_vqrdmlashq_n_s32): Remove.
4015 (__arm_vqdmlashq_n_s32): Remove.
4016 (__arm_vqrdmlahq_n_s32): Remove.
4017 (__arm_vqdmlahq_n_s32): Remove.
4018 (__arm_vmlasq_n_s32): Remove.
4019 (__arm_vmlaq_n_s32): Remove.
4020 (__arm_vmlaq_m_n_s8): Remove.
4021 (__arm_vmlaq_m_n_s32): Remove.
4022 (__arm_vmlaq_m_n_s16): Remove.
4023 (__arm_vmlaq_m_n_u8): Remove.
4024 (__arm_vmlaq_m_n_u32): Remove.
4025 (__arm_vmlaq_m_n_u16): Remove.
4026 (__arm_vmlasq_m_n_s8): Remove.
4027 (__arm_vmlasq_m_n_s32): Remove.
4028 (__arm_vmlasq_m_n_s16): Remove.
4029 (__arm_vmlasq_m_n_u8): Remove.
4030 (__arm_vmlasq_m_n_u32): Remove.
4031 (__arm_vmlasq_m_n_u16): Remove.
4032 (__arm_vqdmlahq_m_n_s8): Remove.
4033 (__arm_vqdmlahq_m_n_s32): Remove.
4034 (__arm_vqdmlahq_m_n_s16): Remove.
4035 (__arm_vqrdmlahq_m_n_s8): Remove.
4036 (__arm_vqrdmlahq_m_n_s32): Remove.
4037 (__arm_vqrdmlahq_m_n_s16): Remove.
4038 (__arm_vqrdmlashq_m_n_s8): Remove.
4039 (__arm_vqrdmlashq_m_n_s32): Remove.
4040 (__arm_vqrdmlashq_m_n_s16): Remove.
4041 (__arm_vqdmlashq_m_n_s8): Remove.
4042 (__arm_vqdmlashq_m_n_s16): Remove.
4043 (__arm_vqdmlashq_m_n_s32): Remove.
4044 (__arm_vmlasq): Remove.
4045 (__arm_vmlaq): Remove.
4046 (__arm_vqrdmlashq): Remove.
4047 (__arm_vqdmlashq): Remove.
4048 (__arm_vqrdmlahq): Remove.
4049 (__arm_vqdmlahq): Remove.
4050 (__arm_vmlaq_m): Remove.
4051 (__arm_vmlasq_m): Remove.
4052 (__arm_vqdmlahq_m): Remove.
4053 (__arm_vqrdmlahq_m): Remove.
4054 (__arm_vqrdmlashq_m): Remove.
4055 (__arm_vqdmlashq_m): Remove.
4057 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4059 * config/arm/iterators.md (MVE_VMLxQ_N): New.
4060 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
4062 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
4064 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
4065 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
4066 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
4067 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
4068 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4070 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4072 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
4073 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
4075 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4077 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
4078 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4080 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
4081 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4083 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
4084 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4086 * config/arm/arm-mve-builtins.cc
4087 (function_instance::has_inactive_argument): Handle vqrdmladhq,
4088 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
4089 vqdmlsdhq, vqdmlsdhxq.
4090 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
4091 (vqrdmlsdhq): Remove.
4092 (vqrdmladhxq): Remove.
4093 (vqrdmladhq): Remove.
4094 (vqdmlsdhxq): Remove.
4095 (vqdmlsdhq): Remove.
4096 (vqdmladhxq): Remove.
4097 (vqdmladhq): Remove.
4098 (vqdmladhq_m): Remove.
4099 (vqdmladhxq_m): Remove.
4100 (vqdmlsdhq_m): Remove.
4101 (vqdmlsdhxq_m): Remove.
4102 (vqrdmladhq_m): Remove.
4103 (vqrdmladhxq_m): Remove.
4104 (vqrdmlsdhq_m): Remove.
4105 (vqrdmlsdhxq_m): Remove.
4106 (vqrdmlsdhxq_s8): Remove.
4107 (vqrdmlsdhq_s8): Remove.
4108 (vqrdmladhxq_s8): Remove.
4109 (vqrdmladhq_s8): Remove.
4110 (vqdmlsdhxq_s8): Remove.
4111 (vqdmlsdhq_s8): Remove.
4112 (vqdmladhxq_s8): Remove.
4113 (vqdmladhq_s8): Remove.
4114 (vqrdmlsdhxq_s16): Remove.
4115 (vqrdmlsdhq_s16): Remove.
4116 (vqrdmladhxq_s16): Remove.
4117 (vqrdmladhq_s16): Remove.
4118 (vqdmlsdhxq_s16): Remove.
4119 (vqdmlsdhq_s16): Remove.
4120 (vqdmladhxq_s16): Remove.
4121 (vqdmladhq_s16): Remove.
4122 (vqrdmlsdhxq_s32): Remove.
4123 (vqrdmlsdhq_s32): Remove.
4124 (vqrdmladhxq_s32): Remove.
4125 (vqrdmladhq_s32): Remove.
4126 (vqdmlsdhxq_s32): Remove.
4127 (vqdmlsdhq_s32): Remove.
4128 (vqdmladhxq_s32): Remove.
4129 (vqdmladhq_s32): Remove.
4130 (vqdmladhq_m_s8): Remove.
4131 (vqdmladhq_m_s32): Remove.
4132 (vqdmladhq_m_s16): Remove.
4133 (vqdmladhxq_m_s8): Remove.
4134 (vqdmladhxq_m_s32): Remove.
4135 (vqdmladhxq_m_s16): Remove.
4136 (vqdmlsdhq_m_s8): Remove.
4137 (vqdmlsdhq_m_s32): Remove.
4138 (vqdmlsdhq_m_s16): Remove.
4139 (vqdmlsdhxq_m_s8): Remove.
4140 (vqdmlsdhxq_m_s32): Remove.
4141 (vqdmlsdhxq_m_s16): Remove.
4142 (vqrdmladhq_m_s8): Remove.
4143 (vqrdmladhq_m_s32): Remove.
4144 (vqrdmladhq_m_s16): Remove.
4145 (vqrdmladhxq_m_s8): Remove.
4146 (vqrdmladhxq_m_s32): Remove.
4147 (vqrdmladhxq_m_s16): Remove.
4148 (vqrdmlsdhq_m_s8): Remove.
4149 (vqrdmlsdhq_m_s32): Remove.
4150 (vqrdmlsdhq_m_s16): Remove.
4151 (vqrdmlsdhxq_m_s8): Remove.
4152 (vqrdmlsdhxq_m_s32): Remove.
4153 (vqrdmlsdhxq_m_s16): Remove.
4154 (__arm_vqrdmlsdhxq_s8): Remove.
4155 (__arm_vqrdmlsdhq_s8): Remove.
4156 (__arm_vqrdmladhxq_s8): Remove.
4157 (__arm_vqrdmladhq_s8): Remove.
4158 (__arm_vqdmlsdhxq_s8): Remove.
4159 (__arm_vqdmlsdhq_s8): Remove.
4160 (__arm_vqdmladhxq_s8): Remove.
4161 (__arm_vqdmladhq_s8): Remove.
4162 (__arm_vqrdmlsdhxq_s16): Remove.
4163 (__arm_vqrdmlsdhq_s16): Remove.
4164 (__arm_vqrdmladhxq_s16): Remove.
4165 (__arm_vqrdmladhq_s16): Remove.
4166 (__arm_vqdmlsdhxq_s16): Remove.
4167 (__arm_vqdmlsdhq_s16): Remove.
4168 (__arm_vqdmladhxq_s16): Remove.
4169 (__arm_vqdmladhq_s16): Remove.
4170 (__arm_vqrdmlsdhxq_s32): Remove.
4171 (__arm_vqrdmlsdhq_s32): Remove.
4172 (__arm_vqrdmladhxq_s32): Remove.
4173 (__arm_vqrdmladhq_s32): Remove.
4174 (__arm_vqdmlsdhxq_s32): Remove.
4175 (__arm_vqdmlsdhq_s32): Remove.
4176 (__arm_vqdmladhxq_s32): Remove.
4177 (__arm_vqdmladhq_s32): Remove.
4178 (__arm_vqdmladhq_m_s8): Remove.
4179 (__arm_vqdmladhq_m_s32): Remove.
4180 (__arm_vqdmladhq_m_s16): Remove.
4181 (__arm_vqdmladhxq_m_s8): Remove.
4182 (__arm_vqdmladhxq_m_s32): Remove.
4183 (__arm_vqdmladhxq_m_s16): Remove.
4184 (__arm_vqdmlsdhq_m_s8): Remove.
4185 (__arm_vqdmlsdhq_m_s32): Remove.
4186 (__arm_vqdmlsdhq_m_s16): Remove.
4187 (__arm_vqdmlsdhxq_m_s8): Remove.
4188 (__arm_vqdmlsdhxq_m_s32): Remove.
4189 (__arm_vqdmlsdhxq_m_s16): Remove.
4190 (__arm_vqrdmladhq_m_s8): Remove.
4191 (__arm_vqrdmladhq_m_s32): Remove.
4192 (__arm_vqrdmladhq_m_s16): Remove.
4193 (__arm_vqrdmladhxq_m_s8): Remove.
4194 (__arm_vqrdmladhxq_m_s32): Remove.
4195 (__arm_vqrdmladhxq_m_s16): Remove.
4196 (__arm_vqrdmlsdhq_m_s8): Remove.
4197 (__arm_vqrdmlsdhq_m_s32): Remove.
4198 (__arm_vqrdmlsdhq_m_s16): Remove.
4199 (__arm_vqrdmlsdhxq_m_s8): Remove.
4200 (__arm_vqrdmlsdhxq_m_s32): Remove.
4201 (__arm_vqrdmlsdhxq_m_s16): Remove.
4202 (__arm_vqrdmlsdhxq): Remove.
4203 (__arm_vqrdmlsdhq): Remove.
4204 (__arm_vqrdmladhxq): Remove.
4205 (__arm_vqrdmladhq): Remove.
4206 (__arm_vqdmlsdhxq): Remove.
4207 (__arm_vqdmlsdhq): Remove.
4208 (__arm_vqdmladhxq): Remove.
4209 (__arm_vqdmladhq): Remove.
4210 (__arm_vqdmladhq_m): Remove.
4211 (__arm_vqdmladhxq_m): Remove.
4212 (__arm_vqdmlsdhq_m): Remove.
4213 (__arm_vqdmlsdhxq_m): Remove.
4214 (__arm_vqrdmladhq_m): Remove.
4215 (__arm_vqrdmladhxq_m): Remove.
4216 (__arm_vqrdmlsdhq_m): Remove.
4217 (__arm_vqrdmlsdhxq_m): Remove.
4219 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4221 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
4222 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
4223 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
4224 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
4225 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
4226 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
4227 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
4228 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
4229 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
4230 (mve_vqdmladhq_s<mode>): Merge into ...
4231 (@mve_<mve_insn>q_<supf><mode>): ... this.
4233 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4235 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
4236 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
4238 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4240 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
4241 (vmlsldavaq, vmlsldavaxq): New.
4242 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
4243 (vmlsldavaq, vmlsldavaxq): New.
4244 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
4245 (vmlsldavaq, vmlsldavaxq): New.
4246 * config/arm/arm_mve.h (vmlaldavaq): Remove.
4247 (vmlaldavaxq): Remove.
4248 (vmlsldavaq): Remove.
4249 (vmlsldavaxq): Remove.
4250 (vmlaldavaq_p): Remove.
4251 (vmlaldavaxq_p): Remove.
4252 (vmlsldavaq_p): Remove.
4253 (vmlsldavaxq_p): Remove.
4254 (vmlaldavaq_s16): Remove.
4255 (vmlaldavaxq_s16): Remove.
4256 (vmlsldavaq_s16): Remove.
4257 (vmlsldavaxq_s16): Remove.
4258 (vmlaldavaq_u16): Remove.
4259 (vmlaldavaq_s32): Remove.
4260 (vmlaldavaxq_s32): Remove.
4261 (vmlsldavaq_s32): Remove.
4262 (vmlsldavaxq_s32): Remove.
4263 (vmlaldavaq_u32): Remove.
4264 (vmlaldavaq_p_s32): Remove.
4265 (vmlaldavaq_p_s16): Remove.
4266 (vmlaldavaq_p_u32): Remove.
4267 (vmlaldavaq_p_u16): Remove.
4268 (vmlaldavaxq_p_s32): Remove.
4269 (vmlaldavaxq_p_s16): Remove.
4270 (vmlsldavaq_p_s32): Remove.
4271 (vmlsldavaq_p_s16): Remove.
4272 (vmlsldavaxq_p_s32): Remove.
4273 (vmlsldavaxq_p_s16): Remove.
4274 (__arm_vmlaldavaq_s16): Remove.
4275 (__arm_vmlaldavaxq_s16): Remove.
4276 (__arm_vmlsldavaq_s16): Remove.
4277 (__arm_vmlsldavaxq_s16): Remove.
4278 (__arm_vmlaldavaq_u16): Remove.
4279 (__arm_vmlaldavaq_s32): Remove.
4280 (__arm_vmlaldavaxq_s32): Remove.
4281 (__arm_vmlsldavaq_s32): Remove.
4282 (__arm_vmlsldavaxq_s32): Remove.
4283 (__arm_vmlaldavaq_u32): Remove.
4284 (__arm_vmlaldavaq_p_s32): Remove.
4285 (__arm_vmlaldavaq_p_s16): Remove.
4286 (__arm_vmlaldavaq_p_u32): Remove.
4287 (__arm_vmlaldavaq_p_u16): Remove.
4288 (__arm_vmlaldavaxq_p_s32): Remove.
4289 (__arm_vmlaldavaxq_p_s16): Remove.
4290 (__arm_vmlsldavaq_p_s32): Remove.
4291 (__arm_vmlsldavaq_p_s16): Remove.
4292 (__arm_vmlsldavaxq_p_s32): Remove.
4293 (__arm_vmlsldavaxq_p_s16): Remove.
4294 (__arm_vmlaldavaq): Remove.
4295 (__arm_vmlaldavaxq): Remove.
4296 (__arm_vmlsldavaq): Remove.
4297 (__arm_vmlsldavaxq): Remove.
4298 (__arm_vmlaldavaq_p): Remove.
4299 (__arm_vmlaldavaxq_p): Remove.
4300 (__arm_vmlsldavaq_p): Remove.
4301 (__arm_vmlsldavaxq_p): Remove.
4303 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4305 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
4307 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
4308 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
4309 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
4310 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
4311 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
4312 (mve_vmlaldavaxq_s<mode>): Merge into ...
4313 (@mve_<mve_insn>q_<supf><mode>): ... this.
4314 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
4315 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
4317 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4319 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4321 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
4322 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
4324 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4326 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
4327 (vrmlsldavhq, vrmlsldavhxq): New.
4328 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
4329 (vrmlsldavhq, vrmlsldavhxq): New.
4330 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
4331 (vrmlsldavhq, vrmlsldavhxq): New.
4332 * config/arm/arm-mve-builtins-functions.h
4333 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
4334 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
4335 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
4336 (vrmlsldavhxq): Remove.
4337 (vrmlsldavhq): Remove.
4338 (vrmlaldavhxq): Remove.
4339 (vrmlaldavhq_p): Remove.
4340 (vrmlaldavhxq_p): Remove.
4341 (vrmlsldavhq_p): Remove.
4342 (vrmlsldavhxq_p): Remove.
4343 (vrmlaldavhq_u32): Remove.
4344 (vrmlsldavhxq_s32): Remove.
4345 (vrmlsldavhq_s32): Remove.
4346 (vrmlaldavhxq_s32): Remove.
4347 (vrmlaldavhq_s32): Remove.
4348 (vrmlaldavhq_p_s32): Remove.
4349 (vrmlaldavhxq_p_s32): Remove.
4350 (vrmlsldavhq_p_s32): Remove.
4351 (vrmlsldavhxq_p_s32): Remove.
4352 (vrmlaldavhq_p_u32): Remove.
4353 (__arm_vrmlaldavhq_u32): Remove.
4354 (__arm_vrmlsldavhxq_s32): Remove.
4355 (__arm_vrmlsldavhq_s32): Remove.
4356 (__arm_vrmlaldavhxq_s32): Remove.
4357 (__arm_vrmlaldavhq_s32): Remove.
4358 (__arm_vrmlaldavhq_p_s32): Remove.
4359 (__arm_vrmlaldavhxq_p_s32): Remove.
4360 (__arm_vrmlsldavhq_p_s32): Remove.
4361 (__arm_vrmlsldavhxq_p_s32): Remove.
4362 (__arm_vrmlaldavhq_p_u32): Remove.
4363 (__arm_vrmlaldavhq): Remove.
4364 (__arm_vrmlsldavhxq): Remove.
4365 (__arm_vrmlsldavhq): Remove.
4366 (__arm_vrmlaldavhxq): Remove.
4367 (__arm_vrmlaldavhq_p): Remove.
4368 (__arm_vrmlaldavhxq_p): Remove.
4369 (__arm_vrmlsldavhq_p): Remove.
4370 (__arm_vrmlsldavhxq_p): Remove.
4372 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4374 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
4376 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
4377 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
4378 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
4379 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
4380 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
4381 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
4382 (@mve_<mve_insn>q_<supf>v4si): ... this.
4383 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
4384 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
4386 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4388 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4390 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
4391 (vmlsldavq, vmlsldavxq): New.
4392 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
4393 (vmlsldavq, vmlsldavxq): New.
4394 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
4395 (vmlsldavq, vmlsldavxq): New.
4396 * config/arm/arm_mve.h (vmlaldavq): Remove.
4397 (vmlsldavxq): Remove.
4398 (vmlsldavq): Remove.
4399 (vmlaldavxq): Remove.
4400 (vmlaldavq_p): Remove.
4401 (vmlaldavxq_p): Remove.
4402 (vmlsldavq_p): Remove.
4403 (vmlsldavxq_p): Remove.
4404 (vmlaldavq_u16): Remove.
4405 (vmlsldavxq_s16): Remove.
4406 (vmlsldavq_s16): Remove.
4407 (vmlaldavxq_s16): Remove.
4408 (vmlaldavq_s16): Remove.
4409 (vmlaldavq_u32): Remove.
4410 (vmlsldavxq_s32): Remove.
4411 (vmlsldavq_s32): Remove.
4412 (vmlaldavxq_s32): Remove.
4413 (vmlaldavq_s32): Remove.
4414 (vmlaldavq_p_s16): Remove.
4415 (vmlaldavxq_p_s16): Remove.
4416 (vmlsldavq_p_s16): Remove.
4417 (vmlsldavxq_p_s16): Remove.
4418 (vmlaldavq_p_u16): Remove.
4419 (vmlaldavq_p_s32): Remove.
4420 (vmlaldavxq_p_s32): Remove.
4421 (vmlsldavq_p_s32): Remove.
4422 (vmlsldavxq_p_s32): Remove.
4423 (vmlaldavq_p_u32): Remove.
4424 (__arm_vmlaldavq_u16): Remove.
4425 (__arm_vmlsldavxq_s16): Remove.
4426 (__arm_vmlsldavq_s16): Remove.
4427 (__arm_vmlaldavxq_s16): Remove.
4428 (__arm_vmlaldavq_s16): Remove.
4429 (__arm_vmlaldavq_u32): Remove.
4430 (__arm_vmlsldavxq_s32): Remove.
4431 (__arm_vmlsldavq_s32): Remove.
4432 (__arm_vmlaldavxq_s32): Remove.
4433 (__arm_vmlaldavq_s32): Remove.
4434 (__arm_vmlaldavq_p_s16): Remove.
4435 (__arm_vmlaldavxq_p_s16): Remove.
4436 (__arm_vmlsldavq_p_s16): Remove.
4437 (__arm_vmlsldavxq_p_s16): Remove.
4438 (__arm_vmlaldavq_p_u16): Remove.
4439 (__arm_vmlaldavq_p_s32): Remove.
4440 (__arm_vmlaldavxq_p_s32): Remove.
4441 (__arm_vmlsldavq_p_s32): Remove.
4442 (__arm_vmlsldavxq_p_s32): Remove.
4443 (__arm_vmlaldavq_p_u32): Remove.
4444 (__arm_vmlaldavq): Remove.
4445 (__arm_vmlsldavxq): Remove.
4446 (__arm_vmlsldavq): Remove.
4447 (__arm_vmlaldavxq): Remove.
4448 (__arm_vmlaldavq_p): Remove.
4449 (__arm_vmlaldavxq_p): Remove.
4450 (__arm_vmlsldavq_p): Remove.
4451 (__arm_vmlsldavxq_p): Remove.
4453 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4455 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
4456 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
4457 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
4458 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
4459 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
4460 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
4461 (mve_vmlsldavxq_s<mode>): Merge into ...
4462 (@mve_<mve_insn>q_<supf><mode>): ... this.
4463 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
4464 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
4466 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4468 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4470 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
4471 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
4473 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4475 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
4476 * config/arm/arm-mve-builtins-base.def (vabavq): New.
4477 * config/arm/arm-mve-builtins-base.h (vabavq): New.
4478 * config/arm/arm_mve.h (vabavq): Remove.
4480 (vabavq_s8): Remove.
4481 (vabavq_s16): Remove.
4482 (vabavq_s32): Remove.
4483 (vabavq_u8): Remove.
4484 (vabavq_u16): Remove.
4485 (vabavq_u32): Remove.
4486 (vabavq_p_s8): Remove.
4487 (vabavq_p_u8): Remove.
4488 (vabavq_p_s16): Remove.
4489 (vabavq_p_u16): Remove.
4490 (vabavq_p_s32): Remove.
4491 (vabavq_p_u32): Remove.
4492 (__arm_vabavq_s8): Remove.
4493 (__arm_vabavq_s16): Remove.
4494 (__arm_vabavq_s32): Remove.
4495 (__arm_vabavq_u8): Remove.
4496 (__arm_vabavq_u16): Remove.
4497 (__arm_vabavq_u32): Remove.
4498 (__arm_vabavq_p_s8): Remove.
4499 (__arm_vabavq_p_u8): Remove.
4500 (__arm_vabavq_p_s16): Remove.
4501 (__arm_vabavq_p_u16): Remove.
4502 (__arm_vabavq_p_s32): Remove.
4503 (__arm_vabavq_p_u32): Remove.
4504 (__arm_vabavq): Remove.
4505 (__arm_vabavq_p): Remove.
4507 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4509 * config/arm/iterators.md (mve_insn): Add vabav.
4510 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
4511 (@mve_<mve_insn>q_<supf><mode>): ... this,.
4512 (mve_vabavq_p_<supf><mode>): Rename into ...
4513 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
4515 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4517 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
4518 (vmlsdavaq, vmlsdavaxq): New.
4519 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
4520 (vmlsdavaq, vmlsdavaxq): New.
4521 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
4522 (vmlsdavaq, vmlsdavaxq): New.
4523 * config/arm/arm_mve.h (vmladavaq): Remove.
4524 (vmlsdavaxq): Remove.
4525 (vmlsdavaq): Remove.
4526 (vmladavaxq): Remove.
4527 (vmladavaq_p): Remove.
4528 (vmladavaxq_p): Remove.
4529 (vmlsdavaq_p): Remove.
4530 (vmlsdavaxq_p): Remove.
4531 (vmladavaq_u8): Remove.
4532 (vmlsdavaxq_s8): Remove.
4533 (vmlsdavaq_s8): Remove.
4534 (vmladavaxq_s8): Remove.
4535 (vmladavaq_s8): Remove.
4536 (vmladavaq_u16): Remove.
4537 (vmlsdavaxq_s16): Remove.
4538 (vmlsdavaq_s16): Remove.
4539 (vmladavaxq_s16): Remove.
4540 (vmladavaq_s16): Remove.
4541 (vmladavaq_u32): Remove.
4542 (vmlsdavaxq_s32): Remove.
4543 (vmlsdavaq_s32): Remove.
4544 (vmladavaxq_s32): Remove.
4545 (vmladavaq_s32): Remove.
4546 (vmladavaq_p_s8): Remove.
4547 (vmladavaq_p_s32): Remove.
4548 (vmladavaq_p_s16): Remove.
4549 (vmladavaq_p_u8): Remove.
4550 (vmladavaq_p_u32): Remove.
4551 (vmladavaq_p_u16): Remove.
4552 (vmladavaxq_p_s8): Remove.
4553 (vmladavaxq_p_s32): Remove.
4554 (vmladavaxq_p_s16): Remove.
4555 (vmlsdavaq_p_s8): Remove.
4556 (vmlsdavaq_p_s32): Remove.
4557 (vmlsdavaq_p_s16): Remove.
4558 (vmlsdavaxq_p_s8): Remove.
4559 (vmlsdavaxq_p_s32): Remove.
4560 (vmlsdavaxq_p_s16): Remove.
4561 (__arm_vmladavaq_u8): Remove.
4562 (__arm_vmlsdavaxq_s8): Remove.
4563 (__arm_vmlsdavaq_s8): Remove.
4564 (__arm_vmladavaxq_s8): Remove.
4565 (__arm_vmladavaq_s8): Remove.
4566 (__arm_vmladavaq_u16): Remove.
4567 (__arm_vmlsdavaxq_s16): Remove.
4568 (__arm_vmlsdavaq_s16): Remove.
4569 (__arm_vmladavaxq_s16): Remove.
4570 (__arm_vmladavaq_s16): Remove.
4571 (__arm_vmladavaq_u32): Remove.
4572 (__arm_vmlsdavaxq_s32): Remove.
4573 (__arm_vmlsdavaq_s32): Remove.
4574 (__arm_vmladavaxq_s32): Remove.
4575 (__arm_vmladavaq_s32): Remove.
4576 (__arm_vmladavaq_p_s8): Remove.
4577 (__arm_vmladavaq_p_s32): Remove.
4578 (__arm_vmladavaq_p_s16): Remove.
4579 (__arm_vmladavaq_p_u8): Remove.
4580 (__arm_vmladavaq_p_u32): Remove.
4581 (__arm_vmladavaq_p_u16): Remove.
4582 (__arm_vmladavaxq_p_s8): Remove.
4583 (__arm_vmladavaxq_p_s32): Remove.
4584 (__arm_vmladavaxq_p_s16): Remove.
4585 (__arm_vmlsdavaq_p_s8): Remove.
4586 (__arm_vmlsdavaq_p_s32): Remove.
4587 (__arm_vmlsdavaq_p_s16): Remove.
4588 (__arm_vmlsdavaxq_p_s8): Remove.
4589 (__arm_vmlsdavaxq_p_s32): Remove.
4590 (__arm_vmlsdavaxq_p_s16): Remove.
4591 (__arm_vmladavaq): Remove.
4592 (__arm_vmlsdavaxq): Remove.
4593 (__arm_vmlsdavaq): Remove.
4594 (__arm_vmladavaxq): Remove.
4595 (__arm_vmladavaq_p): Remove.
4596 (__arm_vmladavaxq_p): Remove.
4597 (__arm_vmlsdavaq_p): Remove.
4598 (__arm_vmlsdavaxq_p): Remove.
4600 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4602 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
4603 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
4605 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4607 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
4608 (vmlsdavq, vmlsdavxq): New.
4609 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
4610 (vmlsdavq, vmlsdavxq): New.
4611 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
4612 (vmlsdavq, vmlsdavxq): New.
4613 * config/arm/arm_mve.h (vmladavq): Remove.
4614 (vmlsdavxq): Remove.
4616 (vmladavxq): Remove.
4617 (vmladavq_p): Remove.
4618 (vmlsdavxq_p): Remove.
4619 (vmlsdavq_p): Remove.
4620 (vmladavxq_p): Remove.
4621 (vmladavq_u8): Remove.
4622 (vmlsdavxq_s8): Remove.
4623 (vmlsdavq_s8): Remove.
4624 (vmladavxq_s8): Remove.
4625 (vmladavq_s8): Remove.
4626 (vmladavq_u16): Remove.
4627 (vmlsdavxq_s16): Remove.
4628 (vmlsdavq_s16): Remove.
4629 (vmladavxq_s16): Remove.
4630 (vmladavq_s16): Remove.
4631 (vmladavq_u32): Remove.
4632 (vmlsdavxq_s32): Remove.
4633 (vmlsdavq_s32): Remove.
4634 (vmladavxq_s32): Remove.
4635 (vmladavq_s32): Remove.
4636 (vmladavq_p_u8): Remove.
4637 (vmlsdavxq_p_s8): Remove.
4638 (vmlsdavq_p_s8): Remove.
4639 (vmladavxq_p_s8): Remove.
4640 (vmladavq_p_s8): Remove.
4641 (vmladavq_p_u16): Remove.
4642 (vmlsdavxq_p_s16): Remove.
4643 (vmlsdavq_p_s16): Remove.
4644 (vmladavxq_p_s16): Remove.
4645 (vmladavq_p_s16): Remove.
4646 (vmladavq_p_u32): Remove.
4647 (vmlsdavxq_p_s32): Remove.
4648 (vmlsdavq_p_s32): Remove.
4649 (vmladavxq_p_s32): Remove.
4650 (vmladavq_p_s32): Remove.
4651 (__arm_vmladavq_u8): Remove.
4652 (__arm_vmlsdavxq_s8): Remove.
4653 (__arm_vmlsdavq_s8): Remove.
4654 (__arm_vmladavxq_s8): Remove.
4655 (__arm_vmladavq_s8): Remove.
4656 (__arm_vmladavq_u16): Remove.
4657 (__arm_vmlsdavxq_s16): Remove.
4658 (__arm_vmlsdavq_s16): Remove.
4659 (__arm_vmladavxq_s16): Remove.
4660 (__arm_vmladavq_s16): Remove.
4661 (__arm_vmladavq_u32): Remove.
4662 (__arm_vmlsdavxq_s32): Remove.
4663 (__arm_vmlsdavq_s32): Remove.
4664 (__arm_vmladavxq_s32): Remove.
4665 (__arm_vmladavq_s32): Remove.
4666 (__arm_vmladavq_p_u8): Remove.
4667 (__arm_vmlsdavxq_p_s8): Remove.
4668 (__arm_vmlsdavq_p_s8): Remove.
4669 (__arm_vmladavxq_p_s8): Remove.
4670 (__arm_vmladavq_p_s8): Remove.
4671 (__arm_vmladavq_p_u16): Remove.
4672 (__arm_vmlsdavxq_p_s16): Remove.
4673 (__arm_vmlsdavq_p_s16): Remove.
4674 (__arm_vmladavxq_p_s16): Remove.
4675 (__arm_vmladavq_p_s16): Remove.
4676 (__arm_vmladavq_p_u32): Remove.
4677 (__arm_vmlsdavxq_p_s32): Remove.
4678 (__arm_vmlsdavq_p_s32): Remove.
4679 (__arm_vmladavxq_p_s32): Remove.
4680 (__arm_vmladavq_p_s32): Remove.
4681 (__arm_vmladavq): Remove.
4682 (__arm_vmlsdavxq): Remove.
4683 (__arm_vmlsdavq): Remove.
4684 (__arm_vmladavxq): Remove.
4685 (__arm_vmladavq_p): Remove.
4686 (__arm_vmlsdavxq_p): Remove.
4687 (__arm_vmlsdavq_p): Remove.
4688 (__arm_vmladavxq_p): Remove.
4690 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4692 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
4693 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
4694 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
4695 vmlsdavax, vmlsdav, vmlsdavx.
4696 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
4697 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
4698 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
4700 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
4701 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
4702 (mve_vmlsdavxq_s<mode>): Merge into ...
4703 (@mve_<mve_insn>q_<supf><mode>): ... this.
4704 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
4705 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
4707 (@mve_<mve_insn>q_<supf><mode>): ... this.
4708 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
4709 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
4710 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4711 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
4712 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
4714 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4716 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4718 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
4719 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
4721 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4723 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
4724 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
4725 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
4726 * config/arm/arm_mve.h (vaddlvaq): Remove.
4727 (vaddlvaq_p): Remove.
4728 (vaddlvaq_u32): Remove.
4729 (vaddlvaq_s32): Remove.
4730 (vaddlvaq_p_s32): Remove.
4731 (vaddlvaq_p_u32): Remove.
4732 (__arm_vaddlvaq_u32): Remove.
4733 (__arm_vaddlvaq_s32): Remove.
4734 (__arm_vaddlvaq_p_s32): Remove.
4735 (__arm_vaddlvaq_p_u32): Remove.
4736 (__arm_vaddlvaq): Remove.
4737 (__arm_vaddlvaq_p): Remove.
4739 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4741 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
4742 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
4744 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4746 * config/arm/iterators.md (mve_insn): Add vaddlva.
4747 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
4748 (@mve_<mve_insn>q_<supf>v4si): ... this.
4749 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
4750 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4752 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
4755 * config/i386/i386.cc (ix86_widen_mult_cost):
4756 Handle V4HImode and V2SImode.
4758 2023-05-11 Andrew Pinski <apinski@marvell.com>
4760 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
4761 defined by a phi node with more than one uses, allow for the
4762 only uses are in that same defining statement.
4764 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4766 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
4769 2023-05-11 Pan Li <pan2.li@intel.com>
4771 * config/riscv/vector.md: Add comments for simplifying to vmset.
4773 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4775 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
4777 (v<optab><mode>3): Add vector shift pattern.
4778 * config/riscv/vector-iterators.md: New iterator.
4780 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4782 * config/riscv/autovec.md: Use renamed functions.
4783 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
4784 (emit_vlmax_reg_op): To this.
4785 (emit_nonvlmax_op): Rename.
4786 (emit_len_op): To this.
4787 (emit_nonvlmax_binop): Rename.
4788 (emit_len_binop): To this.
4789 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
4790 (emit_pred_binop): Remove vlmax_p.
4791 (emit_vlmax_op): Rename.
4792 (emit_vlmax_reg_op): To this.
4793 (emit_nonvlmax_op): Rename.
4794 (emit_len_op): To this.
4795 (emit_nonvlmax_binop): Rename.
4796 (emit_len_binop): To this.
4797 (sew64_scalar_helper): Use renamed functions.
4798 (expand_tuple_move): Use renamed functions.
4799 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
4801 * config/riscv/vector.md: Use renamed functions.
4803 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4804 Michael Collison <collison@rivosinc.com>
4806 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
4807 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
4808 * config/riscv/riscv-v.cc (emit_pred_op): New function.
4809 (set_expander_dest_and_mask): New function.
4810 (emit_pred_binop): New function.
4811 (emit_nonvlmax_binop): New function.
4813 2023-05-11 Pan Li <pan2.li@intel.com>
4815 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
4816 * gimple-loop-interchange.cc
4817 (tree_loop_interchange::map_inductions_to_loop): Ditto.
4818 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
4819 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
4820 * tree-ssa-loop-manip.cc (create_iv): Ditto.
4821 (tree_transform_and_unroll_loop): Ditto.
4822 (canonicalize_loop_ivs): Ditto.
4823 * tree-ssa-loop-manip.h (create_iv): Ditto.
4824 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
4825 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
4827 (vect_set_loop_condition_normal): Ditto.
4828 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
4829 * tree-vect-stmts.cc (vectorizable_store): Ditto.
4830 (vectorizable_load): Ditto.
4832 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4834 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
4835 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
4836 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
4837 * config/arm/arm_mve.h (vmovlbq): Remove.
4839 (vmovlbq_m): Remove.
4840 (vmovltq_m): Remove.
4841 (vmovlbq_x): Remove.
4842 (vmovltq_x): Remove.
4843 (vmovlbq_s8): Remove.
4844 (vmovlbq_s16): Remove.
4845 (vmovltq_s8): Remove.
4846 (vmovltq_s16): Remove.
4847 (vmovltq_u8): Remove.
4848 (vmovltq_u16): Remove.
4849 (vmovlbq_u8): Remove.
4850 (vmovlbq_u16): Remove.
4851 (vmovlbq_m_s8): Remove.
4852 (vmovltq_m_s8): Remove.
4853 (vmovlbq_m_u8): Remove.
4854 (vmovltq_m_u8): Remove.
4855 (vmovlbq_m_s16): Remove.
4856 (vmovltq_m_s16): Remove.
4857 (vmovlbq_m_u16): Remove.
4858 (vmovltq_m_u16): Remove.
4859 (vmovlbq_x_s8): Remove.
4860 (vmovlbq_x_s16): Remove.
4861 (vmovlbq_x_u8): Remove.
4862 (vmovlbq_x_u16): Remove.
4863 (vmovltq_x_s8): Remove.
4864 (vmovltq_x_s16): Remove.
4865 (vmovltq_x_u8): Remove.
4866 (vmovltq_x_u16): Remove.
4867 (__arm_vmovlbq_s8): Remove.
4868 (__arm_vmovlbq_s16): Remove.
4869 (__arm_vmovltq_s8): Remove.
4870 (__arm_vmovltq_s16): Remove.
4871 (__arm_vmovltq_u8): Remove.
4872 (__arm_vmovltq_u16): Remove.
4873 (__arm_vmovlbq_u8): Remove.
4874 (__arm_vmovlbq_u16): Remove.
4875 (__arm_vmovlbq_m_s8): Remove.
4876 (__arm_vmovltq_m_s8): Remove.
4877 (__arm_vmovlbq_m_u8): Remove.
4878 (__arm_vmovltq_m_u8): Remove.
4879 (__arm_vmovlbq_m_s16): Remove.
4880 (__arm_vmovltq_m_s16): Remove.
4881 (__arm_vmovlbq_m_u16): Remove.
4882 (__arm_vmovltq_m_u16): Remove.
4883 (__arm_vmovlbq_x_s8): Remove.
4884 (__arm_vmovlbq_x_s16): Remove.
4885 (__arm_vmovlbq_x_u8): Remove.
4886 (__arm_vmovlbq_x_u16): Remove.
4887 (__arm_vmovltq_x_s8): Remove.
4888 (__arm_vmovltq_x_s16): Remove.
4889 (__arm_vmovltq_x_u8): Remove.
4890 (__arm_vmovltq_x_u16): Remove.
4891 (__arm_vmovlbq): Remove.
4892 (__arm_vmovltq): Remove.
4893 (__arm_vmovlbq_m): Remove.
4894 (__arm_vmovltq_m): Remove.
4895 (__arm_vmovlbq_x): Remove.
4896 (__arm_vmovltq_x): Remove.
4898 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4900 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
4901 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
4903 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4905 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
4906 (VMOVLBQ, VMOVLTQ): Merge into ...
4907 (VMOVLxQ): ... this.
4908 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
4909 (VMOVLxQ_M): ... this.
4910 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
4911 (mve_vmovlbq_<supf><mode>): Merge into ...
4912 (@mve_<mve_insn>q_<supf><mode>): ... this.
4913 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
4915 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4917 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4919 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
4920 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
4921 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
4922 * config/arm/arm-mve-builtins-functions.h
4923 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
4924 * config/arm/arm_mve.h (vaddlvq): Remove.
4925 (vaddlvq_p): Remove.
4926 (vaddlvq_s32): Remove.
4927 (vaddlvq_u32): Remove.
4928 (vaddlvq_p_s32): Remove.
4929 (vaddlvq_p_u32): Remove.
4930 (__arm_vaddlvq_s32): Remove.
4931 (__arm_vaddlvq_u32): Remove.
4932 (__arm_vaddlvq_p_s32): Remove.
4933 (__arm_vaddlvq_p_u32): Remove.
4934 (__arm_vaddlvq): Remove.
4935 (__arm_vaddlvq_p): Remove.
4937 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4939 * config/arm/iterators.md (mve_insn): Add vaddlv.
4940 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
4941 (@mve_<mve_insn>q_<supf>v4si): ... this.
4942 (mve_vaddlvq_p_<supf>v4si): Rename into ...
4943 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4945 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4947 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
4948 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
4950 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4952 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
4953 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
4954 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
4955 * config/arm/arm_mve.h (vaddvaq): Remove.
4956 (vaddvaq_p): Remove.
4957 (vaddvaq_u8): Remove.
4958 (vaddvaq_s8): Remove.
4959 (vaddvaq_u16): Remove.
4960 (vaddvaq_s16): Remove.
4961 (vaddvaq_u32): Remove.
4962 (vaddvaq_s32): Remove.
4963 (vaddvaq_p_u8): Remove.
4964 (vaddvaq_p_s8): Remove.
4965 (vaddvaq_p_u16): Remove.
4966 (vaddvaq_p_s16): Remove.
4967 (vaddvaq_p_u32): Remove.
4968 (vaddvaq_p_s32): Remove.
4969 (__arm_vaddvaq_u8): Remove.
4970 (__arm_vaddvaq_s8): Remove.
4971 (__arm_vaddvaq_u16): Remove.
4972 (__arm_vaddvaq_s16): Remove.
4973 (__arm_vaddvaq_u32): Remove.
4974 (__arm_vaddvaq_s32): Remove.
4975 (__arm_vaddvaq_p_u8): Remove.
4976 (__arm_vaddvaq_p_s8): Remove.
4977 (__arm_vaddvaq_p_u16): Remove.
4978 (__arm_vaddvaq_p_s16): Remove.
4979 (__arm_vaddvaq_p_u32): Remove.
4980 (__arm_vaddvaq_p_s32): Remove.
4981 (__arm_vaddvaq): Remove.
4982 (__arm_vaddvaq_p): Remove.
4984 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4986 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
4987 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
4989 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4991 * config/arm/iterators.md (mve_insn): Add vaddva.
4992 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
4993 (@mve_<mve_insn>q_<supf><mode>): ... this.
4994 (mve_vaddvaq_p_<supf><mode>): Rename into ...
4995 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4997 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4999 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
5000 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
5001 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
5002 * config/arm/arm_mve.h (vaddvq): Remove.
5004 (vaddvq_s8): Remove.
5005 (vaddvq_s16): Remove.
5006 (vaddvq_s32): Remove.
5007 (vaddvq_u8): Remove.
5008 (vaddvq_u16): Remove.
5009 (vaddvq_u32): Remove.
5010 (vaddvq_p_u8): Remove.
5011 (vaddvq_p_s8): Remove.
5012 (vaddvq_p_u16): Remove.
5013 (vaddvq_p_s16): Remove.
5014 (vaddvq_p_u32): Remove.
5015 (vaddvq_p_s32): Remove.
5016 (__arm_vaddvq_s8): Remove.
5017 (__arm_vaddvq_s16): Remove.
5018 (__arm_vaddvq_s32): Remove.
5019 (__arm_vaddvq_u8): Remove.
5020 (__arm_vaddvq_u16): Remove.
5021 (__arm_vaddvq_u32): Remove.
5022 (__arm_vaddvq_p_u8): Remove.
5023 (__arm_vaddvq_p_s8): Remove.
5024 (__arm_vaddvq_p_u16): Remove.
5025 (__arm_vaddvq_p_s16): Remove.
5026 (__arm_vaddvq_p_u32): Remove.
5027 (__arm_vaddvq_p_s32): Remove.
5028 (__arm_vaddvq): Remove.
5029 (__arm_vaddvq_p): Remove.
5031 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5033 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
5034 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
5036 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5038 * config/arm/iterators.md (mve_insn): Add vaddv.
5039 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
5040 (@mve_<mve_insn>q_<supf><mode>): ... this.
5041 (mve_vaddvq_p_<supf><mode>): Rename into ...
5042 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5043 * config/arm/vec-common.md: Use gen_mve_q instead of
5046 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5048 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
5050 * config/arm/arm-mve-builtins-base.def (vdupq): New.
5051 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
5052 * config/arm/arm_mve.h (vdupq_n): Remove.
5054 (vdupq_n_f16): Remove.
5055 (vdupq_n_f32): Remove.
5056 (vdupq_n_s8): Remove.
5057 (vdupq_n_s16): Remove.
5058 (vdupq_n_s32): Remove.
5059 (vdupq_n_u8): Remove.
5060 (vdupq_n_u16): Remove.
5061 (vdupq_n_u32): Remove.
5062 (vdupq_m_n_u8): Remove.
5063 (vdupq_m_n_s8): Remove.
5064 (vdupq_m_n_u16): Remove.
5065 (vdupq_m_n_s16): Remove.
5066 (vdupq_m_n_u32): Remove.
5067 (vdupq_m_n_s32): Remove.
5068 (vdupq_m_n_f16): Remove.
5069 (vdupq_m_n_f32): Remove.
5070 (vdupq_x_n_s8): Remove.
5071 (vdupq_x_n_s16): Remove.
5072 (vdupq_x_n_s32): Remove.
5073 (vdupq_x_n_u8): Remove.
5074 (vdupq_x_n_u16): Remove.
5075 (vdupq_x_n_u32): Remove.
5076 (vdupq_x_n_f16): Remove.
5077 (vdupq_x_n_f32): Remove.
5078 (__arm_vdupq_n_s8): Remove.
5079 (__arm_vdupq_n_s16): Remove.
5080 (__arm_vdupq_n_s32): Remove.
5081 (__arm_vdupq_n_u8): Remove.
5082 (__arm_vdupq_n_u16): Remove.
5083 (__arm_vdupq_n_u32): Remove.
5084 (__arm_vdupq_m_n_u8): Remove.
5085 (__arm_vdupq_m_n_s8): Remove.
5086 (__arm_vdupq_m_n_u16): Remove.
5087 (__arm_vdupq_m_n_s16): Remove.
5088 (__arm_vdupq_m_n_u32): Remove.
5089 (__arm_vdupq_m_n_s32): Remove.
5090 (__arm_vdupq_x_n_s8): Remove.
5091 (__arm_vdupq_x_n_s16): Remove.
5092 (__arm_vdupq_x_n_s32): Remove.
5093 (__arm_vdupq_x_n_u8): Remove.
5094 (__arm_vdupq_x_n_u16): Remove.
5095 (__arm_vdupq_x_n_u32): Remove.
5096 (__arm_vdupq_n_f16): Remove.
5097 (__arm_vdupq_n_f32): Remove.
5098 (__arm_vdupq_m_n_f16): Remove.
5099 (__arm_vdupq_m_n_f32): Remove.
5100 (__arm_vdupq_x_n_f16): Remove.
5101 (__arm_vdupq_x_n_f32): Remove.
5102 (__arm_vdupq_n): Remove.
5103 (__arm_vdupq_m): Remove.
5105 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5107 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
5108 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
5110 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5112 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
5113 (MVE_FP_N_VDUPQ_ONLY): New.
5114 (mve_insn): Add vdupq.
5115 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
5116 (@mve_<mve_insn>q_n_f<mode>): ... this.
5117 (mve_vdupq_n_<supf><mode>): Rename into ...
5118 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5119 (mve_vdupq_m_n_<supf><mode>): Rename into ...
5120 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5121 (mve_vdupq_m_n_f<mode>): Rename into ...
5122 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
5124 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5126 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
5128 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
5130 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
5132 * config/arm/arm_mve.h (vrev16q): Remove.
5135 (vrev64q_m): Remove.
5136 (vrev16q_m): Remove.
5137 (vrev32q_m): Remove.
5138 (vrev16q_x): Remove.
5139 (vrev32q_x): Remove.
5140 (vrev64q_x): Remove.
5141 (vrev64q_f16): Remove.
5142 (vrev64q_f32): Remove.
5143 (vrev32q_f16): Remove.
5144 (vrev16q_s8): Remove.
5145 (vrev32q_s8): Remove.
5146 (vrev32q_s16): Remove.
5147 (vrev64q_s8): Remove.
5148 (vrev64q_s16): Remove.
5149 (vrev64q_s32): Remove.
5150 (vrev64q_u8): Remove.
5151 (vrev64q_u16): Remove.
5152 (vrev64q_u32): Remove.
5153 (vrev32q_u8): Remove.
5154 (vrev32q_u16): Remove.
5155 (vrev16q_u8): Remove.
5156 (vrev64q_m_u8): Remove.
5157 (vrev64q_m_s8): Remove.
5158 (vrev64q_m_u16): Remove.
5159 (vrev64q_m_s16): Remove.
5160 (vrev64q_m_u32): Remove.
5161 (vrev64q_m_s32): Remove.
5162 (vrev16q_m_s8): Remove.
5163 (vrev32q_m_f16): Remove.
5164 (vrev16q_m_u8): Remove.
5165 (vrev32q_m_s8): Remove.
5166 (vrev64q_m_f16): Remove.
5167 (vrev32q_m_u8): Remove.
5168 (vrev32q_m_s16): Remove.
5169 (vrev64q_m_f32): Remove.
5170 (vrev32q_m_u16): Remove.
5171 (vrev16q_x_s8): Remove.
5172 (vrev16q_x_u8): Remove.
5173 (vrev32q_x_s8): Remove.
5174 (vrev32q_x_s16): Remove.
5175 (vrev32q_x_u8): Remove.
5176 (vrev32q_x_u16): Remove.
5177 (vrev64q_x_s8): Remove.
5178 (vrev64q_x_s16): Remove.
5179 (vrev64q_x_s32): Remove.
5180 (vrev64q_x_u8): Remove.
5181 (vrev64q_x_u16): Remove.
5182 (vrev64q_x_u32): Remove.
5183 (vrev32q_x_f16): Remove.
5184 (vrev64q_x_f16): Remove.
5185 (vrev64q_x_f32): Remove.
5186 (__arm_vrev16q_s8): Remove.
5187 (__arm_vrev32q_s8): Remove.
5188 (__arm_vrev32q_s16): Remove.
5189 (__arm_vrev64q_s8): Remove.
5190 (__arm_vrev64q_s16): Remove.
5191 (__arm_vrev64q_s32): Remove.
5192 (__arm_vrev64q_u8): Remove.
5193 (__arm_vrev64q_u16): Remove.
5194 (__arm_vrev64q_u32): Remove.
5195 (__arm_vrev32q_u8): Remove.
5196 (__arm_vrev32q_u16): Remove.
5197 (__arm_vrev16q_u8): Remove.
5198 (__arm_vrev64q_m_u8): Remove.
5199 (__arm_vrev64q_m_s8): Remove.
5200 (__arm_vrev64q_m_u16): Remove.
5201 (__arm_vrev64q_m_s16): Remove.
5202 (__arm_vrev64q_m_u32): Remove.
5203 (__arm_vrev64q_m_s32): Remove.
5204 (__arm_vrev16q_m_s8): Remove.
5205 (__arm_vrev16q_m_u8): Remove.
5206 (__arm_vrev32q_m_s8): Remove.
5207 (__arm_vrev32q_m_u8): Remove.
5208 (__arm_vrev32q_m_s16): Remove.
5209 (__arm_vrev32q_m_u16): Remove.
5210 (__arm_vrev16q_x_s8): Remove.
5211 (__arm_vrev16q_x_u8): Remove.
5212 (__arm_vrev32q_x_s8): Remove.
5213 (__arm_vrev32q_x_s16): Remove.
5214 (__arm_vrev32q_x_u8): Remove.
5215 (__arm_vrev32q_x_u16): Remove.
5216 (__arm_vrev64q_x_s8): Remove.
5217 (__arm_vrev64q_x_s16): Remove.
5218 (__arm_vrev64q_x_s32): Remove.
5219 (__arm_vrev64q_x_u8): Remove.
5220 (__arm_vrev64q_x_u16): Remove.
5221 (__arm_vrev64q_x_u32): Remove.
5222 (__arm_vrev64q_f16): Remove.
5223 (__arm_vrev64q_f32): Remove.
5224 (__arm_vrev32q_f16): Remove.
5225 (__arm_vrev32q_m_f16): Remove.
5226 (__arm_vrev64q_m_f16): Remove.
5227 (__arm_vrev64q_m_f32): Remove.
5228 (__arm_vrev32q_x_f16): Remove.
5229 (__arm_vrev64q_x_f16): Remove.
5230 (__arm_vrev64q_x_f32): Remove.
5231 (__arm_vrev16q): Remove.
5232 (__arm_vrev32q): Remove.
5233 (__arm_vrev64q): Remove.
5234 (__arm_vrev64q_m): Remove.
5235 (__arm_vrev16q_m): Remove.
5236 (__arm_vrev32q_m): Remove.
5237 (__arm_vrev16q_x): Remove.
5238 (__arm_vrev32q_x): Remove.
5239 (__arm_vrev64q_x): Remove.
5241 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5243 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
5244 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
5245 (MVE_FP_M_VREV32Q_ONLY): New iterators.
5246 (mve_insn): Add vrev16q, vrev32q, vrev64q.
5247 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
5248 (@mve_<mve_insn>q_f<mode>): ... this
5249 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
5250 (mve_vrev64q_<supf><mode>): Rename into ...
5251 (@mve_<mve_insn>q_<supf><mode>): ... this.
5252 (mve_vrev32q_<supf><mode>): Rename into
5253 @mve_<mve_insn>q_<supf><mode>.
5254 (mve_vrev16q_<supf>v16qi): Rename into
5255 @mve_<mve_insn>q_<supf><mode>.
5256 (mve_vrev64q_m_<supf><mode>): Rename into
5257 @mve_<mve_insn>q_m_<supf><mode>.
5258 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
5259 (mve_vrev32q_m_<supf><mode>): Rename into
5260 @mve_<mve_insn>q_m_<supf><mode>.
5261 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
5262 (mve_vrev16q_m_<supf>v16qi): Rename into
5263 @mve_<mve_insn>q_m_<supf><mode>.
5265 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5267 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
5268 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5269 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
5270 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5271 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
5272 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5273 * config/arm/arm-mve-builtins-functions.h (class
5274 unspec_based_mve_function_exact_insn_vcmp): New.
5275 * config/arm/arm-mve-builtins.cc
5276 (function_instance::has_inactive_argument): Handle vcmp.
5277 * config/arm/arm_mve.h (vcmpneq): Remove.
5285 (vcmpneq_m): Remove.
5286 (vcmphiq_m): Remove.
5287 (vcmpeqq_m): Remove.
5288 (vcmpcsq_m): Remove.
5289 (vcmpcsq_m_n): Remove.
5290 (vcmpltq_m): Remove.
5291 (vcmpleq_m): Remove.
5292 (vcmpgtq_m): Remove.
5293 (vcmpgeq_m): Remove.
5294 (vcmpneq_s8): Remove.
5295 (vcmpneq_s16): Remove.
5296 (vcmpneq_s32): Remove.
5297 (vcmpneq_u8): Remove.
5298 (vcmpneq_u16): Remove.
5299 (vcmpneq_u32): Remove.
5300 (vcmpneq_n_u8): Remove.
5301 (vcmphiq_u8): Remove.
5302 (vcmphiq_n_u8): Remove.
5303 (vcmpeqq_u8): Remove.
5304 (vcmpeqq_n_u8): Remove.
5305 (vcmpcsq_u8): Remove.
5306 (vcmpcsq_n_u8): Remove.
5307 (vcmpneq_n_s8): Remove.
5308 (vcmpltq_s8): Remove.
5309 (vcmpltq_n_s8): Remove.
5310 (vcmpleq_s8): Remove.
5311 (vcmpleq_n_s8): Remove.
5312 (vcmpgtq_s8): Remove.
5313 (vcmpgtq_n_s8): Remove.
5314 (vcmpgeq_s8): Remove.
5315 (vcmpgeq_n_s8): Remove.
5316 (vcmpeqq_s8): Remove.
5317 (vcmpeqq_n_s8): Remove.
5318 (vcmpneq_n_u16): Remove.
5319 (vcmphiq_u16): Remove.
5320 (vcmphiq_n_u16): Remove.
5321 (vcmpeqq_u16): Remove.
5322 (vcmpeqq_n_u16): Remove.
5323 (vcmpcsq_u16): Remove.
5324 (vcmpcsq_n_u16): Remove.
5325 (vcmpneq_n_s16): Remove.
5326 (vcmpltq_s16): Remove.
5327 (vcmpltq_n_s16): Remove.
5328 (vcmpleq_s16): Remove.
5329 (vcmpleq_n_s16): Remove.
5330 (vcmpgtq_s16): Remove.
5331 (vcmpgtq_n_s16): Remove.
5332 (vcmpgeq_s16): Remove.
5333 (vcmpgeq_n_s16): Remove.
5334 (vcmpeqq_s16): Remove.
5335 (vcmpeqq_n_s16): Remove.
5336 (vcmpneq_n_u32): Remove.
5337 (vcmphiq_u32): Remove.
5338 (vcmphiq_n_u32): Remove.
5339 (vcmpeqq_u32): Remove.
5340 (vcmpeqq_n_u32): Remove.
5341 (vcmpcsq_u32): Remove.
5342 (vcmpcsq_n_u32): Remove.
5343 (vcmpneq_n_s32): Remove.
5344 (vcmpltq_s32): Remove.
5345 (vcmpltq_n_s32): Remove.
5346 (vcmpleq_s32): Remove.
5347 (vcmpleq_n_s32): Remove.
5348 (vcmpgtq_s32): Remove.
5349 (vcmpgtq_n_s32): Remove.
5350 (vcmpgeq_s32): Remove.
5351 (vcmpgeq_n_s32): Remove.
5352 (vcmpeqq_s32): Remove.
5353 (vcmpeqq_n_s32): Remove.
5354 (vcmpneq_n_f16): Remove.
5355 (vcmpneq_f16): Remove.
5356 (vcmpltq_n_f16): Remove.
5357 (vcmpltq_f16): Remove.
5358 (vcmpleq_n_f16): Remove.
5359 (vcmpleq_f16): Remove.
5360 (vcmpgtq_n_f16): Remove.
5361 (vcmpgtq_f16): Remove.
5362 (vcmpgeq_n_f16): Remove.
5363 (vcmpgeq_f16): Remove.
5364 (vcmpeqq_n_f16): Remove.
5365 (vcmpeqq_f16): Remove.
5366 (vcmpneq_n_f32): Remove.
5367 (vcmpneq_f32): Remove.
5368 (vcmpltq_n_f32): Remove.
5369 (vcmpltq_f32): Remove.
5370 (vcmpleq_n_f32): Remove.
5371 (vcmpleq_f32): Remove.
5372 (vcmpgtq_n_f32): Remove.
5373 (vcmpgtq_f32): Remove.
5374 (vcmpgeq_n_f32): Remove.
5375 (vcmpgeq_f32): Remove.
5376 (vcmpeqq_n_f32): Remove.
5377 (vcmpeqq_f32): Remove.
5378 (vcmpeqq_m_f16): Remove.
5379 (vcmpeqq_m_f32): Remove.
5380 (vcmpneq_m_u8): Remove.
5381 (vcmpneq_m_n_u8): Remove.
5382 (vcmphiq_m_u8): Remove.
5383 (vcmphiq_m_n_u8): Remove.
5384 (vcmpeqq_m_u8): Remove.
5385 (vcmpeqq_m_n_u8): Remove.
5386 (vcmpcsq_m_u8): Remove.
5387 (vcmpcsq_m_n_u8): Remove.
5388 (vcmpneq_m_s8): Remove.
5389 (vcmpneq_m_n_s8): Remove.
5390 (vcmpltq_m_s8): Remove.
5391 (vcmpltq_m_n_s8): Remove.
5392 (vcmpleq_m_s8): Remove.
5393 (vcmpleq_m_n_s8): Remove.
5394 (vcmpgtq_m_s8): Remove.
5395 (vcmpgtq_m_n_s8): Remove.
5396 (vcmpgeq_m_s8): Remove.
5397 (vcmpgeq_m_n_s8): Remove.
5398 (vcmpeqq_m_s8): Remove.
5399 (vcmpeqq_m_n_s8): Remove.
5400 (vcmpneq_m_u16): Remove.
5401 (vcmpneq_m_n_u16): Remove.
5402 (vcmphiq_m_u16): Remove.
5403 (vcmphiq_m_n_u16): Remove.
5404 (vcmpeqq_m_u16): Remove.
5405 (vcmpeqq_m_n_u16): Remove.
5406 (vcmpcsq_m_u16): Remove.
5407 (vcmpcsq_m_n_u16): Remove.
5408 (vcmpneq_m_s16): Remove.
5409 (vcmpneq_m_n_s16): Remove.
5410 (vcmpltq_m_s16): Remove.
5411 (vcmpltq_m_n_s16): Remove.
5412 (vcmpleq_m_s16): Remove.
5413 (vcmpleq_m_n_s16): Remove.
5414 (vcmpgtq_m_s16): Remove.
5415 (vcmpgtq_m_n_s16): Remove.
5416 (vcmpgeq_m_s16): Remove.
5417 (vcmpgeq_m_n_s16): Remove.
5418 (vcmpeqq_m_s16): Remove.
5419 (vcmpeqq_m_n_s16): Remove.
5420 (vcmpneq_m_u32): Remove.
5421 (vcmpneq_m_n_u32): Remove.
5422 (vcmphiq_m_u32): Remove.
5423 (vcmphiq_m_n_u32): Remove.
5424 (vcmpeqq_m_u32): Remove.
5425 (vcmpeqq_m_n_u32): Remove.
5426 (vcmpcsq_m_u32): Remove.
5427 (vcmpcsq_m_n_u32): Remove.
5428 (vcmpneq_m_s32): Remove.
5429 (vcmpneq_m_n_s32): Remove.
5430 (vcmpltq_m_s32): Remove.
5431 (vcmpltq_m_n_s32): Remove.
5432 (vcmpleq_m_s32): Remove.
5433 (vcmpleq_m_n_s32): Remove.
5434 (vcmpgtq_m_s32): Remove.
5435 (vcmpgtq_m_n_s32): Remove.
5436 (vcmpgeq_m_s32): Remove.
5437 (vcmpgeq_m_n_s32): Remove.
5438 (vcmpeqq_m_s32): Remove.
5439 (vcmpeqq_m_n_s32): Remove.
5440 (vcmpeqq_m_n_f16): Remove.
5441 (vcmpgeq_m_f16): Remove.
5442 (vcmpgeq_m_n_f16): Remove.
5443 (vcmpgtq_m_f16): Remove.
5444 (vcmpgtq_m_n_f16): Remove.
5445 (vcmpleq_m_f16): Remove.
5446 (vcmpleq_m_n_f16): Remove.
5447 (vcmpltq_m_f16): Remove.
5448 (vcmpltq_m_n_f16): Remove.
5449 (vcmpneq_m_f16): Remove.
5450 (vcmpneq_m_n_f16): Remove.
5451 (vcmpeqq_m_n_f32): Remove.
5452 (vcmpgeq_m_f32): Remove.
5453 (vcmpgeq_m_n_f32): Remove.
5454 (vcmpgtq_m_f32): Remove.
5455 (vcmpgtq_m_n_f32): Remove.
5456 (vcmpleq_m_f32): Remove.
5457 (vcmpleq_m_n_f32): Remove.
5458 (vcmpltq_m_f32): Remove.
5459 (vcmpltq_m_n_f32): Remove.
5460 (vcmpneq_m_f32): Remove.
5461 (vcmpneq_m_n_f32): Remove.
5462 (__arm_vcmpneq_s8): Remove.
5463 (__arm_vcmpneq_s16): Remove.
5464 (__arm_vcmpneq_s32): Remove.
5465 (__arm_vcmpneq_u8): Remove.
5466 (__arm_vcmpneq_u16): Remove.
5467 (__arm_vcmpneq_u32): Remove.
5468 (__arm_vcmpneq_n_u8): Remove.
5469 (__arm_vcmphiq_u8): Remove.
5470 (__arm_vcmphiq_n_u8): Remove.
5471 (__arm_vcmpeqq_u8): Remove.
5472 (__arm_vcmpeqq_n_u8): Remove.
5473 (__arm_vcmpcsq_u8): Remove.
5474 (__arm_vcmpcsq_n_u8): Remove.
5475 (__arm_vcmpneq_n_s8): Remove.
5476 (__arm_vcmpltq_s8): Remove.
5477 (__arm_vcmpltq_n_s8): Remove.
5478 (__arm_vcmpleq_s8): Remove.
5479 (__arm_vcmpleq_n_s8): Remove.
5480 (__arm_vcmpgtq_s8): Remove.
5481 (__arm_vcmpgtq_n_s8): Remove.
5482 (__arm_vcmpgeq_s8): Remove.
5483 (__arm_vcmpgeq_n_s8): Remove.
5484 (__arm_vcmpeqq_s8): Remove.
5485 (__arm_vcmpeqq_n_s8): Remove.
5486 (__arm_vcmpneq_n_u16): Remove.
5487 (__arm_vcmphiq_u16): Remove.
5488 (__arm_vcmphiq_n_u16): Remove.
5489 (__arm_vcmpeqq_u16): Remove.
5490 (__arm_vcmpeqq_n_u16): Remove.
5491 (__arm_vcmpcsq_u16): Remove.
5492 (__arm_vcmpcsq_n_u16): Remove.
5493 (__arm_vcmpneq_n_s16): Remove.
5494 (__arm_vcmpltq_s16): Remove.
5495 (__arm_vcmpltq_n_s16): Remove.
5496 (__arm_vcmpleq_s16): Remove.
5497 (__arm_vcmpleq_n_s16): Remove.
5498 (__arm_vcmpgtq_s16): Remove.
5499 (__arm_vcmpgtq_n_s16): Remove.
5500 (__arm_vcmpgeq_s16): Remove.
5501 (__arm_vcmpgeq_n_s16): Remove.
5502 (__arm_vcmpeqq_s16): Remove.
5503 (__arm_vcmpeqq_n_s16): Remove.
5504 (__arm_vcmpneq_n_u32): Remove.
5505 (__arm_vcmphiq_u32): Remove.
5506 (__arm_vcmphiq_n_u32): Remove.
5507 (__arm_vcmpeqq_u32): Remove.
5508 (__arm_vcmpeqq_n_u32): Remove.
5509 (__arm_vcmpcsq_u32): Remove.
5510 (__arm_vcmpcsq_n_u32): Remove.
5511 (__arm_vcmpneq_n_s32): Remove.
5512 (__arm_vcmpltq_s32): Remove.
5513 (__arm_vcmpltq_n_s32): Remove.
5514 (__arm_vcmpleq_s32): Remove.
5515 (__arm_vcmpleq_n_s32): Remove.
5516 (__arm_vcmpgtq_s32): Remove.
5517 (__arm_vcmpgtq_n_s32): Remove.
5518 (__arm_vcmpgeq_s32): Remove.
5519 (__arm_vcmpgeq_n_s32): Remove.
5520 (__arm_vcmpeqq_s32): Remove.
5521 (__arm_vcmpeqq_n_s32): Remove.
5522 (__arm_vcmpneq_m_u8): Remove.
5523 (__arm_vcmpneq_m_n_u8): Remove.
5524 (__arm_vcmphiq_m_u8): Remove.
5525 (__arm_vcmphiq_m_n_u8): Remove.
5526 (__arm_vcmpeqq_m_u8): Remove.
5527 (__arm_vcmpeqq_m_n_u8): Remove.
5528 (__arm_vcmpcsq_m_u8): Remove.
5529 (__arm_vcmpcsq_m_n_u8): Remove.
5530 (__arm_vcmpneq_m_s8): Remove.
5531 (__arm_vcmpneq_m_n_s8): Remove.
5532 (__arm_vcmpltq_m_s8): Remove.
5533 (__arm_vcmpltq_m_n_s8): Remove.
5534 (__arm_vcmpleq_m_s8): Remove.
5535 (__arm_vcmpleq_m_n_s8): Remove.
5536 (__arm_vcmpgtq_m_s8): Remove.
5537 (__arm_vcmpgtq_m_n_s8): Remove.
5538 (__arm_vcmpgeq_m_s8): Remove.
5539 (__arm_vcmpgeq_m_n_s8): Remove.
5540 (__arm_vcmpeqq_m_s8): Remove.
5541 (__arm_vcmpeqq_m_n_s8): Remove.
5542 (__arm_vcmpneq_m_u16): Remove.
5543 (__arm_vcmpneq_m_n_u16): Remove.
5544 (__arm_vcmphiq_m_u16): Remove.
5545 (__arm_vcmphiq_m_n_u16): Remove.
5546 (__arm_vcmpeqq_m_u16): Remove.
5547 (__arm_vcmpeqq_m_n_u16): Remove.
5548 (__arm_vcmpcsq_m_u16): Remove.
5549 (__arm_vcmpcsq_m_n_u16): Remove.
5550 (__arm_vcmpneq_m_s16): Remove.
5551 (__arm_vcmpneq_m_n_s16): Remove.
5552 (__arm_vcmpltq_m_s16): Remove.
5553 (__arm_vcmpltq_m_n_s16): Remove.
5554 (__arm_vcmpleq_m_s16): Remove.
5555 (__arm_vcmpleq_m_n_s16): Remove.
5556 (__arm_vcmpgtq_m_s16): Remove.
5557 (__arm_vcmpgtq_m_n_s16): Remove.
5558 (__arm_vcmpgeq_m_s16): Remove.
5559 (__arm_vcmpgeq_m_n_s16): Remove.
5560 (__arm_vcmpeqq_m_s16): Remove.
5561 (__arm_vcmpeqq_m_n_s16): Remove.
5562 (__arm_vcmpneq_m_u32): Remove.
5563 (__arm_vcmpneq_m_n_u32): Remove.
5564 (__arm_vcmphiq_m_u32): Remove.
5565 (__arm_vcmphiq_m_n_u32): Remove.
5566 (__arm_vcmpeqq_m_u32): Remove.
5567 (__arm_vcmpeqq_m_n_u32): Remove.
5568 (__arm_vcmpcsq_m_u32): Remove.
5569 (__arm_vcmpcsq_m_n_u32): Remove.
5570 (__arm_vcmpneq_m_s32): Remove.
5571 (__arm_vcmpneq_m_n_s32): Remove.
5572 (__arm_vcmpltq_m_s32): Remove.
5573 (__arm_vcmpltq_m_n_s32): Remove.
5574 (__arm_vcmpleq_m_s32): Remove.
5575 (__arm_vcmpleq_m_n_s32): Remove.
5576 (__arm_vcmpgtq_m_s32): Remove.
5577 (__arm_vcmpgtq_m_n_s32): Remove.
5578 (__arm_vcmpgeq_m_s32): Remove.
5579 (__arm_vcmpgeq_m_n_s32): Remove.
5580 (__arm_vcmpeqq_m_s32): Remove.
5581 (__arm_vcmpeqq_m_n_s32): Remove.
5582 (__arm_vcmpneq_n_f16): Remove.
5583 (__arm_vcmpneq_f16): Remove.
5584 (__arm_vcmpltq_n_f16): Remove.
5585 (__arm_vcmpltq_f16): Remove.
5586 (__arm_vcmpleq_n_f16): Remove.
5587 (__arm_vcmpleq_f16): Remove.
5588 (__arm_vcmpgtq_n_f16): Remove.
5589 (__arm_vcmpgtq_f16): Remove.
5590 (__arm_vcmpgeq_n_f16): Remove.
5591 (__arm_vcmpgeq_f16): Remove.
5592 (__arm_vcmpeqq_n_f16): Remove.
5593 (__arm_vcmpeqq_f16): Remove.
5594 (__arm_vcmpneq_n_f32): Remove.
5595 (__arm_vcmpneq_f32): Remove.
5596 (__arm_vcmpltq_n_f32): Remove.
5597 (__arm_vcmpltq_f32): Remove.
5598 (__arm_vcmpleq_n_f32): Remove.
5599 (__arm_vcmpleq_f32): Remove.
5600 (__arm_vcmpgtq_n_f32): Remove.
5601 (__arm_vcmpgtq_f32): Remove.
5602 (__arm_vcmpgeq_n_f32): Remove.
5603 (__arm_vcmpgeq_f32): Remove.
5604 (__arm_vcmpeqq_n_f32): Remove.
5605 (__arm_vcmpeqq_f32): Remove.
5606 (__arm_vcmpeqq_m_f16): Remove.
5607 (__arm_vcmpeqq_m_f32): Remove.
5608 (__arm_vcmpeqq_m_n_f16): Remove.
5609 (__arm_vcmpgeq_m_f16): Remove.
5610 (__arm_vcmpgeq_m_n_f16): Remove.
5611 (__arm_vcmpgtq_m_f16): Remove.
5612 (__arm_vcmpgtq_m_n_f16): Remove.
5613 (__arm_vcmpleq_m_f16): Remove.
5614 (__arm_vcmpleq_m_n_f16): Remove.
5615 (__arm_vcmpltq_m_f16): Remove.
5616 (__arm_vcmpltq_m_n_f16): Remove.
5617 (__arm_vcmpneq_m_f16): Remove.
5618 (__arm_vcmpneq_m_n_f16): Remove.
5619 (__arm_vcmpeqq_m_n_f32): Remove.
5620 (__arm_vcmpgeq_m_f32): Remove.
5621 (__arm_vcmpgeq_m_n_f32): Remove.
5622 (__arm_vcmpgtq_m_f32): Remove.
5623 (__arm_vcmpgtq_m_n_f32): Remove.
5624 (__arm_vcmpleq_m_f32): Remove.
5625 (__arm_vcmpleq_m_n_f32): Remove.
5626 (__arm_vcmpltq_m_f32): Remove.
5627 (__arm_vcmpltq_m_n_f32): Remove.
5628 (__arm_vcmpneq_m_f32): Remove.
5629 (__arm_vcmpneq_m_n_f32): Remove.
5630 (__arm_vcmpneq): Remove.
5631 (__arm_vcmphiq): Remove.
5632 (__arm_vcmpeqq): Remove.
5633 (__arm_vcmpcsq): Remove.
5634 (__arm_vcmpltq): Remove.
5635 (__arm_vcmpleq): Remove.
5636 (__arm_vcmpgtq): Remove.
5637 (__arm_vcmpgeq): Remove.
5638 (__arm_vcmpneq_m): Remove.
5639 (__arm_vcmphiq_m): Remove.
5640 (__arm_vcmpeqq_m): Remove.
5641 (__arm_vcmpcsq_m): Remove.
5642 (__arm_vcmpltq_m): Remove.
5643 (__arm_vcmpleq_m): Remove.
5644 (__arm_vcmpgtq_m): Remove.
5645 (__arm_vcmpgeq_m): Remove.
5647 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5649 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
5650 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
5652 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5654 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
5655 (MVE_CMP_M_N_F, mve_cmp_op1): New.
5658 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
5659 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
5660 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
5661 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
5662 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
5663 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
5664 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
5665 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
5666 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
5667 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
5669 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
5670 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
5671 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
5672 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
5673 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
5675 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
5676 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
5677 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
5678 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
5679 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
5681 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
5683 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
5684 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
5685 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
5688 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
5690 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
5691 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
5692 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
5693 Simplify parity(rotate(x,y)) as parity(x).
5695 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5697 * config/riscv/autovec.md (@vec_series<mode>): New pattern
5698 * config/riscv/riscv-protos.h (expand_vec_series): New function.
5699 * config/riscv/riscv-v.cc (emit_binop): Ditto.
5700 (emit_index_op): Ditto.
5701 (expand_vec_series): Ditto.
5702 (expand_const_vector): Add series vector handling.
5703 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
5705 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
5707 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
5708 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
5709 (*concat<mode><dwi>3_2): Likewise.
5710 (*concat<mode><dwi>3_3): Likewise.
5711 (*concat<mode><dwi>3_4): Likewise.
5712 (*concat<mode><dwi>3_5): Likewise.
5713 (*concat<mode><dwi>3_6): Likewise.
5714 (*concat<mode><dwi>3_7): Likewise.
5716 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
5719 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
5720 (<insn>v4qiv4hi2): New expander.
5721 (<insn>v2hiv2si2): Ditto.
5722 (<insn>v2qiv2si2): Ditto.
5723 (<insn>v2qiv2hi2): Ditto.
5725 2023-05-10 Jeff Law <jlaw@ventanamicro>
5727 * config/h8300/constraints.md (Q): Make this a special memory
5731 2023-05-10 Jakub Jelinek <jakub@redhat.com>
5734 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
5735 if t is void_list_node.
5737 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5739 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
5740 (aarch64_sqmovun<mode>_insn_be): Delete.
5741 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
5742 (aarch64_sqmovun<mode>): Delete expander.
5744 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5747 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
5749 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
5750 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
5751 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
5753 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5756 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
5758 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
5759 (aarch64_<sur>qadd<mode>): Rename to...
5760 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
5762 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5764 * config/aarch64/aarch64-simd.md
5765 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
5766 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
5767 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
5768 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
5770 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5773 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
5774 (aarch64_xtn<mode>_insn_be): Likewise.
5775 (trunc<mode><Vnarrowq>2): Rename to...
5776 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
5777 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
5778 (aarch64_<su>qmovn<mode>): Likewise.
5779 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
5780 (aarch64_<su>qmovn<mode>_insn_le): Delete.
5781 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
5783 2023-05-10 Li Xu <xuli1@eswincomputing.com>
5785 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
5786 intruction replace null avl with (const_int 0).
5788 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5790 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
5793 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5796 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
5797 (source_equal_p): Fix dead loop in vsetvl avl checking.
5799 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
5801 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
5802 of modeadjusted_dccr.
5804 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5806 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
5807 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
5808 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
5809 * config/arm/arm-mve-builtins.cc
5810 (function_instance::has_inactive_argument): Handle vmaxaq and
5812 * config/arm/arm_mve.h (vminaq): Remove.
5816 (vminaq_s8): Remove.
5817 (vmaxaq_s8): Remove.
5818 (vminaq_s16): Remove.
5819 (vmaxaq_s16): Remove.
5820 (vminaq_s32): Remove.
5821 (vmaxaq_s32): Remove.
5822 (vminaq_m_s8): Remove.
5823 (vmaxaq_m_s8): Remove.
5824 (vminaq_m_s16): Remove.
5825 (vmaxaq_m_s16): Remove.
5826 (vminaq_m_s32): Remove.
5827 (vmaxaq_m_s32): Remove.
5828 (__arm_vminaq_s8): Remove.
5829 (__arm_vmaxaq_s8): Remove.
5830 (__arm_vminaq_s16): Remove.
5831 (__arm_vmaxaq_s16): Remove.
5832 (__arm_vminaq_s32): Remove.
5833 (__arm_vmaxaq_s32): Remove.
5834 (__arm_vminaq_m_s8): Remove.
5835 (__arm_vmaxaq_m_s8): Remove.
5836 (__arm_vminaq_m_s16): Remove.
5837 (__arm_vmaxaq_m_s16): Remove.
5838 (__arm_vminaq_m_s32): Remove.
5839 (__arm_vmaxaq_m_s32): Remove.
5840 (__arm_vminaq): Remove.
5841 (__arm_vmaxaq): Remove.
5842 (__arm_vminaq_m): Remove.
5843 (__arm_vmaxaq_m): Remove.
5845 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5847 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
5849 (mve_insn): Add vmaxa, vmina.
5850 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
5851 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
5853 (@mve_<mve_insn>q_<supf><mode>): ... this.
5854 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
5855 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5857 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5859 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
5860 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
5862 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5864 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
5865 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
5866 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
5867 * config/arm/arm-mve-builtins.cc
5868 (function_instance::has_inactive_argument): Handle vmaxnmaq and
5870 * config/arm/arm_mve.h (vminnmaq): Remove.
5872 (vmaxnmaq_m): Remove.
5873 (vminnmaq_m): Remove.
5874 (vminnmaq_f16): Remove.
5875 (vmaxnmaq_f16): Remove.
5876 (vminnmaq_f32): Remove.
5877 (vmaxnmaq_f32): Remove.
5878 (vmaxnmaq_m_f16): Remove.
5879 (vminnmaq_m_f16): Remove.
5880 (vmaxnmaq_m_f32): Remove.
5881 (vminnmaq_m_f32): Remove.
5882 (__arm_vminnmaq_f16): Remove.
5883 (__arm_vmaxnmaq_f16): Remove.
5884 (__arm_vminnmaq_f32): Remove.
5885 (__arm_vmaxnmaq_f32): Remove.
5886 (__arm_vmaxnmaq_m_f16): Remove.
5887 (__arm_vminnmaq_m_f16): Remove.
5888 (__arm_vmaxnmaq_m_f32): Remove.
5889 (__arm_vminnmaq_m_f32): Remove.
5890 (__arm_vminnmaq): Remove.
5891 (__arm_vmaxnmaq): Remove.
5892 (__arm_vmaxnmaq_m): Remove.
5893 (__arm_vminnmaq_m): Remove.
5895 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5897 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
5898 (MVE_VMAXNMA_VMINNMAQ_M): New.
5899 (mve_insn): Add vmaxnma, vminnma.
5900 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
5902 (@mve_<mve_insn>q_f<mode>): ... this.
5903 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
5904 (@mve_<mve_insn>q_m_f<mode>): ... this.
5906 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5908 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
5909 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
5910 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
5911 (vminnmavq, vminnmvq): New.
5912 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
5913 (vminnmavq, vminnmvq): New.
5914 * config/arm/arm_mve.h (vminnmvq): Remove.
5915 (vminnmavq): Remove.
5917 (vmaxnmavq): Remove.
5918 (vmaxnmavq_p): Remove.
5919 (vmaxnmvq_p): Remove.
5920 (vminnmavq_p): Remove.
5921 (vminnmvq_p): Remove.
5922 (vminnmvq_f16): Remove.
5923 (vminnmavq_f16): Remove.
5924 (vmaxnmvq_f16): Remove.
5925 (vmaxnmavq_f16): Remove.
5926 (vminnmvq_f32): Remove.
5927 (vminnmavq_f32): Remove.
5928 (vmaxnmvq_f32): Remove.
5929 (vmaxnmavq_f32): Remove.
5930 (vmaxnmavq_p_f16): Remove.
5931 (vmaxnmvq_p_f16): Remove.
5932 (vminnmavq_p_f16): Remove.
5933 (vminnmvq_p_f16): Remove.
5934 (vmaxnmavq_p_f32): Remove.
5935 (vmaxnmvq_p_f32): Remove.
5936 (vminnmavq_p_f32): Remove.
5937 (vminnmvq_p_f32): Remove.
5938 (__arm_vminnmvq_f16): Remove.
5939 (__arm_vminnmavq_f16): Remove.
5940 (__arm_vmaxnmvq_f16): Remove.
5941 (__arm_vmaxnmavq_f16): Remove.
5942 (__arm_vminnmvq_f32): Remove.
5943 (__arm_vminnmavq_f32): Remove.
5944 (__arm_vmaxnmvq_f32): Remove.
5945 (__arm_vmaxnmavq_f32): Remove.
5946 (__arm_vmaxnmavq_p_f16): Remove.
5947 (__arm_vmaxnmvq_p_f16): Remove.
5948 (__arm_vminnmavq_p_f16): Remove.
5949 (__arm_vminnmvq_p_f16): Remove.
5950 (__arm_vmaxnmavq_p_f32): Remove.
5951 (__arm_vmaxnmvq_p_f32): Remove.
5952 (__arm_vminnmavq_p_f32): Remove.
5953 (__arm_vminnmvq_p_f32): Remove.
5954 (__arm_vminnmvq): Remove.
5955 (__arm_vminnmavq): Remove.
5956 (__arm_vmaxnmvq): Remove.
5957 (__arm_vmaxnmavq): Remove.
5958 (__arm_vmaxnmavq_p): Remove.
5959 (__arm_vmaxnmvq_p): Remove.
5960 (__arm_vminnmavq_p): Remove.
5961 (__arm_vminnmvq_p): Remove.
5962 (__arm_vmaxnmavq_m): Remove.
5963 (__arm_vmaxnmvq_m): Remove.
5965 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5967 * config/arm/arm-mve-builtins-functions.h
5968 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
5970 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5972 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
5973 (MVE_VMAXNMxV_MINNMxVQ_P): New.
5974 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
5975 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
5976 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
5977 (@mve_<mve_insn>q_f<mode>): ... this.
5978 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
5979 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
5980 (@mve_<mve_insn>q_p_f<mode>): ... this.
5982 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5984 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
5985 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
5986 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
5987 * config/arm/arm_mve.h (vminnmq): Remove.
5989 (vmaxnmq_m): Remove.
5990 (vminnmq_m): Remove.
5991 (vminnmq_x): Remove.
5992 (vmaxnmq_x): Remove.
5993 (vminnmq_f16): Remove.
5994 (vmaxnmq_f16): Remove.
5995 (vminnmq_f32): Remove.
5996 (vmaxnmq_f32): Remove.
5997 (vmaxnmq_m_f32): Remove.
5998 (vmaxnmq_m_f16): Remove.
5999 (vminnmq_m_f32): Remove.
6000 (vminnmq_m_f16): Remove.
6001 (vminnmq_x_f16): Remove.
6002 (vminnmq_x_f32): Remove.
6003 (vmaxnmq_x_f16): Remove.
6004 (vmaxnmq_x_f32): Remove.
6005 (__arm_vminnmq_f16): Remove.
6006 (__arm_vmaxnmq_f16): Remove.
6007 (__arm_vminnmq_f32): Remove.
6008 (__arm_vmaxnmq_f32): Remove.
6009 (__arm_vmaxnmq_m_f32): Remove.
6010 (__arm_vmaxnmq_m_f16): Remove.
6011 (__arm_vminnmq_m_f32): Remove.
6012 (__arm_vminnmq_m_f16): Remove.
6013 (__arm_vminnmq_x_f16): Remove.
6014 (__arm_vminnmq_x_f32): Remove.
6015 (__arm_vmaxnmq_x_f16): Remove.
6016 (__arm_vmaxnmq_x_f32): Remove.
6017 (__arm_vminnmq): Remove.
6018 (__arm_vmaxnmq): Remove.
6019 (__arm_vmaxnmq_m): Remove.
6020 (__arm_vminnmq_m): Remove.
6021 (__arm_vminnmq_x): Remove.
6022 (__arm_vmaxnmq_x): Remove.
6024 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6026 * config/arm/iterators.md (MAX_MIN_F): New.
6027 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
6028 (mve_insn): Add vmaxnm, vminnm.
6029 (max_min_f_str): New.
6030 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
6032 (@mve_<max_min_f_str>q_f<mode>): ... this.
6033 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
6034 (@mve_<mve_insn>q_m_f<mode>): ... this.
6036 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6038 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
6039 (smax<mode>3): Likewise.
6041 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6043 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
6044 (FUNCTION_PRED_P_S): New.
6045 (vmaxavq, vminavq, vmaxvq, vminvq): New.
6046 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
6048 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
6050 * config/arm/arm_mve.h (vminvq): Remove.
6054 (vminvq_u8): Remove.
6055 (vmaxvq_u8): Remove.
6056 (vminvq_s8): Remove.
6057 (vmaxvq_s8): Remove.
6058 (vminvq_u16): Remove.
6059 (vmaxvq_u16): Remove.
6060 (vminvq_s16): Remove.
6061 (vmaxvq_s16): Remove.
6062 (vminvq_u32): Remove.
6063 (vmaxvq_u32): Remove.
6064 (vminvq_s32): Remove.
6065 (vmaxvq_s32): Remove.
6066 (vminvq_p_u8): Remove.
6067 (vmaxvq_p_u8): Remove.
6068 (vminvq_p_s8): Remove.
6069 (vmaxvq_p_s8): Remove.
6070 (vminvq_p_u16): Remove.
6071 (vmaxvq_p_u16): Remove.
6072 (vminvq_p_s16): Remove.
6073 (vmaxvq_p_s16): Remove.
6074 (vminvq_p_u32): Remove.
6075 (vmaxvq_p_u32): Remove.
6076 (vminvq_p_s32): Remove.
6077 (vmaxvq_p_s32): Remove.
6078 (__arm_vminvq_u8): Remove.
6079 (__arm_vmaxvq_u8): Remove.
6080 (__arm_vminvq_s8): Remove.
6081 (__arm_vmaxvq_s8): Remove.
6082 (__arm_vminvq_u16): Remove.
6083 (__arm_vmaxvq_u16): Remove.
6084 (__arm_vminvq_s16): Remove.
6085 (__arm_vmaxvq_s16): Remove.
6086 (__arm_vminvq_u32): Remove.
6087 (__arm_vmaxvq_u32): Remove.
6088 (__arm_vminvq_s32): Remove.
6089 (__arm_vmaxvq_s32): Remove.
6090 (__arm_vminvq_p_u8): Remove.
6091 (__arm_vmaxvq_p_u8): Remove.
6092 (__arm_vminvq_p_s8): Remove.
6093 (__arm_vmaxvq_p_s8): Remove.
6094 (__arm_vminvq_p_u16): Remove.
6095 (__arm_vmaxvq_p_u16): Remove.
6096 (__arm_vminvq_p_s16): Remove.
6097 (__arm_vmaxvq_p_s16): Remove.
6098 (__arm_vminvq_p_u32): Remove.
6099 (__arm_vmaxvq_p_u32): Remove.
6100 (__arm_vminvq_p_s32): Remove.
6101 (__arm_vmaxvq_p_s32): Remove.
6102 (__arm_vminvq): Remove.
6103 (__arm_vmaxvq): Remove.
6104 (__arm_vminvq_p): Remove.
6105 (__arm_vmaxvq_p): Remove.
6108 (vminavq_p): Remove.
6109 (vmaxavq_p): Remove.
6110 (vminavq_s8): Remove.
6111 (vmaxavq_s8): Remove.
6112 (vminavq_s16): Remove.
6113 (vmaxavq_s16): Remove.
6114 (vminavq_s32): Remove.
6115 (vmaxavq_s32): Remove.
6116 (vminavq_p_s8): Remove.
6117 (vmaxavq_p_s8): Remove.
6118 (vminavq_p_s16): Remove.
6119 (vmaxavq_p_s16): Remove.
6120 (vminavq_p_s32): Remove.
6121 (vmaxavq_p_s32): Remove.
6122 (__arm_vminavq_s8): Remove.
6123 (__arm_vmaxavq_s8): Remove.
6124 (__arm_vminavq_s16): Remove.
6125 (__arm_vmaxavq_s16): Remove.
6126 (__arm_vminavq_s32): Remove.
6127 (__arm_vmaxavq_s32): Remove.
6128 (__arm_vminavq_p_s8): Remove.
6129 (__arm_vmaxavq_p_s8): Remove.
6130 (__arm_vminavq_p_s16): Remove.
6131 (__arm_vmaxavq_p_s16): Remove.
6132 (__arm_vminavq_p_s32): Remove.
6133 (__arm_vmaxavq_p_s32): Remove.
6134 (__arm_vminavq): Remove.
6135 (__arm_vmaxavq): Remove.
6136 (__arm_vminavq_p): Remove.
6137 (__arm_vmaxavq_p): Remove.
6139 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6141 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
6142 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
6143 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
6144 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
6145 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
6146 (@mve_<mve_insn>q_<supf><mode>): ... this.
6147 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
6148 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
6149 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6151 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6153 * config/arm/arm-mve-builtins-functions.h (class
6154 unspec_mve_function_exact_insn_pred_p): New.
6156 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6158 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
6159 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
6161 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6163 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
6164 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
6166 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
6168 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
6170 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
6171 (ADJUST_REG_ALLOC_ORDER): Likewise.
6172 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
6174 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
6175 Upa rather than Upl for unpredicated movprfx alternatives.
6177 2023-05-09 Jeff Law <jlaw@ventanamicro>
6179 * config/h8300/testcompare.md: Add peephole2 which uses a memory
6180 load to set flags, thus eliminating a compare against zero.
6182 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6184 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
6185 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
6186 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
6187 * config/arm/arm_mve.h (vshlltq): Remove.
6189 (vshllbq_m): Remove.
6190 (vshlltq_m): Remove.
6191 (vshllbq_x): Remove.
6192 (vshlltq_x): Remove.
6193 (vshlltq_n_u8): Remove.
6194 (vshllbq_n_u8): Remove.
6195 (vshlltq_n_s8): Remove.
6196 (vshllbq_n_s8): Remove.
6197 (vshlltq_n_u16): Remove.
6198 (vshllbq_n_u16): Remove.
6199 (vshlltq_n_s16): Remove.
6200 (vshllbq_n_s16): Remove.
6201 (vshllbq_m_n_s8): Remove.
6202 (vshllbq_m_n_s16): Remove.
6203 (vshllbq_m_n_u8): Remove.
6204 (vshllbq_m_n_u16): Remove.
6205 (vshlltq_m_n_s8): Remove.
6206 (vshlltq_m_n_s16): Remove.
6207 (vshlltq_m_n_u8): Remove.
6208 (vshlltq_m_n_u16): Remove.
6209 (vshllbq_x_n_s8): Remove.
6210 (vshllbq_x_n_s16): Remove.
6211 (vshllbq_x_n_u8): Remove.
6212 (vshllbq_x_n_u16): Remove.
6213 (vshlltq_x_n_s8): Remove.
6214 (vshlltq_x_n_s16): Remove.
6215 (vshlltq_x_n_u8): Remove.
6216 (vshlltq_x_n_u16): Remove.
6217 (__arm_vshlltq_n_u8): Remove.
6218 (__arm_vshllbq_n_u8): Remove.
6219 (__arm_vshlltq_n_s8): Remove.
6220 (__arm_vshllbq_n_s8): Remove.
6221 (__arm_vshlltq_n_u16): Remove.
6222 (__arm_vshllbq_n_u16): Remove.
6223 (__arm_vshlltq_n_s16): Remove.
6224 (__arm_vshllbq_n_s16): Remove.
6225 (__arm_vshllbq_m_n_s8): Remove.
6226 (__arm_vshllbq_m_n_s16): Remove.
6227 (__arm_vshllbq_m_n_u8): Remove.
6228 (__arm_vshllbq_m_n_u16): Remove.
6229 (__arm_vshlltq_m_n_s8): Remove.
6230 (__arm_vshlltq_m_n_s16): Remove.
6231 (__arm_vshlltq_m_n_u8): Remove.
6232 (__arm_vshlltq_m_n_u16): Remove.
6233 (__arm_vshllbq_x_n_s8): Remove.
6234 (__arm_vshllbq_x_n_s16): Remove.
6235 (__arm_vshllbq_x_n_u8): Remove.
6236 (__arm_vshllbq_x_n_u16): Remove.
6237 (__arm_vshlltq_x_n_s8): Remove.
6238 (__arm_vshlltq_x_n_s16): Remove.
6239 (__arm_vshlltq_x_n_u8): Remove.
6240 (__arm_vshlltq_x_n_u16): Remove.
6241 (__arm_vshlltq): Remove.
6242 (__arm_vshllbq): Remove.
6243 (__arm_vshllbq_m): Remove.
6244 (__arm_vshlltq_m): Remove.
6245 (__arm_vshllbq_x): Remove.
6246 (__arm_vshlltq_x): Remove.
6248 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6250 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
6251 (VSHLLBQ_N, VSHLLTQ_N): Remove.
6253 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
6255 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
6256 (mve_vshlltq_n_<supf><mode>): Merge into ...
6257 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6258 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
6260 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6262 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6264 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
6265 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
6267 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6269 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
6270 (vqmovntq, vqmovunbq, vqmovuntq): New.
6271 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
6272 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
6273 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
6274 (vqmovntq, vqmovunbq, vqmovuntq): New.
6275 * config/arm/arm-mve-builtins.cc
6276 (function_instance::has_inactive_argument): Handle vmovnbq,
6277 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
6278 * config/arm/arm_mve.h (vqmovntq): Remove.
6280 (vqmovnbq_m): Remove.
6281 (vqmovntq_m): Remove.
6282 (vqmovntq_u16): Remove.
6283 (vqmovnbq_u16): Remove.
6284 (vqmovntq_s16): Remove.
6285 (vqmovnbq_s16): Remove.
6286 (vqmovntq_u32): Remove.
6287 (vqmovnbq_u32): Remove.
6288 (vqmovntq_s32): Remove.
6289 (vqmovnbq_s32): Remove.
6290 (vqmovnbq_m_s16): Remove.
6291 (vqmovntq_m_s16): Remove.
6292 (vqmovnbq_m_u16): Remove.
6293 (vqmovntq_m_u16): Remove.
6294 (vqmovnbq_m_s32): Remove.
6295 (vqmovntq_m_s32): Remove.
6296 (vqmovnbq_m_u32): Remove.
6297 (vqmovntq_m_u32): Remove.
6298 (__arm_vqmovntq_u16): Remove.
6299 (__arm_vqmovnbq_u16): Remove.
6300 (__arm_vqmovntq_s16): Remove.
6301 (__arm_vqmovnbq_s16): Remove.
6302 (__arm_vqmovntq_u32): Remove.
6303 (__arm_vqmovnbq_u32): Remove.
6304 (__arm_vqmovntq_s32): Remove.
6305 (__arm_vqmovnbq_s32): Remove.
6306 (__arm_vqmovnbq_m_s16): Remove.
6307 (__arm_vqmovntq_m_s16): Remove.
6308 (__arm_vqmovnbq_m_u16): Remove.
6309 (__arm_vqmovntq_m_u16): Remove.
6310 (__arm_vqmovnbq_m_s32): Remove.
6311 (__arm_vqmovntq_m_s32): Remove.
6312 (__arm_vqmovnbq_m_u32): Remove.
6313 (__arm_vqmovntq_m_u32): Remove.
6314 (__arm_vqmovntq): Remove.
6315 (__arm_vqmovnbq): Remove.
6316 (__arm_vqmovnbq_m): Remove.
6317 (__arm_vqmovntq_m): Remove.
6320 (vmovnbq_m): Remove.
6321 (vmovntq_m): Remove.
6322 (vmovntq_u16): Remove.
6323 (vmovnbq_u16): Remove.
6324 (vmovntq_s16): Remove.
6325 (vmovnbq_s16): Remove.
6326 (vmovntq_u32): Remove.
6327 (vmovnbq_u32): Remove.
6328 (vmovntq_s32): Remove.
6329 (vmovnbq_s32): Remove.
6330 (vmovnbq_m_s16): Remove.
6331 (vmovntq_m_s16): Remove.
6332 (vmovnbq_m_u16): Remove.
6333 (vmovntq_m_u16): Remove.
6334 (vmovnbq_m_s32): Remove.
6335 (vmovntq_m_s32): Remove.
6336 (vmovnbq_m_u32): Remove.
6337 (vmovntq_m_u32): Remove.
6338 (__arm_vmovntq_u16): Remove.
6339 (__arm_vmovnbq_u16): Remove.
6340 (__arm_vmovntq_s16): Remove.
6341 (__arm_vmovnbq_s16): Remove.
6342 (__arm_vmovntq_u32): Remove.
6343 (__arm_vmovnbq_u32): Remove.
6344 (__arm_vmovntq_s32): Remove.
6345 (__arm_vmovnbq_s32): Remove.
6346 (__arm_vmovnbq_m_s16): Remove.
6347 (__arm_vmovntq_m_s16): Remove.
6348 (__arm_vmovnbq_m_u16): Remove.
6349 (__arm_vmovntq_m_u16): Remove.
6350 (__arm_vmovnbq_m_s32): Remove.
6351 (__arm_vmovntq_m_s32): Remove.
6352 (__arm_vmovnbq_m_u32): Remove.
6353 (__arm_vmovntq_m_u32): Remove.
6354 (__arm_vmovntq): Remove.
6355 (__arm_vmovnbq): Remove.
6356 (__arm_vmovnbq_m): Remove.
6357 (__arm_vmovntq_m): Remove.
6358 (vqmovuntq): Remove.
6359 (vqmovunbq): Remove.
6360 (vqmovunbq_m): Remove.
6361 (vqmovuntq_m): Remove.
6362 (vqmovuntq_s16): Remove.
6363 (vqmovunbq_s16): Remove.
6364 (vqmovuntq_s32): Remove.
6365 (vqmovunbq_s32): Remove.
6366 (vqmovunbq_m_s16): Remove.
6367 (vqmovuntq_m_s16): Remove.
6368 (vqmovunbq_m_s32): Remove.
6369 (vqmovuntq_m_s32): Remove.
6370 (__arm_vqmovuntq_s16): Remove.
6371 (__arm_vqmovunbq_s16): Remove.
6372 (__arm_vqmovuntq_s32): Remove.
6373 (__arm_vqmovunbq_s32): Remove.
6374 (__arm_vqmovunbq_m_s16): Remove.
6375 (__arm_vqmovuntq_m_s16): Remove.
6376 (__arm_vqmovunbq_m_s32): Remove.
6377 (__arm_vqmovuntq_m_s32): Remove.
6378 (__arm_vqmovuntq): Remove.
6379 (__arm_vqmovunbq): Remove.
6380 (__arm_vqmovunbq_m): Remove.
6381 (__arm_vqmovuntq_m): Remove.
6383 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6385 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
6386 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
6389 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
6391 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
6392 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
6393 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
6394 (mve_vqmovuntq_s<mode>): Merge into ...
6395 (@mve_<mve_insn>q_<supf><mode>): ... this.
6396 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
6397 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
6398 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
6399 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6401 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6403 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
6404 (binary_move_narrow_unsigned): New.
6405 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
6406 (binary_move_narrow_unsigned): New.
6408 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6410 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
6411 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
6412 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
6413 (vrndpq, vrndq, vrndxq): New.
6414 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
6415 (vrndpq, vrndq, vrndxq): New.
6416 * config/arm/arm_mve.h (vrndxq): Remove.
6434 (vrndxq_f16): Remove.
6435 (vrndxq_f32): Remove.
6436 (vrndq_f16): Remove.
6437 (vrndq_f32): Remove.
6438 (vrndpq_f16): Remove.
6439 (vrndpq_f32): Remove.
6440 (vrndnq_f16): Remove.
6441 (vrndnq_f32): Remove.
6442 (vrndmq_f16): Remove.
6443 (vrndmq_f32): Remove.
6444 (vrndaq_f16): Remove.
6445 (vrndaq_f32): Remove.
6446 (vrndaq_m_f16): Remove.
6447 (vrndmq_m_f16): Remove.
6448 (vrndnq_m_f16): Remove.
6449 (vrndpq_m_f16): Remove.
6450 (vrndq_m_f16): Remove.
6451 (vrndxq_m_f16): Remove.
6452 (vrndaq_m_f32): Remove.
6453 (vrndmq_m_f32): Remove.
6454 (vrndnq_m_f32): Remove.
6455 (vrndpq_m_f32): Remove.
6456 (vrndq_m_f32): Remove.
6457 (vrndxq_m_f32): Remove.
6458 (vrndq_x_f16): Remove.
6459 (vrndq_x_f32): Remove.
6460 (vrndnq_x_f16): Remove.
6461 (vrndnq_x_f32): Remove.
6462 (vrndmq_x_f16): Remove.
6463 (vrndmq_x_f32): Remove.
6464 (vrndpq_x_f16): Remove.
6465 (vrndpq_x_f32): Remove.
6466 (vrndaq_x_f16): Remove.
6467 (vrndaq_x_f32): Remove.
6468 (vrndxq_x_f16): Remove.
6469 (vrndxq_x_f32): Remove.
6470 (__arm_vrndxq_f16): Remove.
6471 (__arm_vrndxq_f32): Remove.
6472 (__arm_vrndq_f16): Remove.
6473 (__arm_vrndq_f32): Remove.
6474 (__arm_vrndpq_f16): Remove.
6475 (__arm_vrndpq_f32): Remove.
6476 (__arm_vrndnq_f16): Remove.
6477 (__arm_vrndnq_f32): Remove.
6478 (__arm_vrndmq_f16): Remove.
6479 (__arm_vrndmq_f32): Remove.
6480 (__arm_vrndaq_f16): Remove.
6481 (__arm_vrndaq_f32): Remove.
6482 (__arm_vrndaq_m_f16): Remove.
6483 (__arm_vrndmq_m_f16): Remove.
6484 (__arm_vrndnq_m_f16): Remove.
6485 (__arm_vrndpq_m_f16): Remove.
6486 (__arm_vrndq_m_f16): Remove.
6487 (__arm_vrndxq_m_f16): Remove.
6488 (__arm_vrndaq_m_f32): Remove.
6489 (__arm_vrndmq_m_f32): Remove.
6490 (__arm_vrndnq_m_f32): Remove.
6491 (__arm_vrndpq_m_f32): Remove.
6492 (__arm_vrndq_m_f32): Remove.
6493 (__arm_vrndxq_m_f32): Remove.
6494 (__arm_vrndq_x_f16): Remove.
6495 (__arm_vrndq_x_f32): Remove.
6496 (__arm_vrndnq_x_f16): Remove.
6497 (__arm_vrndnq_x_f32): Remove.
6498 (__arm_vrndmq_x_f16): Remove.
6499 (__arm_vrndmq_x_f32): Remove.
6500 (__arm_vrndpq_x_f16): Remove.
6501 (__arm_vrndpq_x_f32): Remove.
6502 (__arm_vrndaq_x_f16): Remove.
6503 (__arm_vrndaq_x_f32): Remove.
6504 (__arm_vrndxq_x_f16): Remove.
6505 (__arm_vrndxq_x_f32): Remove.
6506 (__arm_vrndxq): Remove.
6507 (__arm_vrndq): Remove.
6508 (__arm_vrndpq): Remove.
6509 (__arm_vrndnq): Remove.
6510 (__arm_vrndmq): Remove.
6511 (__arm_vrndaq): Remove.
6512 (__arm_vrndaq_m): Remove.
6513 (__arm_vrndmq_m): Remove.
6514 (__arm_vrndnq_m): Remove.
6515 (__arm_vrndpq_m): Remove.
6516 (__arm_vrndq_m): Remove.
6517 (__arm_vrndxq_m): Remove.
6518 (__arm_vrndq_x): Remove.
6519 (__arm_vrndnq_x): Remove.
6520 (__arm_vrndmq_x): Remove.
6521 (__arm_vrndpq_x): Remove.
6522 (__arm_vrndaq_x): Remove.
6523 (__arm_vrndxq_x): Remove.
6525 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6527 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
6528 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
6529 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
6530 (vclzq, vqabsq, vqnegq): New.
6531 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
6532 (vqabsq, vqnegq): New.
6533 * config/arm/arm_mve.h (vabsq): Remove.
6536 (vabsq_f16): Remove.
6537 (vabsq_f32): Remove.
6539 (vabsq_s16): Remove.
6540 (vabsq_s32): Remove.
6541 (vabsq_m_s8): Remove.
6542 (vabsq_m_s16): Remove.
6543 (vabsq_m_s32): Remove.
6544 (vabsq_m_f16): Remove.
6545 (vabsq_m_f32): Remove.
6546 (vabsq_x_s8): Remove.
6547 (vabsq_x_s16): Remove.
6548 (vabsq_x_s32): Remove.
6549 (vabsq_x_f16): Remove.
6550 (vabsq_x_f32): Remove.
6551 (__arm_vabsq_s8): Remove.
6552 (__arm_vabsq_s16): Remove.
6553 (__arm_vabsq_s32): Remove.
6554 (__arm_vabsq_m_s8): Remove.
6555 (__arm_vabsq_m_s16): Remove.
6556 (__arm_vabsq_m_s32): Remove.
6557 (__arm_vabsq_x_s8): Remove.
6558 (__arm_vabsq_x_s16): Remove.
6559 (__arm_vabsq_x_s32): Remove.
6560 (__arm_vabsq_f16): Remove.
6561 (__arm_vabsq_f32): Remove.
6562 (__arm_vabsq_m_f16): Remove.
6563 (__arm_vabsq_m_f32): Remove.
6564 (__arm_vabsq_x_f16): Remove.
6565 (__arm_vabsq_x_f32): Remove.
6566 (__arm_vabsq): Remove.
6567 (__arm_vabsq_m): Remove.
6568 (__arm_vabsq_x): Remove.
6572 (vnegq_f16): Remove.
6573 (vnegq_f32): Remove.
6575 (vnegq_s16): Remove.
6576 (vnegq_s32): Remove.
6577 (vnegq_m_s8): Remove.
6578 (vnegq_m_s16): Remove.
6579 (vnegq_m_s32): Remove.
6580 (vnegq_m_f16): Remove.
6581 (vnegq_m_f32): Remove.
6582 (vnegq_x_s8): Remove.
6583 (vnegq_x_s16): Remove.
6584 (vnegq_x_s32): Remove.
6585 (vnegq_x_f16): Remove.
6586 (vnegq_x_f32): Remove.
6587 (__arm_vnegq_s8): Remove.
6588 (__arm_vnegq_s16): Remove.
6589 (__arm_vnegq_s32): Remove.
6590 (__arm_vnegq_m_s8): Remove.
6591 (__arm_vnegq_m_s16): Remove.
6592 (__arm_vnegq_m_s32): Remove.
6593 (__arm_vnegq_x_s8): Remove.
6594 (__arm_vnegq_x_s16): Remove.
6595 (__arm_vnegq_x_s32): Remove.
6596 (__arm_vnegq_f16): Remove.
6597 (__arm_vnegq_f32): Remove.
6598 (__arm_vnegq_m_f16): Remove.
6599 (__arm_vnegq_m_f32): Remove.
6600 (__arm_vnegq_x_f16): Remove.
6601 (__arm_vnegq_x_f32): Remove.
6602 (__arm_vnegq): Remove.
6603 (__arm_vnegq_m): Remove.
6604 (__arm_vnegq_x): Remove.
6609 (vclsq_s16): Remove.
6610 (vclsq_s32): Remove.
6611 (vclsq_m_s8): Remove.
6612 (vclsq_m_s16): Remove.
6613 (vclsq_m_s32): Remove.
6614 (vclsq_x_s8): Remove.
6615 (vclsq_x_s16): Remove.
6616 (vclsq_x_s32): Remove.
6617 (__arm_vclsq_s8): Remove.
6618 (__arm_vclsq_s16): Remove.
6619 (__arm_vclsq_s32): Remove.
6620 (__arm_vclsq_m_s8): Remove.
6621 (__arm_vclsq_m_s16): Remove.
6622 (__arm_vclsq_m_s32): Remove.
6623 (__arm_vclsq_x_s8): Remove.
6624 (__arm_vclsq_x_s16): Remove.
6625 (__arm_vclsq_x_s32): Remove.
6626 (__arm_vclsq): Remove.
6627 (__arm_vclsq_m): Remove.
6628 (__arm_vclsq_x): Remove.
6633 (vclzq_s16): Remove.
6634 (vclzq_s32): Remove.
6636 (vclzq_u16): Remove.
6637 (vclzq_u32): Remove.
6638 (vclzq_m_u8): Remove.
6639 (vclzq_m_s8): Remove.
6640 (vclzq_m_u16): Remove.
6641 (vclzq_m_s16): Remove.
6642 (vclzq_m_u32): Remove.
6643 (vclzq_m_s32): Remove.
6644 (vclzq_x_s8): Remove.
6645 (vclzq_x_s16): Remove.
6646 (vclzq_x_s32): Remove.
6647 (vclzq_x_u8): Remove.
6648 (vclzq_x_u16): Remove.
6649 (vclzq_x_u32): Remove.
6650 (__arm_vclzq_s8): Remove.
6651 (__arm_vclzq_s16): Remove.
6652 (__arm_vclzq_s32): Remove.
6653 (__arm_vclzq_u8): Remove.
6654 (__arm_vclzq_u16): Remove.
6655 (__arm_vclzq_u32): Remove.
6656 (__arm_vclzq_m_u8): Remove.
6657 (__arm_vclzq_m_s8): Remove.
6658 (__arm_vclzq_m_u16): Remove.
6659 (__arm_vclzq_m_s16): Remove.
6660 (__arm_vclzq_m_u32): Remove.
6661 (__arm_vclzq_m_s32): Remove.
6662 (__arm_vclzq_x_s8): Remove.
6663 (__arm_vclzq_x_s16): Remove.
6664 (__arm_vclzq_x_s32): Remove.
6665 (__arm_vclzq_x_u8): Remove.
6666 (__arm_vclzq_x_u16): Remove.
6667 (__arm_vclzq_x_u32): Remove.
6668 (__arm_vclzq): Remove.
6669 (__arm_vclzq_m): Remove.
6670 (__arm_vclzq_x): Remove.
6675 (vqabsq_s8): Remove.
6676 (vqabsq_s16): Remove.
6677 (vqabsq_s32): Remove.
6678 (vqnegq_s8): Remove.
6679 (vqnegq_s16): Remove.
6680 (vqnegq_s32): Remove.
6681 (vqnegq_m_s8): Remove.
6682 (vqabsq_m_s8): Remove.
6683 (vqnegq_m_s16): Remove.
6684 (vqabsq_m_s16): Remove.
6685 (vqnegq_m_s32): Remove.
6686 (vqabsq_m_s32): Remove.
6687 (__arm_vqabsq_s8): Remove.
6688 (__arm_vqabsq_s16): Remove.
6689 (__arm_vqabsq_s32): Remove.
6690 (__arm_vqnegq_s8): Remove.
6691 (__arm_vqnegq_s16): Remove.
6692 (__arm_vqnegq_s32): Remove.
6693 (__arm_vqnegq_m_s8): Remove.
6694 (__arm_vqabsq_m_s8): Remove.
6695 (__arm_vqnegq_m_s16): Remove.
6696 (__arm_vqabsq_m_s16): Remove.
6697 (__arm_vqnegq_m_s32): Remove.
6698 (__arm_vqabsq_m_s32): Remove.
6699 (__arm_vqabsq): Remove.
6700 (__arm_vqnegq): Remove.
6701 (__arm_vqnegq_m): Remove.
6702 (__arm_vqabsq_m): Remove.
6704 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6706 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
6707 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
6708 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
6709 vrndm, vrndn, vrndp, vrnd, vrndx.
6710 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
6711 VQABSQ_M_S, VQNEGQ_M_S.
6713 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
6714 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
6715 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
6716 (@mve_<mve_insn>q_f<mode>): ... this.
6717 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
6718 (mve_v<absneg_str>q_f<mode>): ... this.
6719 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
6720 (mve_v<absneg_str>q_s<mode>): ... this.
6721 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
6722 (@mve_<mve_insn>q_<supf><mode>): ... this.
6723 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
6724 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
6725 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
6726 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6727 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
6728 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
6729 (mve_vrndxq_m_f<mode>): Merge into ...
6730 (@mve_<mve_insn>q_m_f<mode>): ... this.
6732 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6734 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
6735 * config/arm/arm-mve-builtins-shapes.h (unary): New.
6737 2023-05-09 Jakub Jelinek <jakub@redhat.com>
6739 * mux-utils.h: Fix comment typo, avoides -> avoids.
6741 2023-05-09 Jakub Jelinek <jakub@redhat.com>
6743 PR tree-optimization/109778
6744 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
6745 wi::zext (x, width) rather than x if width != precision, rather
6746 than using wi::zext (right, width) after the shift.
6747 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
6748 of wi::lrotate or wi::rrotate.
6750 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6752 * genmatch.cc (get_out_file): Make static and rename to ...
6753 (choose_output): ... this. Reimplement. Update all uses ...
6754 (decision_tree::gen): ... here and ...
6757 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6759 * genmatch.cc (showUsage): Reimplement as ...
6760 (usage): ...this. Adjust all uses.
6761 (main): Print usage when no arguments. Add missing 'return 1'.
6763 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6765 * genmatch.cc (header_file): Make static.
6766 (emit_func): Rename to...
6767 (fp_decl): ... this. Adjust all uses.
6768 (fp_decl_done): New function. Use it...
6769 (decision_tree::gen): ... here and...
6770 (write_predicate): ... here.
6773 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
6775 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
6778 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
6779 Uros Bizjak <ubizjak@gmail.com>
6781 * config/i386/i386.md (any_or_plus): Move definition earlier.
6782 (*insvti_highpart_1): New define_insn_and_split to overwrite
6783 (insv) the highpart of a TImode register/memory.
6785 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
6787 * auto-profile.cc (auto_profile): Check todo from early_inline
6788 to see if cleanup_tree_vfg needs to be called.
6789 (early_inline): Return todo from early_inliner.
6791 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
6793 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
6795 (pass_vsetvl::get_block_info): New.
6796 (pass_vsetvl::update_vector_info): New.
6797 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
6798 (pass_vsetvl::compute_local_backward_infos): Ditto.
6799 (pass_vsetvl::transfer_before): Ditto.
6800 (pass_vsetvl::transfer_after): Ditto.
6801 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
6802 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
6803 (pass_vsetvl::cleanup_insns): Ditto.
6804 (pass_vsetvl::compute_local_backward_infos): Use
6807 2023-05-08 Jeff Law <jlaw@ventanamicro>
6809 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
6811 2023-05-08 Richard Biener <rguenther@suse.de>
6812 Michael Meissner <meissner@linux.ibm.com>
6814 PR middle-end/108623
6815 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
6816 Align bit fields > 1 bit to at least an 8-bit boundary.
6818 2023-05-08 Andrew Pinski <apinski@marvell.com>
6820 PR tree-optimization/109424
6821 PR tree-optimization/59424
6822 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
6823 (factor_out_conditional_operation): This and add support for all unary
6825 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
6826 to call factor_out_conditional_operation instead.
6828 2023-05-08 Andrew Pinski <apinski@marvell.com>
6830 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
6831 over factor_out_conditional_conversion.
6833 2023-05-08 Andrew Pinski <apinski@marvell.com>
6835 PR tree-optimization/49959
6836 PR tree-optimization/103771
6837 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
6838 Diamond shapped bb form for factor_out_conditional_conversion.
6840 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6842 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
6843 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
6844 (riscv_vector_get_mask_mode): Ditto.
6845 (get_mask_policy_no_pred): Ditto.
6846 (get_tail_policy_no_pred): Ditto.
6847 (get_mask_mode): New function.
6848 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
6849 (get_tail_policy_no_pred): Ditto.
6850 (riscv_vector_mask_mode_p): Ditto.
6851 (riscv_vector_get_mask_mode): Ditto.
6852 (get_mask_mode): New function.
6853 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
6855 (get_tail_policy_for_pred): Ditto.
6856 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
6857 (get_mask_policy_for_pred): Ditto
6858 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
6860 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
6862 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
6863 (riscv_select_multilib): New.
6864 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
6865 also handle select_by_abi.
6866 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
6867 to select_by_abi_arch_cmodel from 1.
6868 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
6869 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
6871 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
6873 * Makefile.in: (gimple-match-head.o-warn): Remove.
6874 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
6875 gimple-match-exports.cc.
6876 (gimple-match-auto.h): Only depend on s-gimple-match.
6877 (generic-match-auto.h): Likewise.
6879 2023-05-08 Andrew Pinski <apinski@marvell.com>
6881 PR tree-optimization/109691
6882 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
6884 If the removed statement can throw, have need_eh_cleanup
6885 include the bb of that statement.
6886 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
6887 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
6889 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
6890 Initialize dceworklist instead of stmts_to_remove.
6891 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
6892 Destore dceworklist instead of stmts_to_remove.
6893 (substitute_and_fold_dom_walker::before_dom_children):
6894 Set dceworklist instead of adding to stmts_to_remove.
6895 (substitute_and_fold_engine::substitute_and_fold):
6896 Call simple_dce_from_worklist instead of poping
6898 Don't update the stat on removal statements.
6900 2023-05-07 Andrew Pinski <apinski@marvell.com>
6903 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
6904 Change argument type to aarch64_feature_flags.
6905 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
6906 constructor argument type to aarch64_feature_flags.
6907 Change m_old_asm_isa_flags to be aarch64_feature_flags.
6909 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
6911 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
6912 more parallel code if can_create_pseudo_p.
6914 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
6917 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
6918 immediately before moving a multi-word register by parts.
6920 2023-05-06 Jeff Law <jlaw@ventanamicro>
6922 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
6924 2023-05-06 Michael Collison <collison@rivosinc.com>
6926 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
6927 Check that GET_MODE_NUNITS is a multiple of 2.
6929 2023-05-06 Michael Collison <collison@rivosinc.com>
6931 * config/riscv/riscv.cc
6932 (riscv_estimated_poly_value): Implement
6933 TARGET_ESTIMATED_POLY_VALUE.
6934 (riscv_preferred_simd_mode): Implement
6935 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
6936 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
6937 (riscv_empty_mask_is_expensive): Implement
6938 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
6939 (riscv_vectorize_create_costs): Implement
6940 TARGET_VECTORIZE_CREATE_COSTS.
6941 (riscv_support_vector_misalignment): Implement
6942 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
6943 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
6944 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
6945 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
6946 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
6948 2023-05-06 Jeff Law <jlaw@ventanamicro>
6950 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
6951 duplicate definition.
6953 2023-05-06 Michael Collison <collison@rivosinc.com>
6955 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
6956 (riscv_vector_preferred_simd_mode): Ditto.
6957 (get_mask_policy_no_pred): Ditto.
6958 (get_tail_policy_no_pred): Ditto.
6959 (riscv_vector_mask_mode_p): Ditto.
6960 (riscv_vector_get_mask_mode): Ditto.
6962 2023-05-06 Michael Collison <collison@rivosinc.com>
6964 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
6965 Remove static declaration to to make externally visible.
6966 (get_mask_policy_for_pred): Ditto.
6967 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
6968 New external declaration.
6969 (get_mask_policy_for_pred): Ditto.
6971 2023-05-06 Michael Collison <collison@rivosinc.com>
6973 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
6974 (riscv_vector_get_mask_mode): Ditto.
6975 (get_mask_policy_no_pred): Ditto.
6976 (get_tail_policy_no_pred): Ditto.
6978 2023-05-06 Xi Ruoyao <xry111@xry111.site>
6980 * config/loongarch/loongarch.h (struct machine_function): Add
6981 reg_is_wrapped_separately array for register wrapping
6983 * config/loongarch/loongarch.cc
6984 (loongarch_get_separate_components): New function.
6985 (loongarch_components_for_bb): Likewise.
6986 (loongarch_disqualify_components): Likewise.
6987 (loongarch_process_components): Likewise.
6988 (loongarch_emit_prologue_components): Likewise.
6989 (loongarch_emit_epilogue_components): Likewise.
6990 (loongarch_set_handled_components): Likewise.
6991 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
6992 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
6993 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
6994 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
6995 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
6996 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
6997 (loongarch_for_each_saved_reg): Skip registers that are wrapped
7000 2023-05-06 Xi Ruoyao <xry111@xry111.site>
7003 * Makefile.in (s-macro_list): Pass -nostdinc to
7006 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7008 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
7009 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
7010 (preferred_simd_mode): Ditto.
7011 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
7012 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
7013 (riscv_preferred_simd_mode): New function.
7014 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
7015 * config/riscv/vector.md: Add autovec.md.
7016 * config/riscv/autovec.md: New file.
7018 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7020 * real.h (dconst_pi): Define.
7021 (dconst_e_ptr): Formatting fix.
7022 (dconst_pi_ptr): Declare.
7023 * real.cc (dconst_pi_ptr): New function.
7024 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
7025 boundaries range with range computed from sin/cos of the particular
7026 bounds if the argument range is shorter than 2*pi.
7027 (cfn_sincos::op1_range): Take bulps into account when determining
7028 which result ranges are always invalid or behave like known NAN.
7030 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
7032 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
7033 pass type to vrange_storage::equal_p.
7034 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
7035 (irange_storage::equal_p): Same.
7036 (frange_storage::equal_p): Same.
7037 * value-range-storage.h (class frange_storage): Same.
7039 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7042 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
7043 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
7045 2023-05-06 liuhongt <hongtao.liu@intel.com>
7047 * combine.cc (maybe_swap_commutative_operands): Canonicalize
7048 vec_merge when mask is constant.
7049 * doc/md.texi: Document vec_merge canonicalization.
7051 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7053 * value-range.h (frange_arithmetic): Declare.
7054 * range-op-float.cc (frange_arithmetic): No longer static.
7055 * gimple-range-op.cc (frange_mpfr_arg1): New function.
7056 (cfn_sqrt::fold_range): Intersect the generic boundaries range
7057 with range computed from sqrt of the particular bounds.
7058 (cfn_sqrt::op1_range): Intersect the generic boundaries range
7059 with range computed from squared particular bounds.
7061 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7063 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
7064 earlier with helper variables also renamed.
7065 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
7066 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
7067 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
7069 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
7071 * config/cris/cris.md (splitop): Add PLUS.
7072 * config/cris/cris.cc (cris_split_constant): Also handle
7073 PLUS when a split into two insns may be useful.
7075 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7077 * config/cris/cris.md (movandsplit1): New define_peephole2.
7079 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7081 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
7083 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7085 * doc/md.texi (define_peephole2): Document order of scanning.
7087 2023-05-05 Pan Li <pan2.li@intel.com>
7088 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7090 * config/riscv/vector.md: Allow const as the operand of RVV
7093 2023-05-05 Pan Li <pan2.li@intel.com>
7095 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
7096 consumed by simplify_rtx.
7098 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7100 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
7101 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
7102 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
7103 * config/arm/arm_mve.h (vshrq): Remove.
7109 (vshrq_n_s8): Remove.
7110 (vshrq_n_s16): Remove.
7111 (vshrq_n_s32): Remove.
7112 (vshrq_n_u8): Remove.
7113 (vshrq_n_u16): Remove.
7114 (vshrq_n_u32): Remove.
7115 (vrshrq_n_u8): Remove.
7116 (vrshrq_n_s8): Remove.
7117 (vrshrq_n_u16): Remove.
7118 (vrshrq_n_s16): Remove.
7119 (vrshrq_n_u32): Remove.
7120 (vrshrq_n_s32): Remove.
7121 (vrshrq_m_n_s8): Remove.
7122 (vrshrq_m_n_s32): Remove.
7123 (vrshrq_m_n_s16): Remove.
7124 (vrshrq_m_n_u8): Remove.
7125 (vrshrq_m_n_u32): Remove.
7126 (vrshrq_m_n_u16): Remove.
7127 (vshrq_m_n_s8): Remove.
7128 (vshrq_m_n_s32): Remove.
7129 (vshrq_m_n_s16): Remove.
7130 (vshrq_m_n_u8): Remove.
7131 (vshrq_m_n_u32): Remove.
7132 (vshrq_m_n_u16): Remove.
7133 (vrshrq_x_n_s8): Remove.
7134 (vrshrq_x_n_s16): Remove.
7135 (vrshrq_x_n_s32): Remove.
7136 (vrshrq_x_n_u8): Remove.
7137 (vrshrq_x_n_u16): Remove.
7138 (vrshrq_x_n_u32): Remove.
7139 (vshrq_x_n_s8): Remove.
7140 (vshrq_x_n_s16): Remove.
7141 (vshrq_x_n_s32): Remove.
7142 (vshrq_x_n_u8): Remove.
7143 (vshrq_x_n_u16): Remove.
7144 (vshrq_x_n_u32): Remove.
7145 (__arm_vshrq_n_s8): Remove.
7146 (__arm_vshrq_n_s16): Remove.
7147 (__arm_vshrq_n_s32): Remove.
7148 (__arm_vshrq_n_u8): Remove.
7149 (__arm_vshrq_n_u16): Remove.
7150 (__arm_vshrq_n_u32): Remove.
7151 (__arm_vrshrq_n_u8): Remove.
7152 (__arm_vrshrq_n_s8): Remove.
7153 (__arm_vrshrq_n_u16): Remove.
7154 (__arm_vrshrq_n_s16): Remove.
7155 (__arm_vrshrq_n_u32): Remove.
7156 (__arm_vrshrq_n_s32): Remove.
7157 (__arm_vrshrq_m_n_s8): Remove.
7158 (__arm_vrshrq_m_n_s32): Remove.
7159 (__arm_vrshrq_m_n_s16): Remove.
7160 (__arm_vrshrq_m_n_u8): Remove.
7161 (__arm_vrshrq_m_n_u32): Remove.
7162 (__arm_vrshrq_m_n_u16): Remove.
7163 (__arm_vshrq_m_n_s8): Remove.
7164 (__arm_vshrq_m_n_s32): Remove.
7165 (__arm_vshrq_m_n_s16): Remove.
7166 (__arm_vshrq_m_n_u8): Remove.
7167 (__arm_vshrq_m_n_u32): Remove.
7168 (__arm_vshrq_m_n_u16): Remove.
7169 (__arm_vrshrq_x_n_s8): Remove.
7170 (__arm_vrshrq_x_n_s16): Remove.
7171 (__arm_vrshrq_x_n_s32): Remove.
7172 (__arm_vrshrq_x_n_u8): Remove.
7173 (__arm_vrshrq_x_n_u16): Remove.
7174 (__arm_vrshrq_x_n_u32): Remove.
7175 (__arm_vshrq_x_n_s8): Remove.
7176 (__arm_vshrq_x_n_s16): Remove.
7177 (__arm_vshrq_x_n_s32): Remove.
7178 (__arm_vshrq_x_n_u8): Remove.
7179 (__arm_vshrq_x_n_u16): Remove.
7180 (__arm_vshrq_x_n_u32): Remove.
7181 (__arm_vshrq): Remove.
7182 (__arm_vrshrq): Remove.
7183 (__arm_vrshrq_m): Remove.
7184 (__arm_vshrq_m): Remove.
7185 (__arm_vrshrq_x): Remove.
7186 (__arm_vshrq_x): Remove.
7188 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7190 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
7191 (mve_insn): Add vrshr, vshr.
7192 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
7193 (mve_vrshrq_n_<supf><mode>): Merge into ...
7194 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7195 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
7197 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7199 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7201 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
7202 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
7204 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7206 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
7207 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
7208 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
7209 (vqrshrunbq, vqrshruntq): New.
7210 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
7211 (vqrshrunbq, vqrshruntq): New.
7212 * config/arm/arm-mve-builtins.cc
7213 (function_instance::has_inactive_argument): Handle vqshrunbq,
7214 vqshruntq, vqrshrunbq, vqrshruntq.
7215 * config/arm/arm_mve.h (vqrshrunbq): Remove.
7216 (vqrshruntq): Remove.
7217 (vqrshrunbq_m): Remove.
7218 (vqrshruntq_m): Remove.
7219 (vqrshrunbq_n_s16): Remove.
7220 (vqrshrunbq_n_s32): Remove.
7221 (vqrshruntq_n_s16): Remove.
7222 (vqrshruntq_n_s32): Remove.
7223 (vqrshrunbq_m_n_s32): Remove.
7224 (vqrshrunbq_m_n_s16): Remove.
7225 (vqrshruntq_m_n_s32): Remove.
7226 (vqrshruntq_m_n_s16): Remove.
7227 (__arm_vqrshrunbq_n_s16): Remove.
7228 (__arm_vqrshrunbq_n_s32): Remove.
7229 (__arm_vqrshruntq_n_s16): Remove.
7230 (__arm_vqrshruntq_n_s32): Remove.
7231 (__arm_vqrshrunbq_m_n_s32): Remove.
7232 (__arm_vqrshrunbq_m_n_s16): Remove.
7233 (__arm_vqrshruntq_m_n_s32): Remove.
7234 (__arm_vqrshruntq_m_n_s16): Remove.
7235 (__arm_vqrshrunbq): Remove.
7236 (__arm_vqrshruntq): Remove.
7237 (__arm_vqrshrunbq_m): Remove.
7238 (__arm_vqrshruntq_m): Remove.
7239 (vqshrunbq): Remove.
7240 (vqshruntq): Remove.
7241 (vqshrunbq_m): Remove.
7242 (vqshruntq_m): Remove.
7243 (vqshrunbq_n_s16): Remove.
7244 (vqshruntq_n_s16): Remove.
7245 (vqshrunbq_n_s32): Remove.
7246 (vqshruntq_n_s32): Remove.
7247 (vqshrunbq_m_n_s32): Remove.
7248 (vqshrunbq_m_n_s16): Remove.
7249 (vqshruntq_m_n_s32): Remove.
7250 (vqshruntq_m_n_s16): Remove.
7251 (__arm_vqshrunbq_n_s16): Remove.
7252 (__arm_vqshruntq_n_s16): Remove.
7253 (__arm_vqshrunbq_n_s32): Remove.
7254 (__arm_vqshruntq_n_s32): Remove.
7255 (__arm_vqshrunbq_m_n_s32): Remove.
7256 (__arm_vqshrunbq_m_n_s16): Remove.
7257 (__arm_vqshruntq_m_n_s32): Remove.
7258 (__arm_vqshruntq_m_n_s16): Remove.
7259 (__arm_vqshrunbq): Remove.
7260 (__arm_vqshruntq): Remove.
7261 (__arm_vqshrunbq_m): Remove.
7262 (__arm_vqshruntq_m): Remove.
7264 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7266 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
7267 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
7268 (MVE_SHRN_M_N): Likewise.
7269 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
7270 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
7272 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
7273 (mve_vqrshruntq_n_s<mode>): Remove.
7274 (mve_vqshrunbq_n_s<mode>): Remove.
7275 (mve_vqshruntq_n_s<mode>): Remove.
7276 (mve_vqrshrunbq_m_n_s<mode>): Remove.
7277 (mve_vqrshruntq_m_n_s<mode>): Remove.
7278 (mve_vqshrunbq_m_n_s<mode>): Remove.
7279 (mve_vqshruntq_m_n_s<mode>): Remove.
7281 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7283 * config/arm/arm-mve-builtins-shapes.cc
7284 (binary_rshift_narrow_unsigned): New.
7285 * config/arm/arm-mve-builtins-shapes.h
7286 (binary_rshift_narrow_unsigned): New.
7288 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7290 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
7291 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
7292 (vqrshrnbq, vqrshrntq): New.
7293 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
7294 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
7296 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
7297 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
7298 * config/arm/arm-mve-builtins.cc
7299 (function_instance::has_inactive_argument): Handle vshrnbq,
7300 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
7302 * config/arm/arm_mve.h (vshrnbq): Remove.
7304 (vshrnbq_m): Remove.
7305 (vshrntq_m): Remove.
7306 (vshrnbq_n_s16): Remove.
7307 (vshrntq_n_s16): Remove.
7308 (vshrnbq_n_u16): Remove.
7309 (vshrntq_n_u16): Remove.
7310 (vshrnbq_n_s32): Remove.
7311 (vshrntq_n_s32): Remove.
7312 (vshrnbq_n_u32): Remove.
7313 (vshrntq_n_u32): Remove.
7314 (vshrnbq_m_n_s32): Remove.
7315 (vshrnbq_m_n_s16): Remove.
7316 (vshrnbq_m_n_u32): Remove.
7317 (vshrnbq_m_n_u16): Remove.
7318 (vshrntq_m_n_s32): Remove.
7319 (vshrntq_m_n_s16): Remove.
7320 (vshrntq_m_n_u32): Remove.
7321 (vshrntq_m_n_u16): Remove.
7322 (__arm_vshrnbq_n_s16): Remove.
7323 (__arm_vshrntq_n_s16): Remove.
7324 (__arm_vshrnbq_n_u16): Remove.
7325 (__arm_vshrntq_n_u16): Remove.
7326 (__arm_vshrnbq_n_s32): Remove.
7327 (__arm_vshrntq_n_s32): Remove.
7328 (__arm_vshrnbq_n_u32): Remove.
7329 (__arm_vshrntq_n_u32): Remove.
7330 (__arm_vshrnbq_m_n_s32): Remove.
7331 (__arm_vshrnbq_m_n_s16): Remove.
7332 (__arm_vshrnbq_m_n_u32): Remove.
7333 (__arm_vshrnbq_m_n_u16): Remove.
7334 (__arm_vshrntq_m_n_s32): Remove.
7335 (__arm_vshrntq_m_n_s16): Remove.
7336 (__arm_vshrntq_m_n_u32): Remove.
7337 (__arm_vshrntq_m_n_u16): Remove.
7338 (__arm_vshrnbq): Remove.
7339 (__arm_vshrntq): Remove.
7340 (__arm_vshrnbq_m): Remove.
7341 (__arm_vshrntq_m): Remove.
7344 (vrshrnbq_m): Remove.
7345 (vrshrntq_m): Remove.
7346 (vrshrnbq_n_s16): Remove.
7347 (vrshrntq_n_s16): Remove.
7348 (vrshrnbq_n_u16): Remove.
7349 (vrshrntq_n_u16): Remove.
7350 (vrshrnbq_n_s32): Remove.
7351 (vrshrntq_n_s32): Remove.
7352 (vrshrnbq_n_u32): Remove.
7353 (vrshrntq_n_u32): Remove.
7354 (vrshrnbq_m_n_s32): Remove.
7355 (vrshrnbq_m_n_s16): Remove.
7356 (vrshrnbq_m_n_u32): Remove.
7357 (vrshrnbq_m_n_u16): Remove.
7358 (vrshrntq_m_n_s32): Remove.
7359 (vrshrntq_m_n_s16): Remove.
7360 (vrshrntq_m_n_u32): Remove.
7361 (vrshrntq_m_n_u16): Remove.
7362 (__arm_vrshrnbq_n_s16): Remove.
7363 (__arm_vrshrntq_n_s16): Remove.
7364 (__arm_vrshrnbq_n_u16): Remove.
7365 (__arm_vrshrntq_n_u16): Remove.
7366 (__arm_vrshrnbq_n_s32): Remove.
7367 (__arm_vrshrntq_n_s32): Remove.
7368 (__arm_vrshrnbq_n_u32): Remove.
7369 (__arm_vrshrntq_n_u32): Remove.
7370 (__arm_vrshrnbq_m_n_s32): Remove.
7371 (__arm_vrshrnbq_m_n_s16): Remove.
7372 (__arm_vrshrnbq_m_n_u32): Remove.
7373 (__arm_vrshrnbq_m_n_u16): Remove.
7374 (__arm_vrshrntq_m_n_s32): Remove.
7375 (__arm_vrshrntq_m_n_s16): Remove.
7376 (__arm_vrshrntq_m_n_u32): Remove.
7377 (__arm_vrshrntq_m_n_u16): Remove.
7378 (__arm_vrshrnbq): Remove.
7379 (__arm_vrshrntq): Remove.
7380 (__arm_vrshrnbq_m): Remove.
7381 (__arm_vrshrntq_m): Remove.
7384 (vqshrnbq_m): Remove.
7385 (vqshrntq_m): Remove.
7386 (vqshrnbq_n_s16): Remove.
7387 (vqshrntq_n_s16): Remove.
7388 (vqshrnbq_n_u16): Remove.
7389 (vqshrntq_n_u16): Remove.
7390 (vqshrnbq_n_s32): Remove.
7391 (vqshrntq_n_s32): Remove.
7392 (vqshrnbq_n_u32): Remove.
7393 (vqshrntq_n_u32): Remove.
7394 (vqshrnbq_m_n_s32): Remove.
7395 (vqshrnbq_m_n_s16): Remove.
7396 (vqshrnbq_m_n_u32): Remove.
7397 (vqshrnbq_m_n_u16): Remove.
7398 (vqshrntq_m_n_s32): Remove.
7399 (vqshrntq_m_n_s16): Remove.
7400 (vqshrntq_m_n_u32): Remove.
7401 (vqshrntq_m_n_u16): Remove.
7402 (__arm_vqshrnbq_n_s16): Remove.
7403 (__arm_vqshrntq_n_s16): Remove.
7404 (__arm_vqshrnbq_n_u16): Remove.
7405 (__arm_vqshrntq_n_u16): Remove.
7406 (__arm_vqshrnbq_n_s32): Remove.
7407 (__arm_vqshrntq_n_s32): Remove.
7408 (__arm_vqshrnbq_n_u32): Remove.
7409 (__arm_vqshrntq_n_u32): Remove.
7410 (__arm_vqshrnbq_m_n_s32): Remove.
7411 (__arm_vqshrnbq_m_n_s16): Remove.
7412 (__arm_vqshrnbq_m_n_u32): Remove.
7413 (__arm_vqshrnbq_m_n_u16): Remove.
7414 (__arm_vqshrntq_m_n_s32): Remove.
7415 (__arm_vqshrntq_m_n_s16): Remove.
7416 (__arm_vqshrntq_m_n_u32): Remove.
7417 (__arm_vqshrntq_m_n_u16): Remove.
7418 (__arm_vqshrnbq): Remove.
7419 (__arm_vqshrntq): Remove.
7420 (__arm_vqshrnbq_m): Remove.
7421 (__arm_vqshrntq_m): Remove.
7422 (vqrshrnbq): Remove.
7423 (vqrshrntq): Remove.
7424 (vqrshrnbq_m): Remove.
7425 (vqrshrntq_m): Remove.
7426 (vqrshrnbq_n_s16): Remove.
7427 (vqrshrnbq_n_u16): Remove.
7428 (vqrshrnbq_n_s32): Remove.
7429 (vqrshrnbq_n_u32): Remove.
7430 (vqrshrntq_n_s16): Remove.
7431 (vqrshrntq_n_u16): Remove.
7432 (vqrshrntq_n_s32): Remove.
7433 (vqrshrntq_n_u32): Remove.
7434 (vqrshrnbq_m_n_s32): Remove.
7435 (vqrshrnbq_m_n_s16): Remove.
7436 (vqrshrnbq_m_n_u32): Remove.
7437 (vqrshrnbq_m_n_u16): Remove.
7438 (vqrshrntq_m_n_s32): Remove.
7439 (vqrshrntq_m_n_s16): Remove.
7440 (vqrshrntq_m_n_u32): Remove.
7441 (vqrshrntq_m_n_u16): Remove.
7442 (__arm_vqrshrnbq_n_s16): Remove.
7443 (__arm_vqrshrnbq_n_u16): Remove.
7444 (__arm_vqrshrnbq_n_s32): Remove.
7445 (__arm_vqrshrnbq_n_u32): Remove.
7446 (__arm_vqrshrntq_n_s16): Remove.
7447 (__arm_vqrshrntq_n_u16): Remove.
7448 (__arm_vqrshrntq_n_s32): Remove.
7449 (__arm_vqrshrntq_n_u32): Remove.
7450 (__arm_vqrshrnbq_m_n_s32): Remove.
7451 (__arm_vqrshrnbq_m_n_s16): Remove.
7452 (__arm_vqrshrnbq_m_n_u32): Remove.
7453 (__arm_vqrshrnbq_m_n_u16): Remove.
7454 (__arm_vqrshrntq_m_n_s32): Remove.
7455 (__arm_vqrshrntq_m_n_s16): Remove.
7456 (__arm_vqrshrntq_m_n_u32): Remove.
7457 (__arm_vqrshrntq_m_n_u16): Remove.
7458 (__arm_vqrshrnbq): Remove.
7459 (__arm_vqrshrntq): Remove.
7460 (__arm_vqrshrnbq_m): Remove.
7461 (__arm_vqrshrntq_m): Remove.
7463 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7465 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
7466 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
7467 vrshrnt, vshrnb, vshrnt.
7469 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
7470 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
7471 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
7472 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
7473 (mve_vshrntq_n_<supf><mode>): Merge into ...
7474 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7475 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
7476 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
7477 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
7478 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
7480 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7482 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7484 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
7486 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
7488 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7490 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
7491 (vmaxq, vminq): New.
7492 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
7493 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
7494 * config/arm/arm_mve.h (vminq): Remove.
7504 (vminq_u16): Remove.
7505 (vmaxq_u16): Remove.
7506 (vminq_s16): Remove.
7507 (vmaxq_s16): Remove.
7508 (vminq_u32): Remove.
7509 (vmaxq_u32): Remove.
7510 (vminq_s32): Remove.
7511 (vmaxq_s32): Remove.
7512 (vmaxq_m_s8): Remove.
7513 (vmaxq_m_s32): Remove.
7514 (vmaxq_m_s16): Remove.
7515 (vmaxq_m_u8): Remove.
7516 (vmaxq_m_u32): Remove.
7517 (vmaxq_m_u16): Remove.
7518 (vminq_m_s8): Remove.
7519 (vminq_m_s32): Remove.
7520 (vminq_m_s16): Remove.
7521 (vminq_m_u8): Remove.
7522 (vminq_m_u32): Remove.
7523 (vminq_m_u16): Remove.
7524 (vminq_x_s8): Remove.
7525 (vminq_x_s16): Remove.
7526 (vminq_x_s32): Remove.
7527 (vminq_x_u8): Remove.
7528 (vminq_x_u16): Remove.
7529 (vminq_x_u32): Remove.
7530 (vmaxq_x_s8): Remove.
7531 (vmaxq_x_s16): Remove.
7532 (vmaxq_x_s32): Remove.
7533 (vmaxq_x_u8): Remove.
7534 (vmaxq_x_u16): Remove.
7535 (vmaxq_x_u32): Remove.
7536 (__arm_vminq_u8): Remove.
7537 (__arm_vmaxq_u8): Remove.
7538 (__arm_vminq_s8): Remove.
7539 (__arm_vmaxq_s8): Remove.
7540 (__arm_vminq_u16): Remove.
7541 (__arm_vmaxq_u16): Remove.
7542 (__arm_vminq_s16): Remove.
7543 (__arm_vmaxq_s16): Remove.
7544 (__arm_vminq_u32): Remove.
7545 (__arm_vmaxq_u32): Remove.
7546 (__arm_vminq_s32): Remove.
7547 (__arm_vmaxq_s32): Remove.
7548 (__arm_vmaxq_m_s8): Remove.
7549 (__arm_vmaxq_m_s32): Remove.
7550 (__arm_vmaxq_m_s16): Remove.
7551 (__arm_vmaxq_m_u8): Remove.
7552 (__arm_vmaxq_m_u32): Remove.
7553 (__arm_vmaxq_m_u16): Remove.
7554 (__arm_vminq_m_s8): Remove.
7555 (__arm_vminq_m_s32): Remove.
7556 (__arm_vminq_m_s16): Remove.
7557 (__arm_vminq_m_u8): Remove.
7558 (__arm_vminq_m_u32): Remove.
7559 (__arm_vminq_m_u16): Remove.
7560 (__arm_vminq_x_s8): Remove.
7561 (__arm_vminq_x_s16): Remove.
7562 (__arm_vminq_x_s32): Remove.
7563 (__arm_vminq_x_u8): Remove.
7564 (__arm_vminq_x_u16): Remove.
7565 (__arm_vminq_x_u32): Remove.
7566 (__arm_vmaxq_x_s8): Remove.
7567 (__arm_vmaxq_x_s16): Remove.
7568 (__arm_vmaxq_x_s32): Remove.
7569 (__arm_vmaxq_x_u8): Remove.
7570 (__arm_vmaxq_x_u16): Remove.
7571 (__arm_vmaxq_x_u32): Remove.
7572 (__arm_vminq): Remove.
7573 (__arm_vmaxq): Remove.
7574 (__arm_vmaxq_m): Remove.
7575 (__arm_vminq_m): Remove.
7576 (__arm_vminq_x): Remove.
7577 (__arm_vmaxq_x): Remove.
7579 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7581 * config/arm/iterators.md (MAX_MIN_SU): New.
7582 (max_min_su_str): New.
7583 (max_min_supf): New.
7584 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
7585 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
7586 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
7588 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7590 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
7591 (vqshlq, vshlq): New.
7592 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
7593 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
7594 * config/arm/arm_mve.h (vshlq): Remove.
7597 (vshlq_m_r): Remove.
7599 (vshlq_m_n): Remove.
7601 (vshlq_x_n): Remove.
7603 (vshlq_s16): Remove.
7604 (vshlq_s32): Remove.
7606 (vshlq_u16): Remove.
7607 (vshlq_u32): Remove.
7608 (vshlq_r_u8): Remove.
7609 (vshlq_n_u8): Remove.
7610 (vshlq_r_s8): Remove.
7611 (vshlq_n_s8): Remove.
7612 (vshlq_r_u16): Remove.
7613 (vshlq_n_u16): Remove.
7614 (vshlq_r_s16): Remove.
7615 (vshlq_n_s16): Remove.
7616 (vshlq_r_u32): Remove.
7617 (vshlq_n_u32): Remove.
7618 (vshlq_r_s32): Remove.
7619 (vshlq_n_s32): Remove.
7620 (vshlq_m_r_u8): Remove.
7621 (vshlq_m_r_s8): Remove.
7622 (vshlq_m_r_u16): Remove.
7623 (vshlq_m_r_s16): Remove.
7624 (vshlq_m_r_u32): Remove.
7625 (vshlq_m_r_s32): Remove.
7626 (vshlq_m_u8): Remove.
7627 (vshlq_m_s8): Remove.
7628 (vshlq_m_u16): Remove.
7629 (vshlq_m_s16): Remove.
7630 (vshlq_m_u32): Remove.
7631 (vshlq_m_s32): Remove.
7632 (vshlq_m_n_s8): Remove.
7633 (vshlq_m_n_s32): Remove.
7634 (vshlq_m_n_s16): Remove.
7635 (vshlq_m_n_u8): Remove.
7636 (vshlq_m_n_u32): Remove.
7637 (vshlq_m_n_u16): Remove.
7638 (vshlq_x_s8): Remove.
7639 (vshlq_x_s16): Remove.
7640 (vshlq_x_s32): Remove.
7641 (vshlq_x_u8): Remove.
7642 (vshlq_x_u16): Remove.
7643 (vshlq_x_u32): Remove.
7644 (vshlq_x_n_s8): Remove.
7645 (vshlq_x_n_s16): Remove.
7646 (vshlq_x_n_s32): Remove.
7647 (vshlq_x_n_u8): Remove.
7648 (vshlq_x_n_u16): Remove.
7649 (vshlq_x_n_u32): Remove.
7650 (__arm_vshlq_s8): Remove.
7651 (__arm_vshlq_s16): Remove.
7652 (__arm_vshlq_s32): Remove.
7653 (__arm_vshlq_u8): Remove.
7654 (__arm_vshlq_u16): Remove.
7655 (__arm_vshlq_u32): Remove.
7656 (__arm_vshlq_r_u8): Remove.
7657 (__arm_vshlq_n_u8): Remove.
7658 (__arm_vshlq_r_s8): Remove.
7659 (__arm_vshlq_n_s8): Remove.
7660 (__arm_vshlq_r_u16): Remove.
7661 (__arm_vshlq_n_u16): Remove.
7662 (__arm_vshlq_r_s16): Remove.
7663 (__arm_vshlq_n_s16): Remove.
7664 (__arm_vshlq_r_u32): Remove.
7665 (__arm_vshlq_n_u32): Remove.
7666 (__arm_vshlq_r_s32): Remove.
7667 (__arm_vshlq_n_s32): Remove.
7668 (__arm_vshlq_m_r_u8): Remove.
7669 (__arm_vshlq_m_r_s8): Remove.
7670 (__arm_vshlq_m_r_u16): Remove.
7671 (__arm_vshlq_m_r_s16): Remove.
7672 (__arm_vshlq_m_r_u32): Remove.
7673 (__arm_vshlq_m_r_s32): Remove.
7674 (__arm_vshlq_m_u8): Remove.
7675 (__arm_vshlq_m_s8): Remove.
7676 (__arm_vshlq_m_u16): Remove.
7677 (__arm_vshlq_m_s16): Remove.
7678 (__arm_vshlq_m_u32): Remove.
7679 (__arm_vshlq_m_s32): Remove.
7680 (__arm_vshlq_m_n_s8): Remove.
7681 (__arm_vshlq_m_n_s32): Remove.
7682 (__arm_vshlq_m_n_s16): Remove.
7683 (__arm_vshlq_m_n_u8): Remove.
7684 (__arm_vshlq_m_n_u32): Remove.
7685 (__arm_vshlq_m_n_u16): Remove.
7686 (__arm_vshlq_x_s8): Remove.
7687 (__arm_vshlq_x_s16): Remove.
7688 (__arm_vshlq_x_s32): Remove.
7689 (__arm_vshlq_x_u8): Remove.
7690 (__arm_vshlq_x_u16): Remove.
7691 (__arm_vshlq_x_u32): Remove.
7692 (__arm_vshlq_x_n_s8): Remove.
7693 (__arm_vshlq_x_n_s16): Remove.
7694 (__arm_vshlq_x_n_s32): Remove.
7695 (__arm_vshlq_x_n_u8): Remove.
7696 (__arm_vshlq_x_n_u16): Remove.
7697 (__arm_vshlq_x_n_u32): Remove.
7698 (__arm_vshlq): Remove.
7699 (__arm_vshlq_r): Remove.
7700 (__arm_vshlq_n): Remove.
7701 (__arm_vshlq_m_r): Remove.
7702 (__arm_vshlq_m): Remove.
7703 (__arm_vshlq_m_n): Remove.
7704 (__arm_vshlq_x): Remove.
7705 (__arm_vshlq_x_n): Remove.
7709 (vqshlq_m_r): Remove.
7710 (vqshlq_m_n): Remove.
7712 (vqshlq_u8): Remove.
7713 (vqshlq_r_u8): Remove.
7714 (vqshlq_n_u8): Remove.
7715 (vqshlq_s8): Remove.
7716 (vqshlq_r_s8): Remove.
7717 (vqshlq_n_s8): Remove.
7718 (vqshlq_u16): Remove.
7719 (vqshlq_r_u16): Remove.
7720 (vqshlq_n_u16): Remove.
7721 (vqshlq_s16): Remove.
7722 (vqshlq_r_s16): Remove.
7723 (vqshlq_n_s16): Remove.
7724 (vqshlq_u32): Remove.
7725 (vqshlq_r_u32): Remove.
7726 (vqshlq_n_u32): Remove.
7727 (vqshlq_s32): Remove.
7728 (vqshlq_r_s32): Remove.
7729 (vqshlq_n_s32): Remove.
7730 (vqshlq_m_r_u8): Remove.
7731 (vqshlq_m_r_s8): Remove.
7732 (vqshlq_m_r_u16): Remove.
7733 (vqshlq_m_r_s16): Remove.
7734 (vqshlq_m_r_u32): Remove.
7735 (vqshlq_m_r_s32): Remove.
7736 (vqshlq_m_n_s8): Remove.
7737 (vqshlq_m_n_s32): Remove.
7738 (vqshlq_m_n_s16): Remove.
7739 (vqshlq_m_n_u8): Remove.
7740 (vqshlq_m_n_u32): Remove.
7741 (vqshlq_m_n_u16): Remove.
7742 (vqshlq_m_s8): Remove.
7743 (vqshlq_m_s32): Remove.
7744 (vqshlq_m_s16): Remove.
7745 (vqshlq_m_u8): Remove.
7746 (vqshlq_m_u32): Remove.
7747 (vqshlq_m_u16): Remove.
7748 (__arm_vqshlq_u8): Remove.
7749 (__arm_vqshlq_r_u8): Remove.
7750 (__arm_vqshlq_n_u8): Remove.
7751 (__arm_vqshlq_s8): Remove.
7752 (__arm_vqshlq_r_s8): Remove.
7753 (__arm_vqshlq_n_s8): Remove.
7754 (__arm_vqshlq_u16): Remove.
7755 (__arm_vqshlq_r_u16): Remove.
7756 (__arm_vqshlq_n_u16): Remove.
7757 (__arm_vqshlq_s16): Remove.
7758 (__arm_vqshlq_r_s16): Remove.
7759 (__arm_vqshlq_n_s16): Remove.
7760 (__arm_vqshlq_u32): Remove.
7761 (__arm_vqshlq_r_u32): Remove.
7762 (__arm_vqshlq_n_u32): Remove.
7763 (__arm_vqshlq_s32): Remove.
7764 (__arm_vqshlq_r_s32): Remove.
7765 (__arm_vqshlq_n_s32): Remove.
7766 (__arm_vqshlq_m_r_u8): Remove.
7767 (__arm_vqshlq_m_r_s8): Remove.
7768 (__arm_vqshlq_m_r_u16): Remove.
7769 (__arm_vqshlq_m_r_s16): Remove.
7770 (__arm_vqshlq_m_r_u32): Remove.
7771 (__arm_vqshlq_m_r_s32): Remove.
7772 (__arm_vqshlq_m_n_s8): Remove.
7773 (__arm_vqshlq_m_n_s32): Remove.
7774 (__arm_vqshlq_m_n_s16): Remove.
7775 (__arm_vqshlq_m_n_u8): Remove.
7776 (__arm_vqshlq_m_n_u32): Remove.
7777 (__arm_vqshlq_m_n_u16): Remove.
7778 (__arm_vqshlq_m_s8): Remove.
7779 (__arm_vqshlq_m_s32): Remove.
7780 (__arm_vqshlq_m_s16): Remove.
7781 (__arm_vqshlq_m_u8): Remove.
7782 (__arm_vqshlq_m_u32): Remove.
7783 (__arm_vqshlq_m_u16): Remove.
7784 (__arm_vqshlq): Remove.
7785 (__arm_vqshlq_r): Remove.
7786 (__arm_vqshlq_n): Remove.
7787 (__arm_vqshlq_m_r): Remove.
7788 (__arm_vqshlq_m_n): Remove.
7789 (__arm_vqshlq_m): Remove.
7791 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7793 * config/arm/arm-mve-builtins-functions.h (class
7794 unspec_mve_function_exact_insn_vshl): New.
7796 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7798 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
7799 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
7801 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7803 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
7804 (finish_opt_n_resolution): Handle MODE_r.
7805 * config/arm/arm-mve-builtins.def (r): New mode.
7807 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7809 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
7810 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
7812 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7814 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
7816 * config/arm/arm-mve-builtins-base.def (vabdq): New.
7817 * config/arm/arm-mve-builtins-base.h (vabdq): New.
7818 * config/arm/arm_mve.h (vabdq): Remove.
7823 (vabdq_u16): Remove.
7824 (vabdq_s16): Remove.
7825 (vabdq_u32): Remove.
7826 (vabdq_s32): Remove.
7827 (vabdq_f16): Remove.
7828 (vabdq_f32): Remove.
7829 (vabdq_m_s8): Remove.
7830 (vabdq_m_s32): Remove.
7831 (vabdq_m_s16): Remove.
7832 (vabdq_m_u8): Remove.
7833 (vabdq_m_u32): Remove.
7834 (vabdq_m_u16): Remove.
7835 (vabdq_m_f32): Remove.
7836 (vabdq_m_f16): Remove.
7837 (vabdq_x_s8): Remove.
7838 (vabdq_x_s16): Remove.
7839 (vabdq_x_s32): Remove.
7840 (vabdq_x_u8): Remove.
7841 (vabdq_x_u16): Remove.
7842 (vabdq_x_u32): Remove.
7843 (vabdq_x_f16): Remove.
7844 (vabdq_x_f32): Remove.
7845 (__arm_vabdq_u8): Remove.
7846 (__arm_vabdq_s8): Remove.
7847 (__arm_vabdq_u16): Remove.
7848 (__arm_vabdq_s16): Remove.
7849 (__arm_vabdq_u32): Remove.
7850 (__arm_vabdq_s32): Remove.
7851 (__arm_vabdq_m_s8): Remove.
7852 (__arm_vabdq_m_s32): Remove.
7853 (__arm_vabdq_m_s16): Remove.
7854 (__arm_vabdq_m_u8): Remove.
7855 (__arm_vabdq_m_u32): Remove.
7856 (__arm_vabdq_m_u16): Remove.
7857 (__arm_vabdq_x_s8): Remove.
7858 (__arm_vabdq_x_s16): Remove.
7859 (__arm_vabdq_x_s32): Remove.
7860 (__arm_vabdq_x_u8): Remove.
7861 (__arm_vabdq_x_u16): Remove.
7862 (__arm_vabdq_x_u32): Remove.
7863 (__arm_vabdq_f16): Remove.
7864 (__arm_vabdq_f32): Remove.
7865 (__arm_vabdq_m_f32): Remove.
7866 (__arm_vabdq_m_f16): Remove.
7867 (__arm_vabdq_x_f16): Remove.
7868 (__arm_vabdq_x_f32): Remove.
7869 (__arm_vabdq): Remove.
7870 (__arm_vabdq_m): Remove.
7871 (__arm_vabdq_x): Remove.
7873 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7875 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
7876 (MVE_FP_VABDQ_ONLY): New.
7877 (mve_insn): Add vabd.
7878 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
7879 (@mve_<mve_insn>q_f<mode>): ... this.
7880 (mve_vabdq_m_f<mode>): Remove.
7882 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7884 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
7885 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
7886 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
7887 * config/arm/arm_mve.h (vqrdmulhq): Remove.
7888 (vqrdmulhq_m): Remove.
7889 (vqrdmulhq_s8): Remove.
7890 (vqrdmulhq_n_s8): Remove.
7891 (vqrdmulhq_s16): Remove.
7892 (vqrdmulhq_n_s16): Remove.
7893 (vqrdmulhq_s32): Remove.
7894 (vqrdmulhq_n_s32): Remove.
7895 (vqrdmulhq_m_n_s8): Remove.
7896 (vqrdmulhq_m_n_s32): Remove.
7897 (vqrdmulhq_m_n_s16): Remove.
7898 (vqrdmulhq_m_s8): Remove.
7899 (vqrdmulhq_m_s32): Remove.
7900 (vqrdmulhq_m_s16): Remove.
7901 (__arm_vqrdmulhq_s8): Remove.
7902 (__arm_vqrdmulhq_n_s8): Remove.
7903 (__arm_vqrdmulhq_s16): Remove.
7904 (__arm_vqrdmulhq_n_s16): Remove.
7905 (__arm_vqrdmulhq_s32): Remove.
7906 (__arm_vqrdmulhq_n_s32): Remove.
7907 (__arm_vqrdmulhq_m_n_s8): Remove.
7908 (__arm_vqrdmulhq_m_n_s32): Remove.
7909 (__arm_vqrdmulhq_m_n_s16): Remove.
7910 (__arm_vqrdmulhq_m_s8): Remove.
7911 (__arm_vqrdmulhq_m_s32): Remove.
7912 (__arm_vqrdmulhq_m_s16): Remove.
7913 (__arm_vqrdmulhq): Remove.
7914 (__arm_vqrdmulhq_m): Remove.
7916 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7918 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
7919 (MVE_SHIFT_N, MVE_SHIFT_R): New.
7920 (mve_insn): Add vqshl, vshl.
7921 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
7922 (mve_vshlq_n_<supf><mode>): Merge into ...
7923 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7924 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
7926 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
7927 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
7929 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
7930 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
7932 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7933 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
7935 (@mve_<mve_insn>q_<supf><mode>): ... this.
7937 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7939 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
7940 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
7941 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
7942 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
7944 * config/arm/arm_mve.h (vrshlq): Remove.
7945 (vrshlq_m_n): Remove.
7948 (vrshlq_u8): Remove.
7949 (vrshlq_n_u8): Remove.
7950 (vrshlq_s8): Remove.
7951 (vrshlq_n_s8): Remove.
7952 (vrshlq_u16): Remove.
7953 (vrshlq_n_u16): Remove.
7954 (vrshlq_s16): Remove.
7955 (vrshlq_n_s16): Remove.
7956 (vrshlq_u32): Remove.
7957 (vrshlq_n_u32): Remove.
7958 (vrshlq_s32): Remove.
7959 (vrshlq_n_s32): Remove.
7960 (vrshlq_m_n_u8): Remove.
7961 (vrshlq_m_n_s8): Remove.
7962 (vrshlq_m_n_u16): Remove.
7963 (vrshlq_m_n_s16): Remove.
7964 (vrshlq_m_n_u32): Remove.
7965 (vrshlq_m_n_s32): Remove.
7966 (vrshlq_m_s8): Remove.
7967 (vrshlq_m_s32): Remove.
7968 (vrshlq_m_s16): Remove.
7969 (vrshlq_m_u8): Remove.
7970 (vrshlq_m_u32): Remove.
7971 (vrshlq_m_u16): Remove.
7972 (vrshlq_x_s8): Remove.
7973 (vrshlq_x_s16): Remove.
7974 (vrshlq_x_s32): Remove.
7975 (vrshlq_x_u8): Remove.
7976 (vrshlq_x_u16): Remove.
7977 (vrshlq_x_u32): Remove.
7978 (__arm_vrshlq_u8): Remove.
7979 (__arm_vrshlq_n_u8): Remove.
7980 (__arm_vrshlq_s8): Remove.
7981 (__arm_vrshlq_n_s8): Remove.
7982 (__arm_vrshlq_u16): Remove.
7983 (__arm_vrshlq_n_u16): Remove.
7984 (__arm_vrshlq_s16): Remove.
7985 (__arm_vrshlq_n_s16): Remove.
7986 (__arm_vrshlq_u32): Remove.
7987 (__arm_vrshlq_n_u32): Remove.
7988 (__arm_vrshlq_s32): Remove.
7989 (__arm_vrshlq_n_s32): Remove.
7990 (__arm_vrshlq_m_n_u8): Remove.
7991 (__arm_vrshlq_m_n_s8): Remove.
7992 (__arm_vrshlq_m_n_u16): Remove.
7993 (__arm_vrshlq_m_n_s16): Remove.
7994 (__arm_vrshlq_m_n_u32): Remove.
7995 (__arm_vrshlq_m_n_s32): Remove.
7996 (__arm_vrshlq_m_s8): Remove.
7997 (__arm_vrshlq_m_s32): Remove.
7998 (__arm_vrshlq_m_s16): Remove.
7999 (__arm_vrshlq_m_u8): Remove.
8000 (__arm_vrshlq_m_u32): Remove.
8001 (__arm_vrshlq_m_u16): Remove.
8002 (__arm_vrshlq_x_s8): Remove.
8003 (__arm_vrshlq_x_s16): Remove.
8004 (__arm_vrshlq_x_s32): Remove.
8005 (__arm_vrshlq_x_u8): Remove.
8006 (__arm_vrshlq_x_u16): Remove.
8007 (__arm_vrshlq_x_u32): Remove.
8008 (__arm_vrshlq): Remove.
8009 (__arm_vrshlq_m_n): Remove.
8010 (__arm_vrshlq_m): Remove.
8011 (__arm_vrshlq_x): Remove.
8013 (vqrshlq_m_n): Remove.
8014 (vqrshlq_m): Remove.
8015 (vqrshlq_u8): Remove.
8016 (vqrshlq_n_u8): Remove.
8017 (vqrshlq_s8): Remove.
8018 (vqrshlq_n_s8): Remove.
8019 (vqrshlq_u16): Remove.
8020 (vqrshlq_n_u16): Remove.
8021 (vqrshlq_s16): Remove.
8022 (vqrshlq_n_s16): Remove.
8023 (vqrshlq_u32): Remove.
8024 (vqrshlq_n_u32): Remove.
8025 (vqrshlq_s32): Remove.
8026 (vqrshlq_n_s32): Remove.
8027 (vqrshlq_m_n_u8): Remove.
8028 (vqrshlq_m_n_s8): Remove.
8029 (vqrshlq_m_n_u16): Remove.
8030 (vqrshlq_m_n_s16): Remove.
8031 (vqrshlq_m_n_u32): Remove.
8032 (vqrshlq_m_n_s32): Remove.
8033 (vqrshlq_m_s8): Remove.
8034 (vqrshlq_m_s32): Remove.
8035 (vqrshlq_m_s16): Remove.
8036 (vqrshlq_m_u8): Remove.
8037 (vqrshlq_m_u32): Remove.
8038 (vqrshlq_m_u16): Remove.
8039 (__arm_vqrshlq_u8): Remove.
8040 (__arm_vqrshlq_n_u8): Remove.
8041 (__arm_vqrshlq_s8): Remove.
8042 (__arm_vqrshlq_n_s8): Remove.
8043 (__arm_vqrshlq_u16): Remove.
8044 (__arm_vqrshlq_n_u16): Remove.
8045 (__arm_vqrshlq_s16): Remove.
8046 (__arm_vqrshlq_n_s16): Remove.
8047 (__arm_vqrshlq_u32): Remove.
8048 (__arm_vqrshlq_n_u32): Remove.
8049 (__arm_vqrshlq_s32): Remove.
8050 (__arm_vqrshlq_n_s32): Remove.
8051 (__arm_vqrshlq_m_n_u8): Remove.
8052 (__arm_vqrshlq_m_n_s8): Remove.
8053 (__arm_vqrshlq_m_n_u16): Remove.
8054 (__arm_vqrshlq_m_n_s16): Remove.
8055 (__arm_vqrshlq_m_n_u32): Remove.
8056 (__arm_vqrshlq_m_n_s32): Remove.
8057 (__arm_vqrshlq_m_s8): Remove.
8058 (__arm_vqrshlq_m_s32): Remove.
8059 (__arm_vqrshlq_m_s16): Remove.
8060 (__arm_vqrshlq_m_u8): Remove.
8061 (__arm_vqrshlq_m_u32): Remove.
8062 (__arm_vqrshlq_m_u16): Remove.
8063 (__arm_vqrshlq): Remove.
8064 (__arm_vqrshlq_m_n): Remove.
8065 (__arm_vqrshlq_m): Remove.
8067 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8069 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
8070 (mve_insn): Add vqrshl, vrshl.
8071 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
8072 (mve_vrshlq_n_<supf><mode>): Merge into ...
8073 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8074 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
8076 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8078 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8080 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
8081 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
8083 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8086 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
8087 denegrate PHI optmization.
8089 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
8091 * config/i386/predicates.md (register_no_SP_operand):
8092 Rename from index_register_operand.
8093 (call_register_operand): Update for rename.
8094 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
8096 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8099 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
8100 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
8101 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
8102 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
8103 (s-match): Split into s-generic-match and s-gimple-match.
8104 * configure.ac (with-matchpd-partitions,
8105 DEFAULT_MATCHPD_PARTITIONS): New.
8106 * configure: Regenerate.
8108 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8111 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
8112 (decision_tree::gen): Accept list of files instead of single and update
8113 to write function definition to header and main file.
8114 (write_predicate): Likewise.
8115 (write_header): Emit pragmas and new includes.
8116 (main): Create file buffers and cleanup.
8117 (showUsage, write_header_includes): New.
8119 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8122 * Makefile.in (OBJS): Add gimple-match-exports.o.
8123 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
8124 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
8125 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
8126 gimple_resimplify5, constant_for_folding, convert_conditional_op,
8127 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
8128 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
8129 do_valueize, try_conditional_simplification, gimple_extract,
8130 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
8131 commutative_ternary_op_p, first_commutative_argument,
8132 associative_binary_op_p, directly_supported_p,
8133 get_conditional_internal_fn): Moved to gimple-match-exports.cc
8134 * gimple-match-exports.cc: New file.
8136 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8139 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
8141 (dt_simplify::gen_1): Use it.
8143 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8146 * genmatch.cc (output_line_directive): Only emit commented directive
8149 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8152 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
8154 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
8156 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
8157 unused in_mode/in_n variables.
8159 2023-05-05 Richard Biener <rguenther@suse.de>
8161 PR tree-optimization/109735
8162 * tree-vect-stmts.cc (vectorizable_operation): Perform
8163 conversion for POINTER_DIFF_EXPR unconditionally.
8165 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
8167 * config/i386/mmx.md (mulv2si3): New expander.
8168 (*mulv2si3): New insn pattern.
8170 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
8171 Thomas Schwinge <thomas@codesourcery.com>
8174 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
8175 alongside reverse-offload function table to prevent NULL values
8176 of the function addresses.
8178 2023-05-05 Jakub Jelinek <jakub@redhat.com>
8180 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
8182 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
8184 2023-05-05 Andrew Pinski <apinski@marvell.com>
8186 PR tree-optimization/109732
8187 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
8188 of the argtrue/argfalse.
8190 2023-05-05 Andrew Pinski <apinski@marvell.com>
8192 PR tree-optimization/109722
8193 * match.pd: Extend the `ABS<a> == 0` pattern
8194 to cover `ABSU<a> == 0` too.
8196 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
8199 * config/i386/predicates.md (index_reg_operand): New predicate.
8200 * config/i386/i386.md (ashift to lea spliter): Use
8201 general_reg_operand and index_reg_operand predicates.
8203 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8205 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
8206 Rename and reimplement with RTL codes to...
8207 (aarch64_<optab>hn2<mode>_insn_le): .. This.
8208 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
8209 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
8211 (aarch64_<optab>hn2<mode>_insn_be): ... This.
8212 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
8213 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
8214 (aarch64_<optab>hn2<mode>): ... This.
8215 (aarch64_r<optab>hn2<mode>): New expander.
8216 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
8217 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
8219 (sur): Remove handling of the above.
8222 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8224 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
8226 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
8227 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
8228 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
8229 (aarch64_<sur><addsub>hn<mode>): Delete.
8230 (aarch64_<optab>hn<mode>): New define_expand.
8231 (aarch64_r<optab>hn<mode>): Likewise.
8232 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
8235 2023-05-04 Andrew Pinski <apinski@marvell.com>
8237 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
8238 diamond form bb with forwarder only empty blocks better.
8240 2023-05-04 Andrew Pinski <apinski@marvell.com>
8242 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
8243 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
8244 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
8245 of an inline version of it.
8246 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
8247 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
8249 2023-05-04 Andrew Pinski <apinski@marvell.com>
8251 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
8252 the default argument value for dce_ssa_names to nullptr.
8253 Check to make sure dce_ssa_names is a non-nullptr before
8254 calling simple_dce_from_worklist.
8256 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
8258 * config/i386/predicates.md (index_register_operand): Reject
8259 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
8260 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
8261 (call_register_no_elim_operand): Rewrite as ...
8262 (call_register_operand): ... this.
8263 (call_insn_operand): Use call_register_operand predicate.
8265 2023-05-04 Richard Biener <rguenther@suse.de>
8267 PR tree-optimization/109721
8268 * tree-vect-stmts.cc (vectorizable_operation): Make sure
8269 to test word_mode for all !target_support_p operations.
8271 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8274 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
8275 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
8276 (aarch64_mla<mode>): Rename to...
8277 (aarch64_mla<mode><vczle><vczbe>): ... This.
8278 (*aarch64_mla_elt<mode>): Rename to...
8279 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
8280 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
8281 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8282 (aarch64_mla_n<mode>): Rename to...
8283 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
8284 (aarch64_mls<mode>): Rename to...
8285 (aarch64_mls<mode><vczle><vczbe>): ... This.
8286 (*aarch64_mls_elt<mode>): Rename to...
8287 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
8288 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
8289 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8290 (aarch64_mls_n<mode>): Rename to...
8291 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
8292 (fma<mode>4): Rename to...
8293 (fma<mode>4<vczle><vczbe>): ... This.
8294 (*aarch64_fma4_elt<mode>): Rename to...
8295 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
8296 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
8297 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8298 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
8299 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
8300 (fnma<mode>4): Rename to...
8301 (fnma<mode>4<vczle><vczbe>): ... This.
8302 (*aarch64_fnma4_elt<mode>): Rename to...
8303 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
8304 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
8305 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8306 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
8307 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
8308 (aarch64_simd_bsl<mode>_internal): Rename to...
8309 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
8310 (*aarch64_simd_bsl<mode>_alt): Rename to...
8311 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
8313 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8316 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
8317 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
8318 (fabd<mode>3): Rename to...
8319 (fabd<mode>3<vczle><vczbe>): ... This.
8320 (aarch64_<optab>p<mode>): Rename to...
8321 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
8322 (aarch64_faddp<mode>): Rename to...
8323 (aarch64_faddp<mode><vczle><vczbe>): ... This.
8325 2023-05-04 Martin Liska <mliska@suse.cz>
8327 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
8328 (print_version): Use it.
8329 (generate_results): Likewise.
8331 2023-05-04 Richard Biener <rguenther@suse.de>
8333 * tree-cfg.h (last_stmt): Rename to ...
8334 (last_nondebug_stmt): ... this.
8335 * tree-cfg.cc (last_stmt): Rename to ...
8336 (last_nondebug_stmt): ... this.
8337 (assign_discriminators): Adjust.
8338 (group_case_labels_stmt): Likewise.
8339 (gimple_can_duplicate_bb_p): Likewise.
8340 (execute_fixup_cfg): Likewise.
8341 * auto-profile.cc (afdo_propagate_circuit): Likewise.
8342 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
8343 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
8344 (determine_parallel_type): Likewise.
8345 (adjust_context_and_scope): Likewise.
8346 (expand_task_call): Likewise.
8347 (remove_exit_barrier): Likewise.
8348 (expand_omp_taskreg): Likewise.
8349 (expand_omp_for_init_counts): Likewise.
8350 (expand_omp_for_init_vars): Likewise.
8351 (expand_omp_for_static_chunk): Likewise.
8352 (expand_omp_simd): Likewise.
8353 (expand_oacc_for): Likewise.
8354 (expand_omp_for): Likewise.
8355 (expand_omp_sections): Likewise.
8356 (expand_omp_atomic_fetch_op): Likewise.
8357 (expand_omp_atomic_cas): Likewise.
8358 (expand_omp_atomic): Likewise.
8359 (expand_omp_target): Likewise.
8360 (expand_omp): Likewise.
8361 (omp_make_gimple_edges): Likewise.
8362 * trans-mem.cc (tm_region_init): Likewise.
8363 * tree-inline.cc (redirect_all_calls): Likewise.
8364 * tree-parloops.cc (gen_parallel_loop): Likewise.
8365 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
8366 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
8368 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
8369 (may_eliminate_iv): Likewise.
8370 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
8371 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
8373 (estimate_numbers_of_iterations): Likewise.
8374 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
8375 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
8376 (set_predicates_for_bb): Likewise.
8377 (init_loop_unswitch_info): Likewise.
8378 (hoist_guard): Likewise.
8379 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
8380 (minmax_replacement): Likewise.
8381 * tree-ssa-reassoc.cc (update_range_test): Likewise.
8382 (optimize_range_tests_to_bit_test): Likewise.
8383 (optimize_range_tests_var_bound): Likewise.
8384 (optimize_range_tests): Likewise.
8385 (no_side_effect_bb): Likewise.
8386 (suitable_cond_bb): Likewise.
8387 (maybe_optimize_range_tests): Likewise.
8388 (reassociate_bb): Likewise.
8389 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
8391 2023-05-04 Jakub Jelinek <jakub@redhat.com>
8394 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
8395 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
8396 for it only if it still has TImode. Don't decide whether to call
8397 fix_debug_reg_uses based on whether SRC is ever set or not.
8399 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8401 * config/cris/cris.cc (cris_split_constant): New function.
8402 * config/cris/cris.md (splitop): New iterator.
8403 (opsplit1): New define_peephole2.
8404 * config/cris/cris-protos.h (cris_split_constant): Declare.
8405 (cris_splittable_constant_p): New macro.
8407 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8409 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
8412 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8414 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
8415 lra_in_progress, not reload_in_progress.
8416 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
8417 * config/cris/constraints.md ("Q"): Ditto.
8419 2023-05-03 Andrew Pinski <apinski@marvell.com>
8421 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
8422 stats on removed number of statements and phis.
8424 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
8426 PR tree-optimization/109711
8427 * value-range.cc (irange::verify_range): Allow types of
8430 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
8433 * calls.cc (can_implement_as_sibling_call_p): Reject calls
8434 to __sanitizer_cov_trace_pc.
8436 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
8439 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
8440 a new ABI break parameter for GCC 14. Set it to the alignment
8441 of enums that have an underlying type. Take the true alignment
8442 of such enums from the TYPE_ALIGN of the underlying type's
8444 (aarch64_function_arg_boundary): Update accordingly.
8445 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
8446 Warn about ABI differences.
8448 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
8451 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
8452 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
8453 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
8454 (aarch64_gimplify_va_arg_expr): Likewise.
8456 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8458 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
8459 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
8460 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
8462 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
8463 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
8464 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
8465 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
8466 * config/arm/arm_mve.h (vhsubq): Remove.
8472 (vhsubq_u8): Remove.
8473 (vhsubq_n_u8): Remove.
8474 (vhaddq_u8): Remove.
8475 (vhaddq_n_u8): Remove.
8476 (vhsubq_s8): Remove.
8477 (vhsubq_n_s8): Remove.
8478 (vhaddq_s8): Remove.
8479 (vhaddq_n_s8): Remove.
8480 (vhsubq_u16): Remove.
8481 (vhsubq_n_u16): Remove.
8482 (vhaddq_u16): Remove.
8483 (vhaddq_n_u16): Remove.
8484 (vhsubq_s16): Remove.
8485 (vhsubq_n_s16): Remove.
8486 (vhaddq_s16): Remove.
8487 (vhaddq_n_s16): Remove.
8488 (vhsubq_u32): Remove.
8489 (vhsubq_n_u32): Remove.
8490 (vhaddq_u32): Remove.
8491 (vhaddq_n_u32): Remove.
8492 (vhsubq_s32): Remove.
8493 (vhsubq_n_s32): Remove.
8494 (vhaddq_s32): Remove.
8495 (vhaddq_n_s32): Remove.
8496 (vhaddq_m_n_s8): Remove.
8497 (vhaddq_m_n_s32): Remove.
8498 (vhaddq_m_n_s16): Remove.
8499 (vhaddq_m_n_u8): Remove.
8500 (vhaddq_m_n_u32): Remove.
8501 (vhaddq_m_n_u16): Remove.
8502 (vhaddq_m_s8): Remove.
8503 (vhaddq_m_s32): Remove.
8504 (vhaddq_m_s16): Remove.
8505 (vhaddq_m_u8): Remove.
8506 (vhaddq_m_u32): Remove.
8507 (vhaddq_m_u16): Remove.
8508 (vhsubq_m_n_s8): Remove.
8509 (vhsubq_m_n_s32): Remove.
8510 (vhsubq_m_n_s16): Remove.
8511 (vhsubq_m_n_u8): Remove.
8512 (vhsubq_m_n_u32): Remove.
8513 (vhsubq_m_n_u16): Remove.
8514 (vhsubq_m_s8): Remove.
8515 (vhsubq_m_s32): Remove.
8516 (vhsubq_m_s16): Remove.
8517 (vhsubq_m_u8): Remove.
8518 (vhsubq_m_u32): Remove.
8519 (vhsubq_m_u16): Remove.
8520 (vhaddq_x_n_s8): Remove.
8521 (vhaddq_x_n_s16): Remove.
8522 (vhaddq_x_n_s32): Remove.
8523 (vhaddq_x_n_u8): Remove.
8524 (vhaddq_x_n_u16): Remove.
8525 (vhaddq_x_n_u32): Remove.
8526 (vhaddq_x_s8): Remove.
8527 (vhaddq_x_s16): Remove.
8528 (vhaddq_x_s32): Remove.
8529 (vhaddq_x_u8): Remove.
8530 (vhaddq_x_u16): Remove.
8531 (vhaddq_x_u32): Remove.
8532 (vhsubq_x_n_s8): Remove.
8533 (vhsubq_x_n_s16): Remove.
8534 (vhsubq_x_n_s32): Remove.
8535 (vhsubq_x_n_u8): Remove.
8536 (vhsubq_x_n_u16): Remove.
8537 (vhsubq_x_n_u32): Remove.
8538 (vhsubq_x_s8): Remove.
8539 (vhsubq_x_s16): Remove.
8540 (vhsubq_x_s32): Remove.
8541 (vhsubq_x_u8): Remove.
8542 (vhsubq_x_u16): Remove.
8543 (vhsubq_x_u32): Remove.
8544 (__arm_vhsubq_u8): Remove.
8545 (__arm_vhsubq_n_u8): Remove.
8546 (__arm_vhaddq_u8): Remove.
8547 (__arm_vhaddq_n_u8): Remove.
8548 (__arm_vhsubq_s8): Remove.
8549 (__arm_vhsubq_n_s8): Remove.
8550 (__arm_vhaddq_s8): Remove.
8551 (__arm_vhaddq_n_s8): Remove.
8552 (__arm_vhsubq_u16): Remove.
8553 (__arm_vhsubq_n_u16): Remove.
8554 (__arm_vhaddq_u16): Remove.
8555 (__arm_vhaddq_n_u16): Remove.
8556 (__arm_vhsubq_s16): Remove.
8557 (__arm_vhsubq_n_s16): Remove.
8558 (__arm_vhaddq_s16): Remove.
8559 (__arm_vhaddq_n_s16): Remove.
8560 (__arm_vhsubq_u32): Remove.
8561 (__arm_vhsubq_n_u32): Remove.
8562 (__arm_vhaddq_u32): Remove.
8563 (__arm_vhaddq_n_u32): Remove.
8564 (__arm_vhsubq_s32): Remove.
8565 (__arm_vhsubq_n_s32): Remove.
8566 (__arm_vhaddq_s32): Remove.
8567 (__arm_vhaddq_n_s32): Remove.
8568 (__arm_vhaddq_m_n_s8): Remove.
8569 (__arm_vhaddq_m_n_s32): Remove.
8570 (__arm_vhaddq_m_n_s16): Remove.
8571 (__arm_vhaddq_m_n_u8): Remove.
8572 (__arm_vhaddq_m_n_u32): Remove.
8573 (__arm_vhaddq_m_n_u16): Remove.
8574 (__arm_vhaddq_m_s8): Remove.
8575 (__arm_vhaddq_m_s32): Remove.
8576 (__arm_vhaddq_m_s16): Remove.
8577 (__arm_vhaddq_m_u8): Remove.
8578 (__arm_vhaddq_m_u32): Remove.
8579 (__arm_vhaddq_m_u16): Remove.
8580 (__arm_vhsubq_m_n_s8): Remove.
8581 (__arm_vhsubq_m_n_s32): Remove.
8582 (__arm_vhsubq_m_n_s16): Remove.
8583 (__arm_vhsubq_m_n_u8): Remove.
8584 (__arm_vhsubq_m_n_u32): Remove.
8585 (__arm_vhsubq_m_n_u16): Remove.
8586 (__arm_vhsubq_m_s8): Remove.
8587 (__arm_vhsubq_m_s32): Remove.
8588 (__arm_vhsubq_m_s16): Remove.
8589 (__arm_vhsubq_m_u8): Remove.
8590 (__arm_vhsubq_m_u32): Remove.
8591 (__arm_vhsubq_m_u16): Remove.
8592 (__arm_vhaddq_x_n_s8): Remove.
8593 (__arm_vhaddq_x_n_s16): Remove.
8594 (__arm_vhaddq_x_n_s32): Remove.
8595 (__arm_vhaddq_x_n_u8): Remove.
8596 (__arm_vhaddq_x_n_u16): Remove.
8597 (__arm_vhaddq_x_n_u32): Remove.
8598 (__arm_vhaddq_x_s8): Remove.
8599 (__arm_vhaddq_x_s16): Remove.
8600 (__arm_vhaddq_x_s32): Remove.
8601 (__arm_vhaddq_x_u8): Remove.
8602 (__arm_vhaddq_x_u16): Remove.
8603 (__arm_vhaddq_x_u32): Remove.
8604 (__arm_vhsubq_x_n_s8): Remove.
8605 (__arm_vhsubq_x_n_s16): Remove.
8606 (__arm_vhsubq_x_n_s32): Remove.
8607 (__arm_vhsubq_x_n_u8): Remove.
8608 (__arm_vhsubq_x_n_u16): Remove.
8609 (__arm_vhsubq_x_n_u32): Remove.
8610 (__arm_vhsubq_x_s8): Remove.
8611 (__arm_vhsubq_x_s16): Remove.
8612 (__arm_vhsubq_x_s32): Remove.
8613 (__arm_vhsubq_x_u8): Remove.
8614 (__arm_vhsubq_x_u16): Remove.
8615 (__arm_vhsubq_x_u32): Remove.
8616 (__arm_vhsubq): Remove.
8617 (__arm_vhaddq): Remove.
8618 (__arm_vhaddq_m): Remove.
8619 (__arm_vhsubq_m): Remove.
8620 (__arm_vhaddq_x): Remove.
8621 (__arm_vhsubq_x): Remove.
8625 (vmulhq_u8): Remove.
8626 (vmulhq_s8): Remove.
8627 (vmulhq_u16): Remove.
8628 (vmulhq_s16): Remove.
8629 (vmulhq_u32): Remove.
8630 (vmulhq_s32): Remove.
8631 (vmulhq_m_s8): Remove.
8632 (vmulhq_m_s32): Remove.
8633 (vmulhq_m_s16): Remove.
8634 (vmulhq_m_u8): Remove.
8635 (vmulhq_m_u32): Remove.
8636 (vmulhq_m_u16): Remove.
8637 (vmulhq_x_s8): Remove.
8638 (vmulhq_x_s16): Remove.
8639 (vmulhq_x_s32): Remove.
8640 (vmulhq_x_u8): Remove.
8641 (vmulhq_x_u16): Remove.
8642 (vmulhq_x_u32): Remove.
8643 (__arm_vmulhq_u8): Remove.
8644 (__arm_vmulhq_s8): Remove.
8645 (__arm_vmulhq_u16): Remove.
8646 (__arm_vmulhq_s16): Remove.
8647 (__arm_vmulhq_u32): Remove.
8648 (__arm_vmulhq_s32): Remove.
8649 (__arm_vmulhq_m_s8): Remove.
8650 (__arm_vmulhq_m_s32): Remove.
8651 (__arm_vmulhq_m_s16): Remove.
8652 (__arm_vmulhq_m_u8): Remove.
8653 (__arm_vmulhq_m_u32): Remove.
8654 (__arm_vmulhq_m_u16): Remove.
8655 (__arm_vmulhq_x_s8): Remove.
8656 (__arm_vmulhq_x_s16): Remove.
8657 (__arm_vmulhq_x_s32): Remove.
8658 (__arm_vmulhq_x_u8): Remove.
8659 (__arm_vmulhq_x_u16): Remove.
8660 (__arm_vmulhq_x_u32): Remove.
8661 (__arm_vmulhq): Remove.
8662 (__arm_vmulhq_m): Remove.
8663 (__arm_vmulhq_x): Remove.
8668 (vqsubq_u8): Remove.
8669 (vqsubq_n_u8): Remove.
8670 (vqaddq_u8): Remove.
8671 (vqaddq_n_u8): Remove.
8672 (vqsubq_s8): Remove.
8673 (vqsubq_n_s8): Remove.
8674 (vqaddq_s8): Remove.
8675 (vqaddq_n_s8): Remove.
8676 (vqsubq_u16): Remove.
8677 (vqsubq_n_u16): Remove.
8678 (vqaddq_u16): Remove.
8679 (vqaddq_n_u16): Remove.
8680 (vqsubq_s16): Remove.
8681 (vqsubq_n_s16): Remove.
8682 (vqaddq_s16): Remove.
8683 (vqaddq_n_s16): Remove.
8684 (vqsubq_u32): Remove.
8685 (vqsubq_n_u32): Remove.
8686 (vqaddq_u32): Remove.
8687 (vqaddq_n_u32): Remove.
8688 (vqsubq_s32): Remove.
8689 (vqsubq_n_s32): Remove.
8690 (vqaddq_s32): Remove.
8691 (vqaddq_n_s32): Remove.
8692 (vqaddq_m_n_s8): Remove.
8693 (vqaddq_m_n_s32): Remove.
8694 (vqaddq_m_n_s16): Remove.
8695 (vqaddq_m_n_u8): Remove.
8696 (vqaddq_m_n_u32): Remove.
8697 (vqaddq_m_n_u16): Remove.
8698 (vqaddq_m_s8): Remove.
8699 (vqaddq_m_s32): Remove.
8700 (vqaddq_m_s16): Remove.
8701 (vqaddq_m_u8): Remove.
8702 (vqaddq_m_u32): Remove.
8703 (vqaddq_m_u16): Remove.
8704 (vqsubq_m_n_s8): Remove.
8705 (vqsubq_m_n_s32): Remove.
8706 (vqsubq_m_n_s16): Remove.
8707 (vqsubq_m_n_u8): Remove.
8708 (vqsubq_m_n_u32): Remove.
8709 (vqsubq_m_n_u16): Remove.
8710 (vqsubq_m_s8): Remove.
8711 (vqsubq_m_s32): Remove.
8712 (vqsubq_m_s16): Remove.
8713 (vqsubq_m_u8): Remove.
8714 (vqsubq_m_u32): Remove.
8715 (vqsubq_m_u16): Remove.
8716 (__arm_vqsubq_u8): Remove.
8717 (__arm_vqsubq_n_u8): Remove.
8718 (__arm_vqaddq_u8): Remove.
8719 (__arm_vqaddq_n_u8): Remove.
8720 (__arm_vqsubq_s8): Remove.
8721 (__arm_vqsubq_n_s8): Remove.
8722 (__arm_vqaddq_s8): Remove.
8723 (__arm_vqaddq_n_s8): Remove.
8724 (__arm_vqsubq_u16): Remove.
8725 (__arm_vqsubq_n_u16): Remove.
8726 (__arm_vqaddq_u16): Remove.
8727 (__arm_vqaddq_n_u16): Remove.
8728 (__arm_vqsubq_s16): Remove.
8729 (__arm_vqsubq_n_s16): Remove.
8730 (__arm_vqaddq_s16): Remove.
8731 (__arm_vqaddq_n_s16): Remove.
8732 (__arm_vqsubq_u32): Remove.
8733 (__arm_vqsubq_n_u32): Remove.
8734 (__arm_vqaddq_u32): Remove.
8735 (__arm_vqaddq_n_u32): Remove.
8736 (__arm_vqsubq_s32): Remove.
8737 (__arm_vqsubq_n_s32): Remove.
8738 (__arm_vqaddq_s32): Remove.
8739 (__arm_vqaddq_n_s32): Remove.
8740 (__arm_vqaddq_m_n_s8): Remove.
8741 (__arm_vqaddq_m_n_s32): Remove.
8742 (__arm_vqaddq_m_n_s16): Remove.
8743 (__arm_vqaddq_m_n_u8): Remove.
8744 (__arm_vqaddq_m_n_u32): Remove.
8745 (__arm_vqaddq_m_n_u16): Remove.
8746 (__arm_vqaddq_m_s8): Remove.
8747 (__arm_vqaddq_m_s32): Remove.
8748 (__arm_vqaddq_m_s16): Remove.
8749 (__arm_vqaddq_m_u8): Remove.
8750 (__arm_vqaddq_m_u32): Remove.
8751 (__arm_vqaddq_m_u16): Remove.
8752 (__arm_vqsubq_m_n_s8): Remove.
8753 (__arm_vqsubq_m_n_s32): Remove.
8754 (__arm_vqsubq_m_n_s16): Remove.
8755 (__arm_vqsubq_m_n_u8): Remove.
8756 (__arm_vqsubq_m_n_u32): Remove.
8757 (__arm_vqsubq_m_n_u16): Remove.
8758 (__arm_vqsubq_m_s8): Remove.
8759 (__arm_vqsubq_m_s32): Remove.
8760 (__arm_vqsubq_m_s16): Remove.
8761 (__arm_vqsubq_m_u8): Remove.
8762 (__arm_vqsubq_m_u32): Remove.
8763 (__arm_vqsubq_m_u16): Remove.
8764 (__arm_vqsubq): Remove.
8765 (__arm_vqaddq): Remove.
8766 (__arm_vqaddq_m): Remove.
8767 (__arm_vqsubq_m): Remove.
8769 (vqdmulhq_m): Remove.
8770 (vqdmulhq_s8): Remove.
8771 (vqdmulhq_n_s8): Remove.
8772 (vqdmulhq_s16): Remove.
8773 (vqdmulhq_n_s16): Remove.
8774 (vqdmulhq_s32): Remove.
8775 (vqdmulhq_n_s32): Remove.
8776 (vqdmulhq_m_n_s8): Remove.
8777 (vqdmulhq_m_n_s32): Remove.
8778 (vqdmulhq_m_n_s16): Remove.
8779 (vqdmulhq_m_s8): Remove.
8780 (vqdmulhq_m_s32): Remove.
8781 (vqdmulhq_m_s16): Remove.
8782 (__arm_vqdmulhq_s8): Remove.
8783 (__arm_vqdmulhq_n_s8): Remove.
8784 (__arm_vqdmulhq_s16): Remove.
8785 (__arm_vqdmulhq_n_s16): Remove.
8786 (__arm_vqdmulhq_s32): Remove.
8787 (__arm_vqdmulhq_n_s32): Remove.
8788 (__arm_vqdmulhq_m_n_s8): Remove.
8789 (__arm_vqdmulhq_m_n_s32): Remove.
8790 (__arm_vqdmulhq_m_n_s16): Remove.
8791 (__arm_vqdmulhq_m_s8): Remove.
8792 (__arm_vqdmulhq_m_s32): Remove.
8793 (__arm_vqdmulhq_m_s16): Remove.
8794 (__arm_vqdmulhq): Remove.
8795 (__arm_vqdmulhq_m): Remove.
8797 (vrhaddq_m): Remove.
8798 (vrhaddq_x): Remove.
8799 (vrhaddq_u8): Remove.
8800 (vrhaddq_s8): Remove.
8801 (vrhaddq_u16): Remove.
8802 (vrhaddq_s16): Remove.
8803 (vrhaddq_u32): Remove.
8804 (vrhaddq_s32): Remove.
8805 (vrhaddq_m_s8): Remove.
8806 (vrhaddq_m_s32): Remove.
8807 (vrhaddq_m_s16): Remove.
8808 (vrhaddq_m_u8): Remove.
8809 (vrhaddq_m_u32): Remove.
8810 (vrhaddq_m_u16): Remove.
8811 (vrhaddq_x_s8): Remove.
8812 (vrhaddq_x_s16): Remove.
8813 (vrhaddq_x_s32): Remove.
8814 (vrhaddq_x_u8): Remove.
8815 (vrhaddq_x_u16): Remove.
8816 (vrhaddq_x_u32): Remove.
8817 (__arm_vrhaddq_u8): Remove.
8818 (__arm_vrhaddq_s8): Remove.
8819 (__arm_vrhaddq_u16): Remove.
8820 (__arm_vrhaddq_s16): Remove.
8821 (__arm_vrhaddq_u32): Remove.
8822 (__arm_vrhaddq_s32): Remove.
8823 (__arm_vrhaddq_m_s8): Remove.
8824 (__arm_vrhaddq_m_s32): Remove.
8825 (__arm_vrhaddq_m_s16): Remove.
8826 (__arm_vrhaddq_m_u8): Remove.
8827 (__arm_vrhaddq_m_u32): Remove.
8828 (__arm_vrhaddq_m_u16): Remove.
8829 (__arm_vrhaddq_x_s8): Remove.
8830 (__arm_vrhaddq_x_s16): Remove.
8831 (__arm_vrhaddq_x_s32): Remove.
8832 (__arm_vrhaddq_x_u8): Remove.
8833 (__arm_vrhaddq_x_u16): Remove.
8834 (__arm_vrhaddq_x_u32): Remove.
8835 (__arm_vrhaddq): Remove.
8836 (__arm_vrhaddq_m): Remove.
8837 (__arm_vrhaddq_x): Remove.
8839 (vrmulhq_m): Remove.
8840 (vrmulhq_x): Remove.
8841 (vrmulhq_u8): Remove.
8842 (vrmulhq_s8): Remove.
8843 (vrmulhq_u16): Remove.
8844 (vrmulhq_s16): Remove.
8845 (vrmulhq_u32): Remove.
8846 (vrmulhq_s32): Remove.
8847 (vrmulhq_m_s8): Remove.
8848 (vrmulhq_m_s32): Remove.
8849 (vrmulhq_m_s16): Remove.
8850 (vrmulhq_m_u8): Remove.
8851 (vrmulhq_m_u32): Remove.
8852 (vrmulhq_m_u16): Remove.
8853 (vrmulhq_x_s8): Remove.
8854 (vrmulhq_x_s16): Remove.
8855 (vrmulhq_x_s32): Remove.
8856 (vrmulhq_x_u8): Remove.
8857 (vrmulhq_x_u16): Remove.
8858 (vrmulhq_x_u32): Remove.
8859 (__arm_vrmulhq_u8): Remove.
8860 (__arm_vrmulhq_s8): Remove.
8861 (__arm_vrmulhq_u16): Remove.
8862 (__arm_vrmulhq_s16): Remove.
8863 (__arm_vrmulhq_u32): Remove.
8864 (__arm_vrmulhq_s32): Remove.
8865 (__arm_vrmulhq_m_s8): Remove.
8866 (__arm_vrmulhq_m_s32): Remove.
8867 (__arm_vrmulhq_m_s16): Remove.
8868 (__arm_vrmulhq_m_u8): Remove.
8869 (__arm_vrmulhq_m_u32): Remove.
8870 (__arm_vrmulhq_m_u16): Remove.
8871 (__arm_vrmulhq_x_s8): Remove.
8872 (__arm_vrmulhq_x_s16): Remove.
8873 (__arm_vrmulhq_x_s32): Remove.
8874 (__arm_vrmulhq_x_u8): Remove.
8875 (__arm_vrmulhq_x_u16): Remove.
8876 (__arm_vrmulhq_x_u32): Remove.
8877 (__arm_vrmulhq): Remove.
8878 (__arm_vrmulhq_m): Remove.
8879 (__arm_vrmulhq_x): Remove.
8881 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8883 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
8884 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
8885 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
8886 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
8887 * config/arm/mve.md (mve_vabdq_<supf><mode>)
8888 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
8889 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
8890 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
8891 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
8892 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
8893 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
8895 (@mve_<mve_insn>q_<supf><mode>): ... this.
8896 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
8897 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
8898 gen_mve_vhaddq / gen_mve_vrhaddq.
8900 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8902 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
8903 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
8904 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
8905 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
8906 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
8907 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
8908 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
8909 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
8910 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
8911 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
8912 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
8913 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
8914 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8916 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8918 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
8919 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
8921 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
8922 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
8923 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
8924 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
8925 (mve_vqsubq_n_<supf><mode>): Merge into ...
8926 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8928 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8930 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
8931 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
8932 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
8933 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
8934 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
8935 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
8936 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
8937 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
8938 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
8939 (mve_vshlq_m_<supf><mode>): Merged into
8940 @mve_<mve_insn>q_m_<supf><mode>.
8941 (mve_vabdq_m_<supf><mode>): Likewise.
8942 (mve_vhaddq_m_<supf><mode>): Likewise.
8943 (mve_vhsubq_m_<supf><mode>): Likewise.
8944 (mve_vmaxq_m_<supf><mode>): Likewise.
8945 (mve_vminq_m_<supf><mode>): Likewise.
8946 (mve_vmulhq_m_<supf><mode>): Likewise.
8947 (mve_vqaddq_m_<supf><mode>): Likewise.
8948 (mve_vqrshlq_m_<supf><mode>): Likewise.
8949 (mve_vqshlq_m_<supf><mode>): Likewise.
8950 (mve_vqsubq_m_<supf><mode>): Likewise.
8951 (mve_vrhaddq_m_<supf><mode>): Likewise.
8952 (mve_vrmulhq_m_<supf><mode>): Likewise.
8953 (mve_vrshlq_m_<supf><mode>): Likewise.
8954 (mve_vqdmladhq_m_s<mode>): Likewise.
8955 (mve_vqdmladhxq_m_s<mode>): Likewise.
8956 (mve_vqdmlsdhq_m_s<mode>): Likewise.
8957 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
8958 (mve_vqdmulhq_m_s<mode>): Likewise.
8959 (mve_vqrdmladhq_m_s<mode>): Likewise.
8960 (mve_vqrdmladhxq_m_s<mode>): Likewise.
8961 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
8962 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
8963 (mve_vqrdmulhq_m_s<mode>): Likewise.
8965 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8967 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
8968 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
8969 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
8970 * config/arm/arm_mve.h (vcreateq_f16): Remove.
8971 (vcreateq_f32): Remove.
8972 (vcreateq_u8): Remove.
8973 (vcreateq_u16): Remove.
8974 (vcreateq_u32): Remove.
8975 (vcreateq_u64): Remove.
8976 (vcreateq_s8): Remove.
8977 (vcreateq_s16): Remove.
8978 (vcreateq_s32): Remove.
8979 (vcreateq_s64): Remove.
8980 (__arm_vcreateq_u8): Remove.
8981 (__arm_vcreateq_u16): Remove.
8982 (__arm_vcreateq_u32): Remove.
8983 (__arm_vcreateq_u64): Remove.
8984 (__arm_vcreateq_s8): Remove.
8985 (__arm_vcreateq_s16): Remove.
8986 (__arm_vcreateq_s32): Remove.
8987 (__arm_vcreateq_s64): Remove.
8988 (__arm_vcreateq_f16): Remove.
8989 (__arm_vcreateq_f32): Remove.
8991 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8993 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
8994 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
8995 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
8996 (@mve_<mve_insn>q_f<mode>): ... this.
8997 (mve_vcreateq_<supf><mode>): Rename into ...
8998 (@mve_<mve_insn>q_<supf><mode>): ... this.
9000 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9002 * config/arm/arm-mve-builtins-shapes.cc (create): New.
9003 * config/arm/arm-mve-builtins-shapes.h: (create): New.
9005 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9007 * config/arm/arm-mve-builtins-functions.h (class
9008 unspec_mve_function_exact_insn): New.
9010 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9012 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
9014 * config/arm/arm-mve-builtins-base.def (vorrq): New.
9015 * config/arm/arm-mve-builtins-base.h (vorrq): New.
9016 * config/arm/arm-mve-builtins.cc
9017 (function_instance::has_inactive_argument): Handle vorrq.
9018 * config/arm/arm_mve.h (vorrq): Remove.
9019 (vorrq_m_n): Remove.
9024 (vorrq_u16): Remove.
9025 (vorrq_s16): Remove.
9026 (vorrq_u32): Remove.
9027 (vorrq_s32): Remove.
9028 (vorrq_n_u16): Remove.
9029 (vorrq_f16): Remove.
9030 (vorrq_n_s16): Remove.
9031 (vorrq_n_u32): Remove.
9032 (vorrq_f32): Remove.
9033 (vorrq_n_s32): Remove.
9034 (vorrq_m_n_s16): Remove.
9035 (vorrq_m_n_u16): Remove.
9036 (vorrq_m_n_s32): Remove.
9037 (vorrq_m_n_u32): Remove.
9038 (vorrq_m_s8): Remove.
9039 (vorrq_m_s32): Remove.
9040 (vorrq_m_s16): Remove.
9041 (vorrq_m_u8): Remove.
9042 (vorrq_m_u32): Remove.
9043 (vorrq_m_u16): Remove.
9044 (vorrq_m_f32): Remove.
9045 (vorrq_m_f16): Remove.
9046 (vorrq_x_s8): Remove.
9047 (vorrq_x_s16): Remove.
9048 (vorrq_x_s32): Remove.
9049 (vorrq_x_u8): Remove.
9050 (vorrq_x_u16): Remove.
9051 (vorrq_x_u32): Remove.
9052 (vorrq_x_f16): Remove.
9053 (vorrq_x_f32): Remove.
9054 (__arm_vorrq_u8): Remove.
9055 (__arm_vorrq_s8): Remove.
9056 (__arm_vorrq_u16): Remove.
9057 (__arm_vorrq_s16): Remove.
9058 (__arm_vorrq_u32): Remove.
9059 (__arm_vorrq_s32): Remove.
9060 (__arm_vorrq_n_u16): Remove.
9061 (__arm_vorrq_n_s16): Remove.
9062 (__arm_vorrq_n_u32): Remove.
9063 (__arm_vorrq_n_s32): Remove.
9064 (__arm_vorrq_m_n_s16): Remove.
9065 (__arm_vorrq_m_n_u16): Remove.
9066 (__arm_vorrq_m_n_s32): Remove.
9067 (__arm_vorrq_m_n_u32): Remove.
9068 (__arm_vorrq_m_s8): Remove.
9069 (__arm_vorrq_m_s32): Remove.
9070 (__arm_vorrq_m_s16): Remove.
9071 (__arm_vorrq_m_u8): Remove.
9072 (__arm_vorrq_m_u32): Remove.
9073 (__arm_vorrq_m_u16): Remove.
9074 (__arm_vorrq_x_s8): Remove.
9075 (__arm_vorrq_x_s16): Remove.
9076 (__arm_vorrq_x_s32): Remove.
9077 (__arm_vorrq_x_u8): Remove.
9078 (__arm_vorrq_x_u16): Remove.
9079 (__arm_vorrq_x_u32): Remove.
9080 (__arm_vorrq_f16): Remove.
9081 (__arm_vorrq_f32): Remove.
9082 (__arm_vorrq_m_f32): Remove.
9083 (__arm_vorrq_m_f16): Remove.
9084 (__arm_vorrq_x_f16): Remove.
9085 (__arm_vorrq_x_f32): Remove.
9086 (__arm_vorrq): Remove.
9087 (__arm_vorrq_m_n): Remove.
9088 (__arm_vorrq_m): Remove.
9089 (__arm_vorrq_x): Remove.
9091 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9093 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
9094 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
9095 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
9096 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
9098 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9100 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
9102 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
9103 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
9104 * config/arm/arm_mve.h (vandq): Remove.
9109 (vandq_u16): Remove.
9110 (vandq_s16): Remove.
9111 (vandq_u32): Remove.
9112 (vandq_s32): Remove.
9113 (vandq_f16): Remove.
9114 (vandq_f32): Remove.
9115 (vandq_m_s8): Remove.
9116 (vandq_m_s32): Remove.
9117 (vandq_m_s16): Remove.
9118 (vandq_m_u8): Remove.
9119 (vandq_m_u32): Remove.
9120 (vandq_m_u16): Remove.
9121 (vandq_m_f32): Remove.
9122 (vandq_m_f16): Remove.
9123 (vandq_x_s8): Remove.
9124 (vandq_x_s16): Remove.
9125 (vandq_x_s32): Remove.
9126 (vandq_x_u8): Remove.
9127 (vandq_x_u16): Remove.
9128 (vandq_x_u32): Remove.
9129 (vandq_x_f16): Remove.
9130 (vandq_x_f32): Remove.
9131 (__arm_vandq_u8): Remove.
9132 (__arm_vandq_s8): Remove.
9133 (__arm_vandq_u16): Remove.
9134 (__arm_vandq_s16): Remove.
9135 (__arm_vandq_u32): Remove.
9136 (__arm_vandq_s32): Remove.
9137 (__arm_vandq_m_s8): Remove.
9138 (__arm_vandq_m_s32): Remove.
9139 (__arm_vandq_m_s16): Remove.
9140 (__arm_vandq_m_u8): Remove.
9141 (__arm_vandq_m_u32): Remove.
9142 (__arm_vandq_m_u16): Remove.
9143 (__arm_vandq_x_s8): Remove.
9144 (__arm_vandq_x_s16): Remove.
9145 (__arm_vandq_x_s32): Remove.
9146 (__arm_vandq_x_u8): Remove.
9147 (__arm_vandq_x_u16): Remove.
9148 (__arm_vandq_x_u32): Remove.
9149 (__arm_vandq_f16): Remove.
9150 (__arm_vandq_f32): Remove.
9151 (__arm_vandq_m_f32): Remove.
9152 (__arm_vandq_m_f16): Remove.
9153 (__arm_vandq_x_f16): Remove.
9154 (__arm_vandq_x_f32): Remove.
9155 (__arm_vandq): Remove.
9156 (__arm_vandq_m): Remove.
9157 (__arm_vandq_x): Remove.
9162 (veorq_u16): Remove.
9163 (veorq_s16): Remove.
9164 (veorq_u32): Remove.
9165 (veorq_s32): Remove.
9166 (veorq_f16): Remove.
9167 (veorq_f32): Remove.
9168 (veorq_m_s8): Remove.
9169 (veorq_m_s32): Remove.
9170 (veorq_m_s16): Remove.
9171 (veorq_m_u8): Remove.
9172 (veorq_m_u32): Remove.
9173 (veorq_m_u16): Remove.
9174 (veorq_m_f32): Remove.
9175 (veorq_m_f16): Remove.
9176 (veorq_x_s8): Remove.
9177 (veorq_x_s16): Remove.
9178 (veorq_x_s32): Remove.
9179 (veorq_x_u8): Remove.
9180 (veorq_x_u16): Remove.
9181 (veorq_x_u32): Remove.
9182 (veorq_x_f16): Remove.
9183 (veorq_x_f32): Remove.
9184 (__arm_veorq_u8): Remove.
9185 (__arm_veorq_s8): Remove.
9186 (__arm_veorq_u16): Remove.
9187 (__arm_veorq_s16): Remove.
9188 (__arm_veorq_u32): Remove.
9189 (__arm_veorq_s32): Remove.
9190 (__arm_veorq_m_s8): Remove.
9191 (__arm_veorq_m_s32): Remove.
9192 (__arm_veorq_m_s16): Remove.
9193 (__arm_veorq_m_u8): Remove.
9194 (__arm_veorq_m_u32): Remove.
9195 (__arm_veorq_m_u16): Remove.
9196 (__arm_veorq_x_s8): Remove.
9197 (__arm_veorq_x_s16): Remove.
9198 (__arm_veorq_x_s32): Remove.
9199 (__arm_veorq_x_u8): Remove.
9200 (__arm_veorq_x_u16): Remove.
9201 (__arm_veorq_x_u32): Remove.
9202 (__arm_veorq_f16): Remove.
9203 (__arm_veorq_f32): Remove.
9204 (__arm_veorq_m_f32): Remove.
9205 (__arm_veorq_m_f16): Remove.
9206 (__arm_veorq_x_f16): Remove.
9207 (__arm_veorq_x_f32): Remove.
9208 (__arm_veorq): Remove.
9209 (__arm_veorq_m): Remove.
9210 (__arm_veorq_x): Remove.
9212 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9214 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
9215 (MVE_FP_M_BINARY_LOGIC): New.
9216 (MVE_INT_M_N_BINARY_LOGIC): New.
9217 (MVE_INT_N_BINARY_LOGIC): New.
9218 (mve_insn): Add vand, veor, vorr, vbic.
9219 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
9220 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
9221 (mve_vbicq_m_<supf><mode>): Merge into ...
9222 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9223 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
9224 (mve_vbicq_m_f<mode>): Merge into ...
9225 (@mve_<mve_insn>q_m_f<mode>): ... this.
9226 (mve_vorrq_n_<supf><mode>)
9227 (mve_vbicq_n_<supf><mode>): Merge into ...
9228 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9229 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
9231 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9233 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9235 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
9236 * config/arm/arm-mve-builtins-shapes.h (binary): New.
9238 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9240 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
9242 (vaddq, vmulq, vsubq): New.
9243 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
9244 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
9245 * config/arm/arm_mve.h (vaddq): Remove.
9248 (vaddq_n_u8): Remove.
9249 (vaddq_n_s8): Remove.
9250 (vaddq_n_u16): Remove.
9251 (vaddq_n_s16): Remove.
9252 (vaddq_n_u32): Remove.
9253 (vaddq_n_s32): Remove.
9254 (vaddq_n_f16): Remove.
9255 (vaddq_n_f32): Remove.
9256 (vaddq_m_n_s8): Remove.
9257 (vaddq_m_n_s32): Remove.
9258 (vaddq_m_n_s16): Remove.
9259 (vaddq_m_n_u8): Remove.
9260 (vaddq_m_n_u32): Remove.
9261 (vaddq_m_n_u16): Remove.
9262 (vaddq_m_s8): Remove.
9263 (vaddq_m_s32): Remove.
9264 (vaddq_m_s16): Remove.
9265 (vaddq_m_u8): Remove.
9266 (vaddq_m_u32): Remove.
9267 (vaddq_m_u16): Remove.
9268 (vaddq_m_f32): Remove.
9269 (vaddq_m_f16): Remove.
9270 (vaddq_m_n_f32): Remove.
9271 (vaddq_m_n_f16): Remove.
9273 (vaddq_s16): Remove.
9274 (vaddq_s32): Remove.
9276 (vaddq_u16): Remove.
9277 (vaddq_u32): Remove.
9278 (vaddq_f16): Remove.
9279 (vaddq_f32): Remove.
9280 (vaddq_x_s8): Remove.
9281 (vaddq_x_s16): Remove.
9282 (vaddq_x_s32): Remove.
9283 (vaddq_x_n_s8): Remove.
9284 (vaddq_x_n_s16): Remove.
9285 (vaddq_x_n_s32): Remove.
9286 (vaddq_x_u8): Remove.
9287 (vaddq_x_u16): Remove.
9288 (vaddq_x_u32): Remove.
9289 (vaddq_x_n_u8): Remove.
9290 (vaddq_x_n_u16): Remove.
9291 (vaddq_x_n_u32): Remove.
9292 (vaddq_x_f16): Remove.
9293 (vaddq_x_f32): Remove.
9294 (vaddq_x_n_f16): Remove.
9295 (vaddq_x_n_f32): Remove.
9296 (__arm_vaddq_n_u8): Remove.
9297 (__arm_vaddq_n_s8): Remove.
9298 (__arm_vaddq_n_u16): Remove.
9299 (__arm_vaddq_n_s16): Remove.
9300 (__arm_vaddq_n_u32): Remove.
9301 (__arm_vaddq_n_s32): Remove.
9302 (__arm_vaddq_m_n_s8): Remove.
9303 (__arm_vaddq_m_n_s32): Remove.
9304 (__arm_vaddq_m_n_s16): Remove.
9305 (__arm_vaddq_m_n_u8): Remove.
9306 (__arm_vaddq_m_n_u32): Remove.
9307 (__arm_vaddq_m_n_u16): Remove.
9308 (__arm_vaddq_m_s8): Remove.
9309 (__arm_vaddq_m_s32): Remove.
9310 (__arm_vaddq_m_s16): Remove.
9311 (__arm_vaddq_m_u8): Remove.
9312 (__arm_vaddq_m_u32): Remove.
9313 (__arm_vaddq_m_u16): Remove.
9314 (__arm_vaddq_s8): Remove.
9315 (__arm_vaddq_s16): Remove.
9316 (__arm_vaddq_s32): Remove.
9317 (__arm_vaddq_u8): Remove.
9318 (__arm_vaddq_u16): Remove.
9319 (__arm_vaddq_u32): Remove.
9320 (__arm_vaddq_x_s8): Remove.
9321 (__arm_vaddq_x_s16): Remove.
9322 (__arm_vaddq_x_s32): Remove.
9323 (__arm_vaddq_x_n_s8): Remove.
9324 (__arm_vaddq_x_n_s16): Remove.
9325 (__arm_vaddq_x_n_s32): Remove.
9326 (__arm_vaddq_x_u8): Remove.
9327 (__arm_vaddq_x_u16): Remove.
9328 (__arm_vaddq_x_u32): Remove.
9329 (__arm_vaddq_x_n_u8): Remove.
9330 (__arm_vaddq_x_n_u16): Remove.
9331 (__arm_vaddq_x_n_u32): Remove.
9332 (__arm_vaddq_n_f16): Remove.
9333 (__arm_vaddq_n_f32): Remove.
9334 (__arm_vaddq_m_f32): Remove.
9335 (__arm_vaddq_m_f16): Remove.
9336 (__arm_vaddq_m_n_f32): Remove.
9337 (__arm_vaddq_m_n_f16): Remove.
9338 (__arm_vaddq_f16): Remove.
9339 (__arm_vaddq_f32): Remove.
9340 (__arm_vaddq_x_f16): Remove.
9341 (__arm_vaddq_x_f32): Remove.
9342 (__arm_vaddq_x_n_f16): Remove.
9343 (__arm_vaddq_x_n_f32): Remove.
9344 (__arm_vaddq): Remove.
9345 (__arm_vaddq_m): Remove.
9346 (__arm_vaddq_x): Remove.
9351 (vmulq_n_u8): Remove.
9353 (vmulq_n_s8): Remove.
9354 (vmulq_u16): Remove.
9355 (vmulq_n_u16): Remove.
9356 (vmulq_s16): Remove.
9357 (vmulq_n_s16): Remove.
9358 (vmulq_u32): Remove.
9359 (vmulq_n_u32): Remove.
9360 (vmulq_s32): Remove.
9361 (vmulq_n_s32): Remove.
9362 (vmulq_n_f16): Remove.
9363 (vmulq_f16): Remove.
9364 (vmulq_n_f32): Remove.
9365 (vmulq_f32): Remove.
9366 (vmulq_m_n_s8): Remove.
9367 (vmulq_m_n_s32): Remove.
9368 (vmulq_m_n_s16): Remove.
9369 (vmulq_m_n_u8): Remove.
9370 (vmulq_m_n_u32): Remove.
9371 (vmulq_m_n_u16): Remove.
9372 (vmulq_m_s8): Remove.
9373 (vmulq_m_s32): Remove.
9374 (vmulq_m_s16): Remove.
9375 (vmulq_m_u8): Remove.
9376 (vmulq_m_u32): Remove.
9377 (vmulq_m_u16): Remove.
9378 (vmulq_m_f32): Remove.
9379 (vmulq_m_f16): Remove.
9380 (vmulq_m_n_f32): Remove.
9381 (vmulq_m_n_f16): Remove.
9382 (vmulq_x_s8): Remove.
9383 (vmulq_x_s16): Remove.
9384 (vmulq_x_s32): Remove.
9385 (vmulq_x_n_s8): Remove.
9386 (vmulq_x_n_s16): Remove.
9387 (vmulq_x_n_s32): Remove.
9388 (vmulq_x_u8): Remove.
9389 (vmulq_x_u16): Remove.
9390 (vmulq_x_u32): Remove.
9391 (vmulq_x_n_u8): Remove.
9392 (vmulq_x_n_u16): Remove.
9393 (vmulq_x_n_u32): Remove.
9394 (vmulq_x_f16): Remove.
9395 (vmulq_x_f32): Remove.
9396 (vmulq_x_n_f16): Remove.
9397 (vmulq_x_n_f32): Remove.
9398 (__arm_vmulq_u8): Remove.
9399 (__arm_vmulq_n_u8): Remove.
9400 (__arm_vmulq_s8): Remove.
9401 (__arm_vmulq_n_s8): Remove.
9402 (__arm_vmulq_u16): Remove.
9403 (__arm_vmulq_n_u16): Remove.
9404 (__arm_vmulq_s16): Remove.
9405 (__arm_vmulq_n_s16): Remove.
9406 (__arm_vmulq_u32): Remove.
9407 (__arm_vmulq_n_u32): Remove.
9408 (__arm_vmulq_s32): Remove.
9409 (__arm_vmulq_n_s32): Remove.
9410 (__arm_vmulq_m_n_s8): Remove.
9411 (__arm_vmulq_m_n_s32): Remove.
9412 (__arm_vmulq_m_n_s16): Remove.
9413 (__arm_vmulq_m_n_u8): Remove.
9414 (__arm_vmulq_m_n_u32): Remove.
9415 (__arm_vmulq_m_n_u16): Remove.
9416 (__arm_vmulq_m_s8): Remove.
9417 (__arm_vmulq_m_s32): Remove.
9418 (__arm_vmulq_m_s16): Remove.
9419 (__arm_vmulq_m_u8): Remove.
9420 (__arm_vmulq_m_u32): Remove.
9421 (__arm_vmulq_m_u16): Remove.
9422 (__arm_vmulq_x_s8): Remove.
9423 (__arm_vmulq_x_s16): Remove.
9424 (__arm_vmulq_x_s32): Remove.
9425 (__arm_vmulq_x_n_s8): Remove.
9426 (__arm_vmulq_x_n_s16): Remove.
9427 (__arm_vmulq_x_n_s32): Remove.
9428 (__arm_vmulq_x_u8): Remove.
9429 (__arm_vmulq_x_u16): Remove.
9430 (__arm_vmulq_x_u32): Remove.
9431 (__arm_vmulq_x_n_u8): Remove.
9432 (__arm_vmulq_x_n_u16): Remove.
9433 (__arm_vmulq_x_n_u32): Remove.
9434 (__arm_vmulq_n_f16): Remove.
9435 (__arm_vmulq_f16): Remove.
9436 (__arm_vmulq_n_f32): Remove.
9437 (__arm_vmulq_f32): Remove.
9438 (__arm_vmulq_m_f32): Remove.
9439 (__arm_vmulq_m_f16): Remove.
9440 (__arm_vmulq_m_n_f32): Remove.
9441 (__arm_vmulq_m_n_f16): Remove.
9442 (__arm_vmulq_x_f16): Remove.
9443 (__arm_vmulq_x_f32): Remove.
9444 (__arm_vmulq_x_n_f16): Remove.
9445 (__arm_vmulq_x_n_f32): Remove.
9446 (__arm_vmulq): Remove.
9447 (__arm_vmulq_m): Remove.
9448 (__arm_vmulq_x): Remove.
9452 (vsubq_n_f16): Remove.
9453 (vsubq_n_f32): Remove.
9455 (vsubq_n_u8): Remove.
9457 (vsubq_n_s8): Remove.
9458 (vsubq_u16): Remove.
9459 (vsubq_n_u16): Remove.
9460 (vsubq_s16): Remove.
9461 (vsubq_n_s16): Remove.
9462 (vsubq_u32): Remove.
9463 (vsubq_n_u32): Remove.
9464 (vsubq_s32): Remove.
9465 (vsubq_n_s32): Remove.
9466 (vsubq_f16): Remove.
9467 (vsubq_f32): Remove.
9468 (vsubq_m_s8): Remove.
9469 (vsubq_m_u8): Remove.
9470 (vsubq_m_s16): Remove.
9471 (vsubq_m_u16): Remove.
9472 (vsubq_m_s32): Remove.
9473 (vsubq_m_u32): Remove.
9474 (vsubq_m_n_s8): Remove.
9475 (vsubq_m_n_s32): Remove.
9476 (vsubq_m_n_s16): Remove.
9477 (vsubq_m_n_u8): Remove.
9478 (vsubq_m_n_u32): Remove.
9479 (vsubq_m_n_u16): Remove.
9480 (vsubq_m_f32): Remove.
9481 (vsubq_m_f16): Remove.
9482 (vsubq_m_n_f32): Remove.
9483 (vsubq_m_n_f16): Remove.
9484 (vsubq_x_s8): Remove.
9485 (vsubq_x_s16): Remove.
9486 (vsubq_x_s32): Remove.
9487 (vsubq_x_n_s8): Remove.
9488 (vsubq_x_n_s16): Remove.
9489 (vsubq_x_n_s32): Remove.
9490 (vsubq_x_u8): Remove.
9491 (vsubq_x_u16): Remove.
9492 (vsubq_x_u32): Remove.
9493 (vsubq_x_n_u8): Remove.
9494 (vsubq_x_n_u16): Remove.
9495 (vsubq_x_n_u32): Remove.
9496 (vsubq_x_f16): Remove.
9497 (vsubq_x_f32): Remove.
9498 (vsubq_x_n_f16): Remove.
9499 (vsubq_x_n_f32): Remove.
9500 (__arm_vsubq_u8): Remove.
9501 (__arm_vsubq_n_u8): Remove.
9502 (__arm_vsubq_s8): Remove.
9503 (__arm_vsubq_n_s8): Remove.
9504 (__arm_vsubq_u16): Remove.
9505 (__arm_vsubq_n_u16): Remove.
9506 (__arm_vsubq_s16): Remove.
9507 (__arm_vsubq_n_s16): Remove.
9508 (__arm_vsubq_u32): Remove.
9509 (__arm_vsubq_n_u32): Remove.
9510 (__arm_vsubq_s32): Remove.
9511 (__arm_vsubq_n_s32): Remove.
9512 (__arm_vsubq_m_s8): Remove.
9513 (__arm_vsubq_m_u8): Remove.
9514 (__arm_vsubq_m_s16): Remove.
9515 (__arm_vsubq_m_u16): Remove.
9516 (__arm_vsubq_m_s32): Remove.
9517 (__arm_vsubq_m_u32): Remove.
9518 (__arm_vsubq_m_n_s8): Remove.
9519 (__arm_vsubq_m_n_s32): Remove.
9520 (__arm_vsubq_m_n_s16): Remove.
9521 (__arm_vsubq_m_n_u8): Remove.
9522 (__arm_vsubq_m_n_u32): Remove.
9523 (__arm_vsubq_m_n_u16): Remove.
9524 (__arm_vsubq_x_s8): Remove.
9525 (__arm_vsubq_x_s16): Remove.
9526 (__arm_vsubq_x_s32): Remove.
9527 (__arm_vsubq_x_n_s8): Remove.
9528 (__arm_vsubq_x_n_s16): Remove.
9529 (__arm_vsubq_x_n_s32): Remove.
9530 (__arm_vsubq_x_u8): Remove.
9531 (__arm_vsubq_x_u16): Remove.
9532 (__arm_vsubq_x_u32): Remove.
9533 (__arm_vsubq_x_n_u8): Remove.
9534 (__arm_vsubq_x_n_u16): Remove.
9535 (__arm_vsubq_x_n_u32): Remove.
9536 (__arm_vsubq_n_f16): Remove.
9537 (__arm_vsubq_n_f32): Remove.
9538 (__arm_vsubq_f16): Remove.
9539 (__arm_vsubq_f32): Remove.
9540 (__arm_vsubq_m_f32): Remove.
9541 (__arm_vsubq_m_f16): Remove.
9542 (__arm_vsubq_m_n_f32): Remove.
9543 (__arm_vsubq_m_n_f16): Remove.
9544 (__arm_vsubq_x_f16): Remove.
9545 (__arm_vsubq_x_f32): Remove.
9546 (__arm_vsubq_x_n_f16): Remove.
9547 (__arm_vsubq_x_n_f32): Remove.
9548 (__arm_vsubq): Remove.
9549 (__arm_vsubq_m): Remove.
9550 (__arm_vsubq_x): Remove.
9551 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
9553 (vmulq_u, vmulq_s, vmulq_f): Remove.
9554 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
9555 (mve_vmulq_<supf><mode>): Remove.
9557 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9559 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
9560 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
9561 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
9564 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
9566 (@mve_<mve_insn>q_n_f<mode>): ... this.
9567 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
9568 (mve_vsubq_n_<supf><mode>): Factorize into ...
9569 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9570 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
9572 (mve_<mve_addsubmul>q<mode>): ... this.
9573 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
9575 (mve_<mve_addsubmul>q_f<mode>): ... this.
9576 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
9577 (mve_vsubq_m_<supf><mode>): Factorize into ...
9578 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
9579 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
9580 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
9581 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9582 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
9584 (@mve_<mve_insn>q_m_f<mode>): ... this.
9585 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
9586 (mve_vsubq_m_n_f<mode>): Factorize into ...
9587 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
9589 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9591 * config/arm/arm-mve-builtins-functions.h (class
9592 unspec_based_mve_function_base): New.
9593 (class unspec_based_mve_function_exact_insn): New.
9595 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9597 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
9598 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
9600 2023-05-03 Murray Steele <murray.steele@arm.com>
9601 Christophe Lyon <christophe.lyon@arm.com>
9603 * config/arm/arm-mve-builtins-base.cc (class
9604 vuninitializedq_impl): New.
9605 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
9606 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
9608 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
9609 * config/arm/arm-mve-builtins-shapes.h (inherent): New
9611 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
9612 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
9613 (__arm_vuninitializedq_u8): Remove.
9614 (__arm_vuninitializedq_u16): Remove.
9615 (__arm_vuninitializedq_u32): Remove.
9616 (__arm_vuninitializedq_u64): Remove.
9617 (__arm_vuninitializedq_s8): Remove.
9618 (__arm_vuninitializedq_s16): Remove.
9619 (__arm_vuninitializedq_s32): Remove.
9620 (__arm_vuninitializedq_s64): Remove.
9621 (__arm_vuninitializedq_f16): Remove.
9622 (__arm_vuninitializedq_f32): Remove.
9624 2023-05-03 Murray Steele <murray.steele@arm.com>
9625 Christophe Lyon <christophe.lyon@arm.com>
9627 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
9628 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
9629 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
9630 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
9631 (parse_type): Likewise.
9632 (parse_signature): Likewise.
9633 (build_one): Likewise.
9634 (build_all): Likewise.
9635 (overloaded_base): New struct.
9636 (unary_convert_def): Likewise.
9637 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
9638 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
9640 (TYPES_reinterpret_unsigned1): Likewise.
9641 (TYPES_reinterpret_integer): Likewise.
9642 (TYPES_reinterpret_integer1): Likewise.
9643 (TYPES_reinterpret_float1): Likewise.
9644 (TYPES_reinterpret_float): Likewise.
9645 (reinterpret_integer): New.
9646 (reinterpret_float): New.
9647 (handle_arm_mve_h): Register builtins.
9648 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
9649 (vreinterpretq_s32): Likewise.
9650 (vreinterpretq_s64): Likewise.
9651 (vreinterpretq_s8): Likewise.
9652 (vreinterpretq_u16): Likewise.
9653 (vreinterpretq_u32): Likewise.
9654 (vreinterpretq_u64): Likewise.
9655 (vreinterpretq_u8): Likewise.
9656 (vreinterpretq_f16): Likewise.
9657 (vreinterpretq_f32): Likewise.
9658 (vreinterpretq_s16_s32): Likewise.
9659 (vreinterpretq_s16_s64): Likewise.
9660 (vreinterpretq_s16_s8): Likewise.
9661 (vreinterpretq_s16_u16): Likewise.
9662 (vreinterpretq_s16_u32): Likewise.
9663 (vreinterpretq_s16_u64): Likewise.
9664 (vreinterpretq_s16_u8): Likewise.
9665 (vreinterpretq_s32_s16): Likewise.
9666 (vreinterpretq_s32_s64): Likewise.
9667 (vreinterpretq_s32_s8): Likewise.
9668 (vreinterpretq_s32_u16): Likewise.
9669 (vreinterpretq_s32_u32): Likewise.
9670 (vreinterpretq_s32_u64): Likewise.
9671 (vreinterpretq_s32_u8): Likewise.
9672 (vreinterpretq_s64_s16): Likewise.
9673 (vreinterpretq_s64_s32): Likewise.
9674 (vreinterpretq_s64_s8): Likewise.
9675 (vreinterpretq_s64_u16): Likewise.
9676 (vreinterpretq_s64_u32): Likewise.
9677 (vreinterpretq_s64_u64): Likewise.
9678 (vreinterpretq_s64_u8): Likewise.
9679 (vreinterpretq_s8_s16): Likewise.
9680 (vreinterpretq_s8_s32): Likewise.
9681 (vreinterpretq_s8_s64): Likewise.
9682 (vreinterpretq_s8_u16): Likewise.
9683 (vreinterpretq_s8_u32): Likewise.
9684 (vreinterpretq_s8_u64): Likewise.
9685 (vreinterpretq_s8_u8): Likewise.
9686 (vreinterpretq_u16_s16): Likewise.
9687 (vreinterpretq_u16_s32): Likewise.
9688 (vreinterpretq_u16_s64): Likewise.
9689 (vreinterpretq_u16_s8): Likewise.
9690 (vreinterpretq_u16_u32): Likewise.
9691 (vreinterpretq_u16_u64): Likewise.
9692 (vreinterpretq_u16_u8): Likewise.
9693 (vreinterpretq_u32_s16): Likewise.
9694 (vreinterpretq_u32_s32): Likewise.
9695 (vreinterpretq_u32_s64): Likewise.
9696 (vreinterpretq_u32_s8): Likewise.
9697 (vreinterpretq_u32_u16): Likewise.
9698 (vreinterpretq_u32_u64): Likewise.
9699 (vreinterpretq_u32_u8): Likewise.
9700 (vreinterpretq_u64_s16): Likewise.
9701 (vreinterpretq_u64_s32): Likewise.
9702 (vreinterpretq_u64_s64): Likewise.
9703 (vreinterpretq_u64_s8): Likewise.
9704 (vreinterpretq_u64_u16): Likewise.
9705 (vreinterpretq_u64_u32): Likewise.
9706 (vreinterpretq_u64_u8): Likewise.
9707 (vreinterpretq_u8_s16): Likewise.
9708 (vreinterpretq_u8_s32): Likewise.
9709 (vreinterpretq_u8_s64): Likewise.
9710 (vreinterpretq_u8_s8): Likewise.
9711 (vreinterpretq_u8_u16): Likewise.
9712 (vreinterpretq_u8_u32): Likewise.
9713 (vreinterpretq_u8_u64): Likewise.
9714 (vreinterpretq_s32_f16): Likewise.
9715 (vreinterpretq_s32_f32): Likewise.
9716 (vreinterpretq_u16_f16): Likewise.
9717 (vreinterpretq_u16_f32): Likewise.
9718 (vreinterpretq_u32_f16): Likewise.
9719 (vreinterpretq_u32_f32): Likewise.
9720 (vreinterpretq_u64_f16): Likewise.
9721 (vreinterpretq_u64_f32): Likewise.
9722 (vreinterpretq_u8_f16): Likewise.
9723 (vreinterpretq_u8_f32): Likewise.
9724 (vreinterpretq_f16_f32): Likewise.
9725 (vreinterpretq_f16_s16): Likewise.
9726 (vreinterpretq_f16_s32): Likewise.
9727 (vreinterpretq_f16_s64): Likewise.
9728 (vreinterpretq_f16_s8): Likewise.
9729 (vreinterpretq_f16_u16): Likewise.
9730 (vreinterpretq_f16_u32): Likewise.
9731 (vreinterpretq_f16_u64): Likewise.
9732 (vreinterpretq_f16_u8): Likewise.
9733 (vreinterpretq_f32_f16): Likewise.
9734 (vreinterpretq_f32_s16): Likewise.
9735 (vreinterpretq_f32_s32): Likewise.
9736 (vreinterpretq_f32_s64): Likewise.
9737 (vreinterpretq_f32_s8): Likewise.
9738 (vreinterpretq_f32_u16): Likewise.
9739 (vreinterpretq_f32_u32): Likewise.
9740 (vreinterpretq_f32_u64): Likewise.
9741 (vreinterpretq_f32_u8): Likewise.
9742 (vreinterpretq_s16_f16): Likewise.
9743 (vreinterpretq_s16_f32): Likewise.
9744 (vreinterpretq_s64_f16): Likewise.
9745 (vreinterpretq_s64_f32): Likewise.
9746 (vreinterpretq_s8_f16): Likewise.
9747 (vreinterpretq_s8_f32): Likewise.
9748 (__arm_vreinterpretq_f16): Likewise.
9749 (__arm_vreinterpretq_f32): Likewise.
9750 (__arm_vreinterpretq_s16): Likewise.
9751 (__arm_vreinterpretq_s32): Likewise.
9752 (__arm_vreinterpretq_s64): Likewise.
9753 (__arm_vreinterpretq_s8): Likewise.
9754 (__arm_vreinterpretq_u16): Likewise.
9755 (__arm_vreinterpretq_u32): Likewise.
9756 (__arm_vreinterpretq_u64): Likewise.
9757 (__arm_vreinterpretq_u8): Likewise.
9758 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
9759 (__arm_vreinterpretq_s16_s64): Likewise.
9760 (__arm_vreinterpretq_s16_s8): Likewise.
9761 (__arm_vreinterpretq_s16_u16): Likewise.
9762 (__arm_vreinterpretq_s16_u32): Likewise.
9763 (__arm_vreinterpretq_s16_u64): Likewise.
9764 (__arm_vreinterpretq_s16_u8): Likewise.
9765 (__arm_vreinterpretq_s32_s16): Likewise.
9766 (__arm_vreinterpretq_s32_s64): Likewise.
9767 (__arm_vreinterpretq_s32_s8): Likewise.
9768 (__arm_vreinterpretq_s32_u16): Likewise.
9769 (__arm_vreinterpretq_s32_u32): Likewise.
9770 (__arm_vreinterpretq_s32_u64): Likewise.
9771 (__arm_vreinterpretq_s32_u8): Likewise.
9772 (__arm_vreinterpretq_s64_s16): Likewise.
9773 (__arm_vreinterpretq_s64_s32): Likewise.
9774 (__arm_vreinterpretq_s64_s8): Likewise.
9775 (__arm_vreinterpretq_s64_u16): Likewise.
9776 (__arm_vreinterpretq_s64_u32): Likewise.
9777 (__arm_vreinterpretq_s64_u64): Likewise.
9778 (__arm_vreinterpretq_s64_u8): Likewise.
9779 (__arm_vreinterpretq_s8_s16): Likewise.
9780 (__arm_vreinterpretq_s8_s32): Likewise.
9781 (__arm_vreinterpretq_s8_s64): Likewise.
9782 (__arm_vreinterpretq_s8_u16): Likewise.
9783 (__arm_vreinterpretq_s8_u32): Likewise.
9784 (__arm_vreinterpretq_s8_u64): Likewise.
9785 (__arm_vreinterpretq_s8_u8): Likewise.
9786 (__arm_vreinterpretq_u16_s16): Likewise.
9787 (__arm_vreinterpretq_u16_s32): Likewise.
9788 (__arm_vreinterpretq_u16_s64): Likewise.
9789 (__arm_vreinterpretq_u16_s8): Likewise.
9790 (__arm_vreinterpretq_u16_u32): Likewise.
9791 (__arm_vreinterpretq_u16_u64): Likewise.
9792 (__arm_vreinterpretq_u16_u8): Likewise.
9793 (__arm_vreinterpretq_u32_s16): Likewise.
9794 (__arm_vreinterpretq_u32_s32): Likewise.
9795 (__arm_vreinterpretq_u32_s64): Likewise.
9796 (__arm_vreinterpretq_u32_s8): Likewise.
9797 (__arm_vreinterpretq_u32_u16): Likewise.
9798 (__arm_vreinterpretq_u32_u64): Likewise.
9799 (__arm_vreinterpretq_u32_u8): Likewise.
9800 (__arm_vreinterpretq_u64_s16): Likewise.
9801 (__arm_vreinterpretq_u64_s32): Likewise.
9802 (__arm_vreinterpretq_u64_s64): Likewise.
9803 (__arm_vreinterpretq_u64_s8): Likewise.
9804 (__arm_vreinterpretq_u64_u16): Likewise.
9805 (__arm_vreinterpretq_u64_u32): Likewise.
9806 (__arm_vreinterpretq_u64_u8): Likewise.
9807 (__arm_vreinterpretq_u8_s16): Likewise.
9808 (__arm_vreinterpretq_u8_s32): Likewise.
9809 (__arm_vreinterpretq_u8_s64): Likewise.
9810 (__arm_vreinterpretq_u8_s8): Likewise.
9811 (__arm_vreinterpretq_u8_u16): Likewise.
9812 (__arm_vreinterpretq_u8_u32): Likewise.
9813 (__arm_vreinterpretq_u8_u64): Likewise.
9814 (__arm_vreinterpretq_s32_f16): Likewise.
9815 (__arm_vreinterpretq_s32_f32): Likewise.
9816 (__arm_vreinterpretq_s16_f16): Likewise.
9817 (__arm_vreinterpretq_s16_f32): Likewise.
9818 (__arm_vreinterpretq_s64_f16): Likewise.
9819 (__arm_vreinterpretq_s64_f32): Likewise.
9820 (__arm_vreinterpretq_s8_f16): Likewise.
9821 (__arm_vreinterpretq_s8_f32): Likewise.
9822 (__arm_vreinterpretq_u16_f16): Likewise.
9823 (__arm_vreinterpretq_u16_f32): Likewise.
9824 (__arm_vreinterpretq_u32_f16): Likewise.
9825 (__arm_vreinterpretq_u32_f32): Likewise.
9826 (__arm_vreinterpretq_u64_f16): Likewise.
9827 (__arm_vreinterpretq_u64_f32): Likewise.
9828 (__arm_vreinterpretq_u8_f16): Likewise.
9829 (__arm_vreinterpretq_u8_f32): Likewise.
9830 (__arm_vreinterpretq_f16_f32): Likewise.
9831 (__arm_vreinterpretq_f16_s16): Likewise.
9832 (__arm_vreinterpretq_f16_s32): Likewise.
9833 (__arm_vreinterpretq_f16_s64): Likewise.
9834 (__arm_vreinterpretq_f16_s8): Likewise.
9835 (__arm_vreinterpretq_f16_u16): Likewise.
9836 (__arm_vreinterpretq_f16_u32): Likewise.
9837 (__arm_vreinterpretq_f16_u64): Likewise.
9838 (__arm_vreinterpretq_f16_u8): Likewise.
9839 (__arm_vreinterpretq_f32_f16): Likewise.
9840 (__arm_vreinterpretq_f32_s16): Likewise.
9841 (__arm_vreinterpretq_f32_s32): Likewise.
9842 (__arm_vreinterpretq_f32_s64): Likewise.
9843 (__arm_vreinterpretq_f32_s8): Likewise.
9844 (__arm_vreinterpretq_f32_u16): Likewise.
9845 (__arm_vreinterpretq_f32_u32): Likewise.
9846 (__arm_vreinterpretq_f32_u64): Likewise.
9847 (__arm_vreinterpretq_f32_u8): Likewise.
9848 (__arm_vreinterpretq_s16): Likewise.
9849 (__arm_vreinterpretq_s32): Likewise.
9850 (__arm_vreinterpretq_s64): Likewise.
9851 (__arm_vreinterpretq_s8): Likewise.
9852 (__arm_vreinterpretq_u16): Likewise.
9853 (__arm_vreinterpretq_u32): Likewise.
9854 (__arm_vreinterpretq_u64): Likewise.
9855 (__arm_vreinterpretq_u8): Likewise.
9856 (__arm_vreinterpretq_f16): Likewise.
9857 (__arm_vreinterpretq_f32): Likewise.
9858 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
9859 * config/arm/unspecs.md: (REINTERPRET): New unspec.
9861 2023-05-03 Murray Steele <murray.steele@arm.com>
9862 Christophe Lyon <christophe.lyon@arm.com>
9863 Christophe Lyon <christophe.lyon@arm.com
9865 * config.gcc: Add arm-mve-builtins-base.o and
9866 arm-mve-builtins-shapes.o to extra_objs.
9867 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
9869 (arm_expand_builtin): Likewise
9870 (arm_check_builtin_call): Likewise
9871 (arm_describe_resolver): Likewise.
9872 * config/arm/arm-builtins.h (enum resolver_ident): Add
9874 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
9875 (arm_resolve_overloaded_builtin): Handle MVE builtins.
9876 (arm_register_target_pragmas): Register arm_check_builtin_call.
9877 * config/arm/arm-mve-builtins.cc (class registered_function): New
9879 (struct registered_function_hasher): New struct.
9880 (pred_suffixes): New table.
9881 (mode_suffixes): New table.
9882 (type_suffix_info): New table.
9883 (TYPES_float16): New.
9884 (TYPES_all_float): New.
9885 (TYPES_integer_8): New.
9886 (TYPES_integer_8_16): New.
9887 (TYPES_integer_16_32): New.
9888 (TYPES_integer_32): New.
9889 (TYPES_signed_16_32): New.
9890 (TYPES_signed_32): New.
9891 (TYPES_all_signed): New.
9892 (TYPES_all_unsigned): New.
9893 (TYPES_all_integer): New.
9894 (TYPES_all_integer_with_64): New.
9895 (DEF_VECTOR_TYPE): New.
9896 (DEF_DOUBLE_TYPE): New.
9897 (DEF_MVE_TYPES_ARRAY): New.
9899 (all_integer_with_64): New.
9903 (all_unsigned): New.
9905 (integer_8_16): New.
9906 (integer_16_32): New.
9908 (signed_16_32): New.
9910 (register_vector_type): Use void_type_node for mve.fp-only types when
9911 mve.fp is not enabled.
9912 (register_builtin_tuple_types): Likewise.
9913 (handle_arm_mve_h): New function..
9914 (matches_type_p): Likewise..
9915 (report_out_of_range): Likewise.
9916 (report_not_enum): Likewise.
9917 (report_missing_float): Likewise.
9918 (report_non_ice): Likewise.
9919 (check_requires_float): Likewise.
9920 (function_instance::hash): Likewise
9921 (function_instance::call_properties): Likewise.
9922 (function_instance::reads_global_state_p): Likewise.
9923 (function_instance::modifies_global_state_p): Likewise.
9924 (function_instance::could_trap_p): Likewise.
9925 (function_instance::has_inactive_argument): Likewise.
9926 (registered_function_hasher::hash): Likewise.
9927 (registered_function_hasher::equal): Likewise.
9928 (function_builder::function_builder): Likewise.
9929 (function_builder::~function_builder): Likewise.
9930 (function_builder::append_name): Likewise.
9931 (function_builder::finish_name): Likewise.
9932 (function_builder::get_name): Likewise.
9933 (add_attribute): Likewise.
9934 (function_builder::get_attributes): Likewise.
9935 (function_builder::add_function): Likewise.
9936 (function_builder::add_unique_function): Likewise.
9937 (function_builder::add_overloaded_function): Likewise.
9938 (function_builder::add_overloaded_functions): Likewise.
9939 (function_builder::register_function_group): Likewise.
9940 (function_call_info::function_call_info): Likewise.
9941 (function_resolver::function_resolver): Likewise.
9942 (function_resolver::get_vector_type): Likewise.
9943 (function_resolver::get_scalar_type_name): Likewise.
9944 (function_resolver::get_argument_type): Likewise.
9945 (function_resolver::scalar_argument_p): Likewise.
9946 (function_resolver::report_no_such_form): Likewise.
9947 (function_resolver::lookup_form): Likewise.
9948 (function_resolver::resolve_to): Likewise.
9949 (function_resolver::infer_vector_or_tuple_type): Likewise.
9950 (function_resolver::infer_vector_type): Likewise.
9951 (function_resolver::require_vector_or_scalar_type): Likewise.
9952 (function_resolver::require_vector_type): Likewise.
9953 (function_resolver::require_matching_vector_type): Likewise.
9954 (function_resolver::require_derived_vector_type): Likewise.
9955 (function_resolver::require_derived_scalar_type): Likewise.
9956 (function_resolver::require_integer_immediate): Likewise.
9957 (function_resolver::require_scalar_type): Likewise.
9958 (function_resolver::check_num_arguments): Likewise.
9959 (function_resolver::check_gp_argument): Likewise.
9960 (function_resolver::finish_opt_n_resolution): Likewise.
9961 (function_resolver::resolve_unary): Likewise.
9962 (function_resolver::resolve_unary_n): Likewise.
9963 (function_resolver::resolve_uniform): Likewise.
9964 (function_resolver::resolve_uniform_opt_n): Likewise.
9965 (function_resolver::resolve): Likewise.
9966 (function_checker::function_checker): Likewise.
9967 (function_checker::argument_exists_p): Likewise.
9968 (function_checker::require_immediate): Likewise.
9969 (function_checker::require_immediate_enum): Likewise.
9970 (function_checker::require_immediate_range): Likewise.
9971 (function_checker::check): Likewise.
9972 (gimple_folder::gimple_folder): Likewise.
9973 (gimple_folder::fold): Likewise.
9974 (function_expander::function_expander): Likewise.
9975 (function_expander::direct_optab_handler): Likewise.
9976 (function_expander::get_fallback_value): Likewise.
9977 (function_expander::get_reg_target): Likewise.
9978 (function_expander::add_output_operand): Likewise.
9979 (function_expander::add_input_operand): Likewise.
9980 (function_expander::add_integer_operand): Likewise.
9981 (function_expander::generate_insn): Likewise.
9982 (function_expander::use_exact_insn): Likewise.
9983 (function_expander::use_unpred_insn): Likewise.
9984 (function_expander::use_pred_x_insn): Likewise.
9985 (function_expander::use_cond_insn): Likewise.
9986 (function_expander::map_to_rtx_codes): Likewise.
9987 (function_expander::expand): Likewise.
9988 (resolve_overloaded_builtin): Likewise.
9989 (check_builtin_call): Likewise.
9990 (gimple_fold_builtin): Likewise.
9991 (expand_builtin): Likewise.
9992 (gt_ggc_mx): Likewise.
9993 (gt_pch_nx): Likewise.
9994 (gt_pch_nx): Likewise.
9995 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
10006 (offset): New mode.
10007 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
10008 (CP_READ_FPCR): Likewise.
10009 (CP_RAISE_FP_EXCEPTIONS): Likewise.
10010 (CP_READ_MEMORY): Likewise.
10011 (CP_WRITE_MEMORY): Likewise.
10012 (enum units_index): New enum.
10013 (enum predication_index): New.
10014 (enum type_class_index): New.
10015 (enum mode_suffix_index): New enum.
10016 (enum type_suffix_index): New.
10017 (struct mode_suffix_info): New struct.
10018 (struct type_suffix_info): New.
10019 (struct function_group_info): Likewise.
10020 (class function_instance): Likewise.
10021 (class registered_function): Likewise.
10022 (class function_builder): Likewise.
10023 (class function_call_info): Likewise.
10024 (class function_resolver): Likewise.
10025 (class function_checker): Likewise.
10026 (class gimple_folder): Likewise.
10027 (class function_expander): Likewise.
10028 (get_mve_pred16_t): Likewise.
10029 (find_mode_suffix): New function.
10030 (class function_base): Likewise.
10031 (class function_shape): Likewise.
10032 (function_instance::operator==): New function.
10033 (function_instance::operator!=): Likewise.
10034 (function_instance::vectors_per_tuple): Likewise.
10035 (function_instance::mode_suffix): Likewise.
10036 (function_instance::type_suffix): Likewise.
10037 (function_instance::scalar_type): Likewise.
10038 (function_instance::vector_type): Likewise.
10039 (function_instance::tuple_type): Likewise.
10040 (function_instance::vector_mode): Likewise.
10041 (function_call_info::function_returns_void_p): Likewise.
10042 (function_base::call_properties): Likewise.
10043 * config/arm/arm-protos.h (enum arm_builtin_class): Add
10045 (handle_arm_mve_h): New.
10046 (resolve_overloaded_builtin): New.
10047 (check_builtin_call): New.
10048 (gimple_fold_builtin): New.
10049 (expand_builtin): New.
10050 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
10051 arm_gimple_fold_builtin.
10052 (arm_gimple_fold_builtin): New function.
10053 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
10054 * config/arm/predicates.md (arm_any_register_operand): New predicate.
10055 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
10056 (arm-mve-builtins-shapes.o): New target.
10057 (arm-mve-builtins-base.o): New target.
10058 * config/arm/arm-mve-builtins-base.cc: New file.
10059 * config/arm/arm-mve-builtins-base.def: New file.
10060 * config/arm/arm-mve-builtins-base.h: New file.
10061 * config/arm/arm-mve-builtins-functions.h: New file.
10062 * config/arm/arm-mve-builtins-shapes.cc: New file.
10063 * config/arm/arm-mve-builtins-shapes.h: New file.
10065 2023-05-03 Murray Steele <murray.steele@arm.com>
10066 Christophe Lyon <christophe.lyon@arm.com>
10067 Christophe Lyon <christophe.lyon@arm.com>
10069 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
10071 (arm_init_builtin): Use arm_general_add_builtin_function instead
10072 of arm_add_builtin_function.
10073 (arm_init_acle_builtins): Likewise.
10074 (arm_init_mve_builtins): Likewise.
10075 (arm_init_crypto_builtins): Likewise.
10076 (arm_init_builtins): Likewise.
10077 (arm_general_builtin_decl): New function.
10078 (arm_builtin_decl): Defer to numberspace-specialized functions.
10079 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
10080 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
10081 (arm_general_expand_builtin_1): ... specialize for general builtins.
10082 (arm_expand_acle_builtin): Use arm_general_expand_builtin
10083 instead of arm_expand_builtin.
10084 (arm_expand_mve_builtin): Likewise.
10085 (arm_expand_neon_builtin): Likewise.
10086 (arm_expand_vfp_builtin): Likewise.
10087 (arm_general_expand_builtin): New function.
10088 (arm_expand_builtin): Specialize for general builtins.
10089 (arm_general_check_builtin_call): New function.
10090 (arm_check_builtin_call): Specialize for general builtins.
10091 (arm_describe_resolver): Validate numberspace.
10092 (arm_cde_end_args): Likewise.
10093 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
10094 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
10096 2023-05-03 Martin Liska <mliska@suse.cz>
10099 * config/riscv/sync.md: Add gcc_unreachable to a switch.
10101 2023-05-03 Richard Biener <rguenther@suse.de>
10103 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
10104 (patch_loop_exit): Likewise.
10105 (connect_loops): Likewise.
10106 (split_loop): Likewise.
10107 (control_dep_semi_invariant_p): Likewise.
10108 (do_split_loop_on_cond): Likewise.
10109 (split_loop_on_cond): Likewise.
10110 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
10112 (simplify_loop_version): Likewise.
10113 (evaluate_bbs): Likewise.
10114 (find_loop_guard): Likewise.
10115 (clean_up_after_unswitching): Likewise.
10116 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
10118 (optimize_spaceship): Take a gcond * argument, avoid
10120 (math_opts_dom_walker::after_dom_children): Adjust call to
10121 optimize_spaceship.
10122 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
10123 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
10126 2023-05-03 Andreas Schwab <schwab@suse.de>
10128 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
10130 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10132 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
10134 (class vlseg): New class.
10135 (class vsseg): Ditto.
10136 (class vlsseg): Ditto.
10137 (class vssseg): Ditto.
10138 (class seg_indexed_load): Ditto.
10139 (class seg_indexed_store): Ditto.
10140 (class vlsegff): Ditto.
10142 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10143 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
10153 * config/riscv/riscv-vector-builtins-shapes.cc (struct
10154 seg_loadstore_def): Ditto.
10155 (struct seg_indexed_loadstore_def): Ditto.
10156 (struct seg_fault_load_def): Ditto.
10158 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
10159 * config/riscv/riscv-vector-builtins.cc
10160 (function_builder::append_nf): New function.
10161 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
10162 Change ptr from double into float.
10163 (vfloat32m1x3_t): Ditto.
10164 (vfloat32m1x4_t): Ditto.
10165 (vfloat32m1x5_t): Ditto.
10166 (vfloat32m1x6_t): Ditto.
10167 (vfloat32m1x7_t): Ditto.
10168 (vfloat32m1x8_t): Ditto.
10169 (vfloat32m2x2_t): Ditto.
10170 (vfloat32m2x3_t): Ditto.
10171 (vfloat32m2x4_t): Ditto.
10172 (vfloat32m4x2_t): Ditto.
10173 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
10174 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
10176 * config/riscv/riscv.md: Add segment instructions.
10177 * config/riscv/vector-iterators.md: Support segment intrinsics.
10178 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
10180 (@pred_unit_strided_store<mode>): Ditto.
10181 (@pred_strided_load<mode>): Ditto.
10182 (@pred_strided_store<mode>): Ditto.
10183 (@pred_fault_load<mode>): Ditto.
10184 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
10185 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
10186 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
10187 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
10188 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
10189 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
10190 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
10191 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
10192 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
10193 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
10194 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
10195 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
10196 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
10197 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
10199 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10201 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
10202 tuple type support.
10204 (floattype): Ditto.
10206 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
10207 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
10209 (vget): Add tuple type vget.
10210 * config/riscv/riscv-vector-builtins-types.def
10211 (DEF_RVV_TUPLE_OPS): New macro.
10212 (vint8mf8x2_t): Ditto.
10213 (vuint8mf8x2_t): Ditto.
10214 (vint8mf8x3_t): Ditto.
10215 (vuint8mf8x3_t): Ditto.
10216 (vint8mf8x4_t): Ditto.
10217 (vuint8mf8x4_t): Ditto.
10218 (vint8mf8x5_t): Ditto.
10219 (vuint8mf8x5_t): Ditto.
10220 (vint8mf8x6_t): Ditto.
10221 (vuint8mf8x6_t): Ditto.
10222 (vint8mf8x7_t): Ditto.
10223 (vuint8mf8x7_t): Ditto.
10224 (vint8mf8x8_t): Ditto.
10225 (vuint8mf8x8_t): Ditto.
10226 (vint8mf4x2_t): Ditto.
10227 (vuint8mf4x2_t): Ditto.
10228 (vint8mf4x3_t): Ditto.
10229 (vuint8mf4x3_t): Ditto.
10230 (vint8mf4x4_t): Ditto.
10231 (vuint8mf4x4_t): Ditto.
10232 (vint8mf4x5_t): Ditto.
10233 (vuint8mf4x5_t): Ditto.
10234 (vint8mf4x6_t): Ditto.
10235 (vuint8mf4x6_t): Ditto.
10236 (vint8mf4x7_t): Ditto.
10237 (vuint8mf4x7_t): Ditto.
10238 (vint8mf4x8_t): Ditto.
10239 (vuint8mf4x8_t): Ditto.
10240 (vint8mf2x2_t): Ditto.
10241 (vuint8mf2x2_t): Ditto.
10242 (vint8mf2x3_t): Ditto.
10243 (vuint8mf2x3_t): Ditto.
10244 (vint8mf2x4_t): Ditto.
10245 (vuint8mf2x4_t): Ditto.
10246 (vint8mf2x5_t): Ditto.
10247 (vuint8mf2x5_t): Ditto.
10248 (vint8mf2x6_t): Ditto.
10249 (vuint8mf2x6_t): Ditto.
10250 (vint8mf2x7_t): Ditto.
10251 (vuint8mf2x7_t): Ditto.
10252 (vint8mf2x8_t): Ditto.
10253 (vuint8mf2x8_t): Ditto.
10254 (vint8m1x2_t): Ditto.
10255 (vuint8m1x2_t): Ditto.
10256 (vint8m1x3_t): Ditto.
10257 (vuint8m1x3_t): Ditto.
10258 (vint8m1x4_t): Ditto.
10259 (vuint8m1x4_t): Ditto.
10260 (vint8m1x5_t): Ditto.
10261 (vuint8m1x5_t): Ditto.
10262 (vint8m1x6_t): Ditto.
10263 (vuint8m1x6_t): Ditto.
10264 (vint8m1x7_t): Ditto.
10265 (vuint8m1x7_t): Ditto.
10266 (vint8m1x8_t): Ditto.
10267 (vuint8m1x8_t): Ditto.
10268 (vint8m2x2_t): Ditto.
10269 (vuint8m2x2_t): Ditto.
10270 (vint8m2x3_t): Ditto.
10271 (vuint8m2x3_t): Ditto.
10272 (vint8m2x4_t): Ditto.
10273 (vuint8m2x4_t): Ditto.
10274 (vint8m4x2_t): Ditto.
10275 (vuint8m4x2_t): Ditto.
10276 (vint16mf4x2_t): Ditto.
10277 (vuint16mf4x2_t): Ditto.
10278 (vint16mf4x3_t): Ditto.
10279 (vuint16mf4x3_t): Ditto.
10280 (vint16mf4x4_t): Ditto.
10281 (vuint16mf4x4_t): Ditto.
10282 (vint16mf4x5_t): Ditto.
10283 (vuint16mf4x5_t): Ditto.
10284 (vint16mf4x6_t): Ditto.
10285 (vuint16mf4x6_t): Ditto.
10286 (vint16mf4x7_t): Ditto.
10287 (vuint16mf4x7_t): Ditto.
10288 (vint16mf4x8_t): Ditto.
10289 (vuint16mf4x8_t): Ditto.
10290 (vint16mf2x2_t): Ditto.
10291 (vuint16mf2x2_t): Ditto.
10292 (vint16mf2x3_t): Ditto.
10293 (vuint16mf2x3_t): Ditto.
10294 (vint16mf2x4_t): Ditto.
10295 (vuint16mf2x4_t): Ditto.
10296 (vint16mf2x5_t): Ditto.
10297 (vuint16mf2x5_t): Ditto.
10298 (vint16mf2x6_t): Ditto.
10299 (vuint16mf2x6_t): Ditto.
10300 (vint16mf2x7_t): Ditto.
10301 (vuint16mf2x7_t): Ditto.
10302 (vint16mf2x8_t): Ditto.
10303 (vuint16mf2x8_t): Ditto.
10304 (vint16m1x2_t): Ditto.
10305 (vuint16m1x2_t): Ditto.
10306 (vint16m1x3_t): Ditto.
10307 (vuint16m1x3_t): Ditto.
10308 (vint16m1x4_t): Ditto.
10309 (vuint16m1x4_t): Ditto.
10310 (vint16m1x5_t): Ditto.
10311 (vuint16m1x5_t): Ditto.
10312 (vint16m1x6_t): Ditto.
10313 (vuint16m1x6_t): Ditto.
10314 (vint16m1x7_t): Ditto.
10315 (vuint16m1x7_t): Ditto.
10316 (vint16m1x8_t): Ditto.
10317 (vuint16m1x8_t): Ditto.
10318 (vint16m2x2_t): Ditto.
10319 (vuint16m2x2_t): Ditto.
10320 (vint16m2x3_t): Ditto.
10321 (vuint16m2x3_t): Ditto.
10322 (vint16m2x4_t): Ditto.
10323 (vuint16m2x4_t): Ditto.
10324 (vint16m4x2_t): Ditto.
10325 (vuint16m4x2_t): Ditto.
10326 (vint32mf2x2_t): Ditto.
10327 (vuint32mf2x2_t): Ditto.
10328 (vint32mf2x3_t): Ditto.
10329 (vuint32mf2x3_t): Ditto.
10330 (vint32mf2x4_t): Ditto.
10331 (vuint32mf2x4_t): Ditto.
10332 (vint32mf2x5_t): Ditto.
10333 (vuint32mf2x5_t): Ditto.
10334 (vint32mf2x6_t): Ditto.
10335 (vuint32mf2x6_t): Ditto.
10336 (vint32mf2x7_t): Ditto.
10337 (vuint32mf2x7_t): Ditto.
10338 (vint32mf2x8_t): Ditto.
10339 (vuint32mf2x8_t): Ditto.
10340 (vint32m1x2_t): Ditto.
10341 (vuint32m1x2_t): Ditto.
10342 (vint32m1x3_t): Ditto.
10343 (vuint32m1x3_t): Ditto.
10344 (vint32m1x4_t): Ditto.
10345 (vuint32m1x4_t): Ditto.
10346 (vint32m1x5_t): Ditto.
10347 (vuint32m1x5_t): Ditto.
10348 (vint32m1x6_t): Ditto.
10349 (vuint32m1x6_t): Ditto.
10350 (vint32m1x7_t): Ditto.
10351 (vuint32m1x7_t): Ditto.
10352 (vint32m1x8_t): Ditto.
10353 (vuint32m1x8_t): Ditto.
10354 (vint32m2x2_t): Ditto.
10355 (vuint32m2x2_t): Ditto.
10356 (vint32m2x3_t): Ditto.
10357 (vuint32m2x3_t): Ditto.
10358 (vint32m2x4_t): Ditto.
10359 (vuint32m2x4_t): Ditto.
10360 (vint32m4x2_t): Ditto.
10361 (vuint32m4x2_t): Ditto.
10362 (vint64m1x2_t): Ditto.
10363 (vuint64m1x2_t): Ditto.
10364 (vint64m1x3_t): Ditto.
10365 (vuint64m1x3_t): Ditto.
10366 (vint64m1x4_t): Ditto.
10367 (vuint64m1x4_t): Ditto.
10368 (vint64m1x5_t): Ditto.
10369 (vuint64m1x5_t): Ditto.
10370 (vint64m1x6_t): Ditto.
10371 (vuint64m1x6_t): Ditto.
10372 (vint64m1x7_t): Ditto.
10373 (vuint64m1x7_t): Ditto.
10374 (vint64m1x8_t): Ditto.
10375 (vuint64m1x8_t): Ditto.
10376 (vint64m2x2_t): Ditto.
10377 (vuint64m2x2_t): Ditto.
10378 (vint64m2x3_t): Ditto.
10379 (vuint64m2x3_t): Ditto.
10380 (vint64m2x4_t): Ditto.
10381 (vuint64m2x4_t): Ditto.
10382 (vint64m4x2_t): Ditto.
10383 (vuint64m4x2_t): Ditto.
10384 (vfloat32mf2x2_t): Ditto.
10385 (vfloat32mf2x3_t): Ditto.
10386 (vfloat32mf2x4_t): Ditto.
10387 (vfloat32mf2x5_t): Ditto.
10388 (vfloat32mf2x6_t): Ditto.
10389 (vfloat32mf2x7_t): Ditto.
10390 (vfloat32mf2x8_t): Ditto.
10391 (vfloat32m1x2_t): Ditto.
10392 (vfloat32m1x3_t): Ditto.
10393 (vfloat32m1x4_t): Ditto.
10394 (vfloat32m1x5_t): Ditto.
10395 (vfloat32m1x6_t): Ditto.
10396 (vfloat32m1x7_t): Ditto.
10397 (vfloat32m1x8_t): Ditto.
10398 (vfloat32m2x2_t): Ditto.
10399 (vfloat32m2x3_t): Ditto.
10400 (vfloat32m2x4_t): Ditto.
10401 (vfloat32m4x2_t): Ditto.
10402 (vfloat64m1x2_t): Ditto.
10403 (vfloat64m1x3_t): Ditto.
10404 (vfloat64m1x4_t): Ditto.
10405 (vfloat64m1x5_t): Ditto.
10406 (vfloat64m1x6_t): Ditto.
10407 (vfloat64m1x7_t): Ditto.
10408 (vfloat64m1x8_t): Ditto.
10409 (vfloat64m2x2_t): Ditto.
10410 (vfloat64m2x3_t): Ditto.
10411 (vfloat64m2x4_t): Ditto.
10412 (vfloat64m4x2_t): Ditto.
10413 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
10415 (DEF_RVV_TYPE_INDEX): Ditto.
10416 (rvv_arg_type_info::get_tuple_subpart_type): New function.
10417 (DEF_RVV_TUPLE_TYPE): New macro.
10418 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
10419 Adapt for tuple vget/vset support.
10420 (vint8mf4_t): Ditto.
10421 (vuint8mf4_t): Ditto.
10422 (vint8mf2_t): Ditto.
10423 (vuint8mf2_t): Ditto.
10424 (vint8m1_t): Ditto.
10425 (vuint8m1_t): Ditto.
10426 (vint8m2_t): Ditto.
10427 (vuint8m2_t): Ditto.
10428 (vint8m4_t): Ditto.
10429 (vuint8m4_t): Ditto.
10430 (vint8m8_t): Ditto.
10431 (vuint8m8_t): Ditto.
10432 (vint16mf4_t): Ditto.
10433 (vuint16mf4_t): Ditto.
10434 (vint16mf2_t): Ditto.
10435 (vuint16mf2_t): Ditto.
10436 (vint16m1_t): Ditto.
10437 (vuint16m1_t): Ditto.
10438 (vint16m2_t): Ditto.
10439 (vuint16m2_t): Ditto.
10440 (vint16m4_t): Ditto.
10441 (vuint16m4_t): Ditto.
10442 (vint16m8_t): Ditto.
10443 (vuint16m8_t): Ditto.
10444 (vint32mf2_t): Ditto.
10445 (vuint32mf2_t): Ditto.
10446 (vint32m1_t): Ditto.
10447 (vuint32m1_t): Ditto.
10448 (vint32m2_t): Ditto.
10449 (vuint32m2_t): Ditto.
10450 (vint32m4_t): Ditto.
10451 (vuint32m4_t): Ditto.
10452 (vint32m8_t): Ditto.
10453 (vuint32m8_t): Ditto.
10454 (vint64m1_t): Ditto.
10455 (vuint64m1_t): Ditto.
10456 (vint64m2_t): Ditto.
10457 (vuint64m2_t): Ditto.
10458 (vint64m4_t): Ditto.
10459 (vuint64m4_t): Ditto.
10460 (vint64m8_t): Ditto.
10461 (vuint64m8_t): Ditto.
10462 (vfloat32mf2_t): Ditto.
10463 (vfloat32m1_t): Ditto.
10464 (vfloat32m2_t): Ditto.
10465 (vfloat32m4_t): Ditto.
10466 (vfloat32m8_t): Ditto.
10467 (vfloat64m1_t): Ditto.
10468 (vfloat64m2_t): Ditto.
10469 (vfloat64m4_t): Ditto.
10470 (vfloat64m8_t): Ditto.
10471 (tuple_subpart): Add tuple subpart base type.
10472 * config/riscv/riscv-vector-builtins.h (struct
10473 rvv_arg_type_info): Ditto.
10474 (tuple_type_field): New function.
10476 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10478 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
10479 (RVV_TUPLE_PARTIAL_MODES): Ditto.
10480 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
10483 (get_subpart_mode): Ditto.
10484 (get_tuple_mode): Ditto.
10485 (expand_tuple_move): Ditto.
10486 * config/riscv/riscv-v.cc (ENTRY): New macro.
10487 (TUPLE_ENTRY): Ditto.
10488 (get_nf): New function.
10489 (get_subpart_mode): Ditto.
10490 (get_tuple_mode): Ditto.
10491 (expand_tuple_move): Ditto.
10492 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
10494 (register_tuple_type): New function
10495 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
10497 (vint8mf8x2_t): New macro.
10498 (vuint8mf8x2_t): Ditto.
10499 (vint8mf8x3_t): Ditto.
10500 (vuint8mf8x3_t): Ditto.
10501 (vint8mf8x4_t): Ditto.
10502 (vuint8mf8x4_t): Ditto.
10503 (vint8mf8x5_t): Ditto.
10504 (vuint8mf8x5_t): Ditto.
10505 (vint8mf8x6_t): Ditto.
10506 (vuint8mf8x6_t): Ditto.
10507 (vint8mf8x7_t): Ditto.
10508 (vuint8mf8x7_t): Ditto.
10509 (vint8mf8x8_t): Ditto.
10510 (vuint8mf8x8_t): Ditto.
10511 (vint8mf4x2_t): Ditto.
10512 (vuint8mf4x2_t): Ditto.
10513 (vint8mf4x3_t): Ditto.
10514 (vuint8mf4x3_t): Ditto.
10515 (vint8mf4x4_t): Ditto.
10516 (vuint8mf4x4_t): Ditto.
10517 (vint8mf4x5_t): Ditto.
10518 (vuint8mf4x5_t): Ditto.
10519 (vint8mf4x6_t): Ditto.
10520 (vuint8mf4x6_t): Ditto.
10521 (vint8mf4x7_t): Ditto.
10522 (vuint8mf4x7_t): Ditto.
10523 (vint8mf4x8_t): Ditto.
10524 (vuint8mf4x8_t): Ditto.
10525 (vint8mf2x2_t): Ditto.
10526 (vuint8mf2x2_t): Ditto.
10527 (vint8mf2x3_t): Ditto.
10528 (vuint8mf2x3_t): Ditto.
10529 (vint8mf2x4_t): Ditto.
10530 (vuint8mf2x4_t): Ditto.
10531 (vint8mf2x5_t): Ditto.
10532 (vuint8mf2x5_t): Ditto.
10533 (vint8mf2x6_t): Ditto.
10534 (vuint8mf2x6_t): Ditto.
10535 (vint8mf2x7_t): Ditto.
10536 (vuint8mf2x7_t): Ditto.
10537 (vint8mf2x8_t): Ditto.
10538 (vuint8mf2x8_t): Ditto.
10539 (vint8m1x2_t): Ditto.
10540 (vuint8m1x2_t): Ditto.
10541 (vint8m1x3_t): Ditto.
10542 (vuint8m1x3_t): Ditto.
10543 (vint8m1x4_t): Ditto.
10544 (vuint8m1x4_t): Ditto.
10545 (vint8m1x5_t): Ditto.
10546 (vuint8m1x5_t): Ditto.
10547 (vint8m1x6_t): Ditto.
10548 (vuint8m1x6_t): Ditto.
10549 (vint8m1x7_t): Ditto.
10550 (vuint8m1x7_t): Ditto.
10551 (vint8m1x8_t): Ditto.
10552 (vuint8m1x8_t): Ditto.
10553 (vint8m2x2_t): Ditto.
10554 (vuint8m2x2_t): Ditto.
10555 (vint8m2x3_t): Ditto.
10556 (vuint8m2x3_t): Ditto.
10557 (vint8m2x4_t): Ditto.
10558 (vuint8m2x4_t): Ditto.
10559 (vint8m4x2_t): Ditto.
10560 (vuint8m4x2_t): Ditto.
10561 (vint16mf4x2_t): Ditto.
10562 (vuint16mf4x2_t): Ditto.
10563 (vint16mf4x3_t): Ditto.
10564 (vuint16mf4x3_t): Ditto.
10565 (vint16mf4x4_t): Ditto.
10566 (vuint16mf4x4_t): Ditto.
10567 (vint16mf4x5_t): Ditto.
10568 (vuint16mf4x5_t): Ditto.
10569 (vint16mf4x6_t): Ditto.
10570 (vuint16mf4x6_t): Ditto.
10571 (vint16mf4x7_t): Ditto.
10572 (vuint16mf4x7_t): Ditto.
10573 (vint16mf4x8_t): Ditto.
10574 (vuint16mf4x8_t): Ditto.
10575 (vint16mf2x2_t): Ditto.
10576 (vuint16mf2x2_t): Ditto.
10577 (vint16mf2x3_t): Ditto.
10578 (vuint16mf2x3_t): Ditto.
10579 (vint16mf2x4_t): Ditto.
10580 (vuint16mf2x4_t): Ditto.
10581 (vint16mf2x5_t): Ditto.
10582 (vuint16mf2x5_t): Ditto.
10583 (vint16mf2x6_t): Ditto.
10584 (vuint16mf2x6_t): Ditto.
10585 (vint16mf2x7_t): Ditto.
10586 (vuint16mf2x7_t): Ditto.
10587 (vint16mf2x8_t): Ditto.
10588 (vuint16mf2x8_t): Ditto.
10589 (vint16m1x2_t): Ditto.
10590 (vuint16m1x2_t): Ditto.
10591 (vint16m1x3_t): Ditto.
10592 (vuint16m1x3_t): Ditto.
10593 (vint16m1x4_t): Ditto.
10594 (vuint16m1x4_t): Ditto.
10595 (vint16m1x5_t): Ditto.
10596 (vuint16m1x5_t): Ditto.
10597 (vint16m1x6_t): Ditto.
10598 (vuint16m1x6_t): Ditto.
10599 (vint16m1x7_t): Ditto.
10600 (vuint16m1x7_t): Ditto.
10601 (vint16m1x8_t): Ditto.
10602 (vuint16m1x8_t): Ditto.
10603 (vint16m2x2_t): Ditto.
10604 (vuint16m2x2_t): Ditto.
10605 (vint16m2x3_t): Ditto.
10606 (vuint16m2x3_t): Ditto.
10607 (vint16m2x4_t): Ditto.
10608 (vuint16m2x4_t): Ditto.
10609 (vint16m4x2_t): Ditto.
10610 (vuint16m4x2_t): Ditto.
10611 (vint32mf2x2_t): Ditto.
10612 (vuint32mf2x2_t): Ditto.
10613 (vint32mf2x3_t): Ditto.
10614 (vuint32mf2x3_t): Ditto.
10615 (vint32mf2x4_t): Ditto.
10616 (vuint32mf2x4_t): Ditto.
10617 (vint32mf2x5_t): Ditto.
10618 (vuint32mf2x5_t): Ditto.
10619 (vint32mf2x6_t): Ditto.
10620 (vuint32mf2x6_t): Ditto.
10621 (vint32mf2x7_t): Ditto.
10622 (vuint32mf2x7_t): Ditto.
10623 (vint32mf2x8_t): Ditto.
10624 (vuint32mf2x8_t): Ditto.
10625 (vint32m1x2_t): Ditto.
10626 (vuint32m1x2_t): Ditto.
10627 (vint32m1x3_t): Ditto.
10628 (vuint32m1x3_t): Ditto.
10629 (vint32m1x4_t): Ditto.
10630 (vuint32m1x4_t): Ditto.
10631 (vint32m1x5_t): Ditto.
10632 (vuint32m1x5_t): Ditto.
10633 (vint32m1x6_t): Ditto.
10634 (vuint32m1x6_t): Ditto.
10635 (vint32m1x7_t): Ditto.
10636 (vuint32m1x7_t): Ditto.
10637 (vint32m1x8_t): Ditto.
10638 (vuint32m1x8_t): Ditto.
10639 (vint32m2x2_t): Ditto.
10640 (vuint32m2x2_t): Ditto.
10641 (vint32m2x3_t): Ditto.
10642 (vuint32m2x3_t): Ditto.
10643 (vint32m2x4_t): Ditto.
10644 (vuint32m2x4_t): Ditto.
10645 (vint32m4x2_t): Ditto.
10646 (vuint32m4x2_t): Ditto.
10647 (vint64m1x2_t): Ditto.
10648 (vuint64m1x2_t): Ditto.
10649 (vint64m1x3_t): Ditto.
10650 (vuint64m1x3_t): Ditto.
10651 (vint64m1x4_t): Ditto.
10652 (vuint64m1x4_t): Ditto.
10653 (vint64m1x5_t): Ditto.
10654 (vuint64m1x5_t): Ditto.
10655 (vint64m1x6_t): Ditto.
10656 (vuint64m1x6_t): Ditto.
10657 (vint64m1x7_t): Ditto.
10658 (vuint64m1x7_t): Ditto.
10659 (vint64m1x8_t): Ditto.
10660 (vuint64m1x8_t): Ditto.
10661 (vint64m2x2_t): Ditto.
10662 (vuint64m2x2_t): Ditto.
10663 (vint64m2x3_t): Ditto.
10664 (vuint64m2x3_t): Ditto.
10665 (vint64m2x4_t): Ditto.
10666 (vuint64m2x4_t): Ditto.
10667 (vint64m4x2_t): Ditto.
10668 (vuint64m4x2_t): Ditto.
10669 (vfloat32mf2x2_t): Ditto.
10670 (vfloat32mf2x3_t): Ditto.
10671 (vfloat32mf2x4_t): Ditto.
10672 (vfloat32mf2x5_t): Ditto.
10673 (vfloat32mf2x6_t): Ditto.
10674 (vfloat32mf2x7_t): Ditto.
10675 (vfloat32mf2x8_t): Ditto.
10676 (vfloat32m1x2_t): Ditto.
10677 (vfloat32m1x3_t): Ditto.
10678 (vfloat32m1x4_t): Ditto.
10679 (vfloat32m1x5_t): Ditto.
10680 (vfloat32m1x6_t): Ditto.
10681 (vfloat32m1x7_t): Ditto.
10682 (vfloat32m1x8_t): Ditto.
10683 (vfloat32m2x2_t): Ditto.
10684 (vfloat32m2x3_t): Ditto.
10685 (vfloat32m2x4_t): Ditto.
10686 (vfloat32m4x2_t): Ditto.
10687 (vfloat64m1x2_t): Ditto.
10688 (vfloat64m1x3_t): Ditto.
10689 (vfloat64m1x4_t): Ditto.
10690 (vfloat64m1x5_t): Ditto.
10691 (vfloat64m1x6_t): Ditto.
10692 (vfloat64m1x7_t): Ditto.
10693 (vfloat64m1x8_t): Ditto.
10694 (vfloat64m2x2_t): Ditto.
10695 (vfloat64m2x3_t): Ditto.
10696 (vfloat64m2x4_t): Ditto.
10697 (vfloat64m4x2_t): Ditto.
10698 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
10700 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
10701 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
10703 (TUPLE_ENTRY): Ditto.
10704 (riscv_v_ext_mode_p): New function.
10705 (riscv_v_adjust_nunits): Add tuple mode adjustment.
10706 (riscv_classify_address): Ditto.
10707 (riscv_binary_cost): Ditto.
10708 (riscv_rtx_costs): Ditto.
10709 (riscv_secondary_memory_needed): Ditto.
10710 (riscv_hard_regno_nregs): Ditto.
10711 (riscv_hard_regno_mode_ok): Ditto.
10712 (riscv_vector_mode_supported_p): Ditto.
10713 (riscv_regmode_natural_size): Ditto.
10714 (riscv_array_mode): New function.
10715 (TARGET_ARRAY_MODE): New target hook.
10716 * config/riscv/riscv.md: Add tuple modes.
10717 * config/riscv/vector-iterators.md: Ditto.
10718 * config/riscv/vector.md (mov<mode>): Add tuple modes data
10720 (*mov<VT:mode>_<P:mode>): Ditto.
10722 2023-05-03 Richard Biener <rguenther@suse.de>
10724 * cse.cc (cse_insn): Track an equivalence to the destination
10725 separately and delay using src_related for it.
10727 2023-05-03 Richard Biener <rguenther@suse.de>
10729 * cse.cc (HASH): Turn into inline function and mix
10730 in another HASH_SHIFT bits.
10731 (SAFE_HASH): Likewise.
10733 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10736 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
10737 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
10739 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10742 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
10743 (add<mode>3<vczle><vczbe>): ... This.
10744 (sub<mode>3): Rename to...
10745 (sub<mode>3<vczle><vczbe>): ... This.
10746 (mul<mode>3): Rename to...
10747 (mul<mode>3<vczle><vczbe>): ... This.
10748 (*div<mode>3): Rename to...
10749 (*div<mode>3<vczle><vczbe>): ... This.
10750 (neg<mode>2): Rename to...
10751 (neg<mode>2<vczle><vczbe>): ... This.
10752 (abs<mode>2): Rename to...
10753 (abs<mode>2<vczle><vczbe>): ... This.
10754 (<frint_pattern><mode>2): Rename to...
10755 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
10756 (<fmaxmin><mode>3): Rename to...
10757 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
10758 (*sqrt<mode>2): Rename to...
10759 (*sqrt<mode>2<vczle><vczbe>): ... This.
10761 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
10763 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
10765 2023-05-03 Martin Liska <mliska@suse.cz>
10767 PR tree-optimization/109693
10768 * value-range-storage.cc (vrange_allocator::vrange_allocator):
10769 Remove unused field.
10770 * value-range-storage.h: Likewise.
10772 2023-05-02 Andrew Pinski <apinski@marvell.com>
10774 * tree-ssa-phiopt.cc (move_stmt): New function.
10775 (match_simplify_replacement): Use move_stmt instead
10776 of the inlined version.
10778 2023-05-02 Andrew Pinski <apinski@marvell.com>
10780 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
10783 2023-05-02 Andrew Pinski <apinski@marvell.com>
10785 PR tree-optimization/109702
10786 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
10787 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
10789 2023-05-02 Andrew Pinski <apinski@marvell.com>
10792 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
10793 insn_and_split pattern.
10795 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10797 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
10800 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10802 * config/riscv/sync.md (mem_thread_fence_1): Change fence
10803 depending on the given memory model.
10805 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10807 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
10808 riscv_union_memmodels function to sync.md.
10809 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
10810 get the union of two memmodels in sync.md.
10811 (riscv_print_operand): Add %I and %J flags that output the
10812 optimal LR/SC flag bits for a given memory model.
10813 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
10814 bits on SC op and replace with optimized %I, %J flags.
10816 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10818 * config/riscv/riscv.cc
10819 (riscv_memmodel_needs_amo_release): Change function name.
10820 (riscv_print_operand): Remove unneeded %F case.
10821 * config/riscv/sync.md: Remove unneeded fences.
10823 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10826 * config/riscv/sync.md (atomic_store<mode>): Use simple store
10827 instruction in combination with fence(s).
10829 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10831 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
10832 of %A to include release bits.
10834 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10836 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
10837 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
10840 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10842 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
10843 sequentially consistent LR.aqrl/SC.rl pairs.
10845 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10847 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
10848 sanitize memmodel input with memmodel_base.
10850 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
10851 Pan Li <pan2.li@intel.com>
10854 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
10856 2023-05-02 Romain Naour <romain.naour@gmail.com>
10858 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
10861 2023-05-02 Martin Liska <mliska@suse.cz>
10863 * doc/invoke.texi: Update documentation based on param.opt file.
10865 2023-05-02 Richard Biener <rguenther@suse.de>
10867 PR tree-optimization/109672
10868 * tree-vect-stmts.cc (vectorizable_operation): For plus,
10869 minus and negate always check the vector mode is word mode.
10871 2023-05-01 Andrew Pinski <apinski@marvell.com>
10873 * tree-ssa-phiopt.cc: Update comment about
10874 how the transformation are implemented.
10876 2023-05-01 Jeff Law <jlaw@ventanamicro>
10878 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
10880 2023-05-01 Jeff Law <jlaw@ventanamicro>
10882 * config/cris/cris.cc (TARGET_LRA_P): Remove.
10883 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
10884 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
10885 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
10886 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
10887 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
10889 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
10891 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
10892 * print-tree.cc (print_decl_identifier): Implement it.
10893 * toplev.cc (output_stack_usage_1): Use it.
10895 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10897 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
10900 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10902 * value-range.h (irange::set_nonzero): Inline.
10904 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10906 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
10908 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
10909 invalid_range, as it is an inverse range.
10910 * tree-vrp.cc (find_case_label_range): Avoid trees.
10911 * value-range.cc (irange::irange_set): Delete.
10912 (irange::irange_set_1bit_anti_range): Delete.
10913 (irange::irange_set_anti_range): Delete.
10914 (irange::set): Cleanup.
10915 * value-range.h (class irange): Remove irange_set,
10916 irange_set_anti_range, irange_set_1bit_anti_range.
10917 (irange::set_undefined): Remove set to m_type.
10919 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10921 * range-op.cc (update_known_bitmask): Adjust for irange containing
10922 wide_ints internally.
10923 * tree-ssanames.cc (set_nonzero_bits): Same.
10924 * tree-ssanames.h (set_nonzero_bits): Same.
10925 * value-range-storage.cc (irange_storage::set_irange): Same.
10926 (irange_storage::get_irange): Same.
10927 * value-range.cc (irange::operator=): Same.
10928 (irange::irange_set): Same.
10929 (irange::irange_set_1bit_anti_range): Same.
10930 (irange::irange_set_anti_range): Same.
10931 (irange::set): Same.
10932 (irange::verify_range): Same.
10933 (irange::contains_p): Same.
10934 (irange::irange_single_pair_union): Same.
10935 (irange::union_): Same.
10936 (irange::irange_contains_p): Same.
10937 (irange::intersect): Same.
10938 (irange::invert): Same.
10939 (irange::set_range_from_nonzero_bits): Same.
10940 (irange::set_nonzero_bits): Same.
10941 (mask_to_wi): Same.
10942 (irange::intersect_nonzero_bits): Same.
10943 (irange::union_nonzero_bits): Same.
10946 (tree_range): Same.
10947 (range_tests_strict_enum): Same.
10948 (range_tests_misc): Same.
10949 (range_tests_nonzero_bits): Same.
10950 * value-range.h (irange::type): Same.
10951 (irange::varying_compatible_p): Same.
10952 (irange::irange): Same.
10953 (int_range::int_range): Same.
10954 (irange::set_undefined): Same.
10955 (irange::set_varying): Same.
10956 (irange::lower_bound): Same.
10957 (irange::upper_bound): Same.
10959 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10961 * gimple-range-fold.cc (tree_lower_bound): Delete.
10962 (tree_upper_bound): Delete.
10963 (vrp_val_max): Delete.
10964 (vrp_val_min): Delete.
10965 (fold_using_range::range_of_ssa_name_with_loop_info): Call
10966 range_of_var_in_loop.
10967 * vr-values.cc (valid_value_p): Delete.
10968 (fix_overflow): Delete.
10969 (get_scev_info): New.
10970 (bounds_of_var_in_loop): Refactor into...
10971 (induction_variable_may_overflow_p): ...this,
10972 (range_from_loop_direction): ...and this,
10973 (range_of_var_in_loop): ...and this.
10974 * vr-values.h (bounds_of_var_in_loop): Delete.
10975 (range_of_var_in_loop): New.
10977 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10979 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
10981 (vrp_val_max): New.
10982 (vrp_val_min): New.
10983 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
10984 * range-op.cc (max_limit): Same.
10986 (plus_minus_ranges): Same.
10987 (operator_rshift::op1_range): Same.
10988 (operator_cast::inside_domain_p): Same.
10989 * value-range.cc (vrp_val_is_max): Delete.
10990 (vrp_val_is_min): Delete.
10991 (range_tests_misc): Use irange_val_*.
10992 * value-range.h (vrp_val_is_min): Delete.
10993 (vrp_val_is_max): Delete.
10994 (vrp_val_max): Delete.
10995 (irange_val_min): New.
10996 (vrp_val_min): Delete.
10997 (irange_val_max): New.
10998 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
11000 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11002 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
11003 * gimple-fold.cc (size_must_be_zero_p): Same.
11004 * gimple-loop-versioning.cc
11005 (loop_versioning::prune_loop_conditions): Same.
11006 * gimple-range-edge.cc (gcond_edge_range): Same.
11007 (gimple_outgoing_range::calc_switch_ranges): Same.
11008 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
11009 (adjust_realpart_expr): Same.
11010 (fold_using_range::range_of_address): Same.
11011 (fold_using_range::relation_fold_and_or): Same.
11012 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
11013 (range_is_either_true_or_false): Same.
11014 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
11015 (cfn_clz::fold_range): Same.
11016 (cfn_ctz::fold_range): Same.
11017 * gimple-range-tests.cc (class test_expr_eval): Same.
11018 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
11019 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
11020 (propagate_vr_across_jump_function): Same.
11021 (decide_whether_version_node): Same.
11022 * ipa-prop.cc (ipa_get_value_range): Same.
11023 * ipa-prop.h (ipa_range_set_and_normalize): Same.
11024 * range-op.cc (get_shift_range): Same.
11025 (value_range_from_overflowed_bounds): Same.
11026 (value_range_with_overflow): Same.
11027 (create_possibly_reversed_range): Same.
11028 (equal_op1_op2_relation): Same.
11029 (not_equal_op1_op2_relation): Same.
11030 (lt_op1_op2_relation): Same.
11031 (le_op1_op2_relation): Same.
11032 (gt_op1_op2_relation): Same.
11033 (ge_op1_op2_relation): Same.
11034 (operator_mult::op1_range): Same.
11035 (operator_exact_divide::op1_range): Same.
11036 (operator_lshift::op1_range): Same.
11037 (operator_rshift::op1_range): Same.
11038 (operator_cast::op1_range): Same.
11039 (operator_logical_and::fold_range): Same.
11040 (set_nonzero_range_from_mask): Same.
11041 (operator_bitwise_or::op1_range): Same.
11042 (operator_bitwise_xor::op1_range): Same.
11043 (operator_addr_expr::fold_range): Same.
11044 (pointer_plus_operator::wi_fold): Same.
11045 (pointer_or_operator::op1_range): Same.
11052 (range_op_cast_tests): Same.
11053 (range_op_lshift_tests): Same.
11054 (range_op_rshift_tests): Same.
11055 (range_op_bitwise_and_tests): Same.
11056 (range_relational_tests): Same.
11057 * range.cc (range_zero): Same.
11058 (range_nonzero): Same.
11059 * range.h (range_true): Same.
11060 (range_false): Same.
11061 (range_true_and_false): Same.
11062 * tree-data-ref.cc (split_constant_offset_1): Same.
11063 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
11064 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
11065 (find_unswitching_predicates_for_bb): Same.
11066 * tree-ssa-phiopt.cc (value_replacement): Same.
11067 * tree-ssa-threadbackward.cc
11068 (back_threader::find_taken_edge_cond): Same.
11069 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
11070 * tree-vrp.cc (find_case_label_range): Same.
11071 * value-query.cc (range_query::get_tree_range): Same.
11072 * value-range.cc (irange::set_nonnegative): Same.
11073 (frange::contains_p): Same.
11074 (frange::singleton_p): Same.
11075 (frange::internal_singleton_p): Same.
11076 (irange::irange_set): Same.
11077 (irange::irange_set_1bit_anti_range): Same.
11078 (irange::irange_set_anti_range): Same.
11079 (irange::set): Same.
11080 (irange::operator==): Same.
11081 (irange::singleton_p): Same.
11082 (irange::contains_p): Same.
11083 (irange::set_range_from_nonzero_bits): Same.
11084 (DEFINE_INT_RANGE_INSTANCE): Same.
11094 (range_uint128): New.
11095 (range_uchar): New.
11097 (build_range3): Convert to irange wide_int API.
11098 (range_tests_irange3): Same.
11099 (range_tests_int_range_max): Same.
11100 (range_tests_strict_enum): Same.
11101 (range_tests_misc): Same.
11102 (range_tests_nonzero_bits): Same.
11103 (range_tests_nan): Same.
11104 (range_tests_signed_zeros): Same.
11105 * value-range.h (Value_Range::Value_Range): Same.
11106 (irange::set): Same.
11107 (irange::nonzero_p): Same.
11108 (irange::contains_p): Same.
11109 (range_includes_zero_p): Same.
11110 (irange::set_nonzero): Same.
11111 (irange::set_zero): Same.
11112 (contains_zero_p): Same.
11113 (frange::contains_p): Same.
11115 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
11116 (bounds_of_var_in_loop): Same.
11117 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
11119 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11121 * value-range.cc (irange::irange_union): Rename to...
11122 (irange::union_): ...this.
11123 (irange::irange_intersect): Rename to...
11124 (irange::intersect): ...this.
11125 * value-range.h (irange::union_): Delete.
11126 (irange::intersect): Delete.
11128 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11130 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
11132 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11134 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
11136 (compare_ranges): Delete.
11137 (compare_range_with_value): Delete.
11138 (bounds_of_var_in_loop): Tidy up by using ranger API.
11139 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
11140 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
11141 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
11142 strict_overflow_p and only_ranges.
11143 (simplify_using_ranges::legacy_fold_cond): Adjust call to
11144 legacy_fold_cond_overflow.
11145 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
11147 (range_fits_type_p): Rename value_range to irange.
11148 * vr-values.h (range_fits_type_p): Adjust prototype.
11150 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11152 * value-range.cc (irange::irange_set_anti_range): Remove uses of
11153 tree_lower_bound and tree_upper_bound.
11154 (irange::verify_range): Same.
11155 (irange::operator==): Same.
11156 (irange::singleton_p): Same.
11157 * value-range.h (irange::tree_lower_bound): Delete.
11158 (irange::tree_upper_bound): Delete.
11159 (irange::lower_bound): Delete.
11160 (irange::upper_bound): Delete.
11161 (irange::zero_p): Remove uses of tree_lower_bound and
11164 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11166 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
11168 (determine_value_range): Same.
11169 (record_nonwrapping_iv): Same.
11170 (infer_loop_bounds_from_signedness): Same.
11171 (scev_var_range_cant_overflow): Same.
11172 * tree-vrp.cc (operand_less_p): Delete.
11173 * tree-vrp.h (operand_less_p): Delete.
11174 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
11175 (irange::value_inside_range): Delete.
11176 * value-range.h (vrange::kind): Delete.
11177 (irange::num_pairs): Remove check of m_kind.
11178 (irange::min): Delete.
11179 (irange::max): Delete.
11181 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11183 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
11184 for vrange_storage.
11185 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
11186 (sbr_vector::grow): Same.
11187 (sbr_vector::set_bb_range): Same.
11188 (sbr_vector::get_bb_range): Same.
11189 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
11190 (sbr_sparse_bitmap::set_bb_range): Same.
11191 (sbr_sparse_bitmap::get_bb_range): Same.
11192 (block_range_cache::block_range_cache): Same.
11193 (ssa_global_cache::ssa_global_cache): Same.
11194 (ssa_global_cache::get_global_range): Same.
11195 (ssa_global_cache::set_global_range): Same.
11196 * gimple-range-cache.h: Same.
11197 * gimple-range-edge.cc
11198 (gimple_outgoing_range::gimple_outgoing_range): Same.
11199 (gimple_outgoing_range::switch_edge_range): Same.
11200 (gimple_outgoing_range::calc_switch_ranges): Same.
11201 * gimple-range-edge.h: Same.
11202 * gimple-range-infer.cc
11203 (infer_range_manager::infer_range_manager): Same.
11204 (infer_range_manager::get_nonzero): Same.
11205 (infer_range_manager::maybe_adjust_range): Same.
11206 (infer_range_manager::add_range): Same.
11207 * gimple-range-infer.h: Rename obstack_vrange_allocator to
11209 * tree-core.h (struct irange_storage_slot): Remove.
11210 (struct tree_ssa_name): Remove irange_info and frange_info. Make
11211 range_info a pointer to vrange_storage.
11212 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
11213 (range_info_alloc): Same.
11214 (range_info_free): Same.
11215 (range_info_get_range): Same.
11216 (range_info_set_range): Same.
11217 (get_nonzero_bits): Same.
11218 * value-query.cc (get_ssa_name_range_info): Same.
11219 * value-range-storage.cc (class vrange_internal_alloc): New.
11220 (class vrange_obstack_alloc): New.
11221 (class vrange_ggc_alloc): New.
11222 (vrange_allocator::vrange_allocator): New.
11223 (vrange_allocator::~vrange_allocator): New.
11224 (vrange_storage::alloc_slot): New.
11225 (vrange_allocator::alloc): New.
11226 (vrange_allocator::free): New.
11227 (vrange_allocator::clone): New.
11228 (vrange_allocator::clone_varying): New.
11229 (vrange_allocator::clone_undefined): New.
11230 (vrange_storage::alloc): New.
11231 (vrange_storage::set_vrange): Remove slot argument.
11232 (vrange_storage::get_vrange): Same.
11233 (vrange_storage::fits_p): Same.
11234 (vrange_storage::equal_p): New.
11235 (irange_storage::write_lengths_address): New.
11236 (irange_storage::lengths_address): New.
11237 (irange_storage_slot::alloc_slot): Remove.
11238 (irange_storage::alloc): New.
11239 (irange_storage_slot::irange_storage_slot): Remove.
11240 (irange_storage::irange_storage): New.
11241 (write_wide_int): New.
11242 (irange_storage_slot::set_irange): Remove.
11243 (irange_storage::set_irange): New.
11244 (read_wide_int): New.
11245 (irange_storage_slot::get_irange): Remove.
11246 (irange_storage::get_irange): New.
11247 (irange_storage_slot::size): Remove.
11248 (irange_storage::equal_p): New.
11249 (irange_storage_slot::num_wide_ints_needed): Remove.
11250 (irange_storage::size): New.
11251 (irange_storage_slot::fits_p): Remove.
11252 (irange_storage::fits_p): New.
11253 (irange_storage_slot::dump): Remove.
11254 (irange_storage::dump): New.
11255 (frange_storage_slot::alloc_slot): Remove.
11256 (frange_storage::alloc): New.
11257 (frange_storage_slot::set_frange): Remove.
11258 (frange_storage::set_frange): New.
11259 (frange_storage_slot::get_frange): Remove.
11260 (frange_storage::get_frange): New.
11261 (frange_storage_slot::fits_p): Remove.
11262 (frange_storage::equal_p): New.
11263 (frange_storage::fits_p): New.
11264 (ggc_vrange_allocator): New.
11265 (ggc_alloc_vrange_storage): New.
11266 * value-range-storage.h (class vrange_storage): Rewrite.
11267 (class irange_storage): Rewrite.
11268 (class frange_storage): Rewrite.
11269 (class obstack_vrange_allocator): Remove.
11270 (class ggc_vrange_allocator): Remove.
11271 (vrange_allocator::alloc_vrange): Remove.
11272 (vrange_allocator::alloc_irange): Remove.
11273 (vrange_allocator::alloc_frange): Remove.
11274 (ggc_alloc_vrange_storage): New.
11275 * value-range.h (class irange): Rename vrange_allocator to
11277 (class frange): Same.
11279 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
11281 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
11282 inc to avoid clobbering the carry flag.
11284 2023-04-30 Andrew Pinski <apinski@marvell.com>
11286 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
11287 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
11289 2023-04-30 Andrew Pinski <apinski@marvell.com>
11291 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
11292 Allow some builtin/internal function calls which
11293 are known not to trap/throw.
11294 (phiopt_worker::match_simplify_replacement):
11295 Use name instead of getting the lhs again.
11297 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
11299 * configure: Regenerate.
11300 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
11302 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
11304 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
11305 emit_insn_if_valid_for_reload.
11306 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
11307 to be recognized, also try emitting a parallel that clobbers
11308 TARGET_FLAGS_REGNUM, as applicable.
11310 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
11312 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
11314 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
11315 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
11317 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
11319 * config/stormy16/stormy16.md (any_lshift): New code iterator.
11320 (any_or_plus): Likewise.
11321 (any_rotate): Likewise.
11322 (*<any_lshift>_and_internal): New define_insn_and_split to
11323 recognize a logical shift followed by an AND, and split it
11324 again after reload.
11325 (*swpn): New define_insn matching xstormy16's swpn.
11326 (*swpn_zext): New define_insn recognizing swpn followed by
11327 zero_extendqihi2, i.e. with the high byte set to zero.
11328 (*swpn_sext): Likewise, for swpn followed by cbw.
11329 (*swpn_sext_2): Likewise, for an alternate RTL form.
11330 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
11331 sequence is split in the correct place to recognize the *swpn_zext
11332 followed by any_or_plus (ior, xor or plus) instruction.
11334 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
11337 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
11338 (lm32-*-uclinux*): Likewise.
11340 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
11342 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
11343 for riscv_use_save_libcall.
11344 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
11345 (riscv_compute_frame_info): restructure to decouple stack allocation
11346 for rv32e w/o save-restore.
11348 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
11350 * doc/install.texi: Fix documentation typo
11352 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
11354 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
11355 (u): Add div/udiv cases.
11356 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
11357 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
11359 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
11360 (thead_c906_tune_info): Likewise.
11361 (optimize_size_tune_info): Likewise.
11362 (riscv_use_divmod_expander): New function.
11363 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
11365 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
11367 * config/riscv/bitmanip.md: Added clmulr instruction.
11368 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
11369 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
11371 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
11372 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
11373 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
11374 functions to riscv-cmo.def.
11375 * config/riscv/generic.md: Add clmul to list of instructions
11376 using the generic_imul reservation.
11378 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
11380 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
11382 2023-04-28 Andrew Pinski <apinski@marvell.com>
11384 PR tree-optimization/100958
11385 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
11386 (pass_phiopt::execute): Don't call two_value_replacement.
11387 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
11388 handle what two_value_replacement did.
11390 2023-04-28 Andrew Pinski <apinski@marvell.com>
11392 * match.pd: Add patterns for
11393 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
11395 2023-04-28 Andrew Pinski <apinski@marvell.com>
11397 * match.pd: Factor out the deciding the min/max from
11398 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
11400 * fold-const.cc (minmax_from_comparison): this new function.
11401 * fold-const.h (minmax_from_comparison): New prototype.
11403 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
11405 PR rtl-optimization/109476
11406 * lower-subreg.cc: Include explow.h for force_reg.
11407 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
11408 If decomposing a suitable LSHIFTRT and we're not splitting
11409 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
11410 instead of setting a high part SUBREG to zero, which helps combine.
11411 (decompose_multiword_subregs): Update call to resolve_shift_zext.
11413 2023-04-28 Richard Biener <rguenther@suse.de>
11415 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
11417 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
11418 gather-scatter info and cost emulated scatters accordingly.
11419 (get_load_store_type): Support emulated scatters.
11420 (vectorizable_store): Likewise. Emulate them by extracting
11421 scalar offsets and data, doing scalar stores.
11423 2023-04-28 Richard Biener <rguenther@suse.de>
11425 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
11426 Tame down element extracts and scalar loads for gather/scatter
11427 similar to elementwise strided accesses.
11429 2023-04-28 Pan Li <pan2.li@intel.com>
11430 kito-cheng <kito.cheng@sifive.com>
11432 * config/riscv/vector.md: Add new define split to perform
11433 the simplification.
11435 2023-04-28 Richard Biener <rguenther@suse.de>
11438 * ipa-param-manipulation.cc
11439 (ipa_param_body_adjustments::modify_expression): Allow
11440 conversion of a register to a non-register type. Elide
11441 conversions inside BIT_FIELD_REFs.
11443 2023-04-28 Richard Biener <rguenther@suse.de>
11445 PR tree-optimization/109644
11446 * tree-cfg.cc (verify_types_in_gimple_reference): Check
11447 register constraints on the outermost VIEW_CONVERT_EXPR
11448 only. Do not allow register or invariant bases on
11449 multi-level or possibly variable index handled components.
11451 2023-04-28 Richard Biener <rguenther@suse.de>
11453 * gimplify.cc (gimplify_compound_lval): When there's a
11454 non-register type produced by one of the handled component
11455 operations make sure we get a non-register base.
11457 2023-04-28 Richard Biener <rguenther@suse.de>
11459 PR tree-optimization/108752
11460 * tree-vect-generic.cc (build_replicated_const): Rename
11461 to build_replicated_int_cst and move to tree.{h,cc}.
11462 (do_plus_minus): Adjust.
11463 (do_negate): Likewise.
11464 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
11465 arithmetic vector operations in lowered form.
11466 * tree.h (build_replicated_int_cst): Declare.
11467 * tree.cc (build_replicated_int_cst): Moved from
11468 tree-vect-generic.cc build_replicated_const.
11470 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11473 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
11474 (aarch64_rbit<mode><vczle><vczbe>): ... This.
11475 (neg<mode>2): Rename to...
11476 (neg<mode>2<vczle><vczbe>): ... This.
11477 (abs<mode>2): Rename to...
11478 (abs<mode>2<vczle><vczbe>): ... This.
11479 (aarch64_abs<mode>): Rename to...
11480 (aarch64_abs<mode><vczle><vczbe>): ... This.
11481 (one_cmpl<mode>2): Rename to...
11482 (one_cmpl<mode>2<vczle><vczbe>): ... This.
11483 (clrsb<mode>2): Rename to...
11484 (clrsb<mode>2<vczle><vczbe>): ... This.
11485 (clz<mode>2): Rename to...
11486 (clz<mode>2<vczle><vczbe>): ... This.
11487 (popcount<mode>2): Rename to...
11488 (popcount<mode>2<vczle><vczbe>): ... This.
11490 2023-04-28 Jakub Jelinek <jakub@redhat.com>
11492 * gimple-range-op.cc (class cfn_sqrt): New type.
11493 (op_cfn_sqrt): New variable.
11494 (gimple_range_op_handler::maybe_builtin_call): Handle
11495 CASE_CFN_SQRT{,_FN}.
11497 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
11498 Jakub Jelinek <jakub@redhat.com>
11500 * value-range.h (frange_nextafter): Declare.
11501 * gimple-range-op.cc (class cfn_sincos): New.
11502 (op_cfn_sin, op_cfn_cos): New variables.
11503 (gimple_range_op_handler::maybe_builtin_call): Handle
11504 CASE_CFN_{SIN,COS}{,_FN}.
11506 2023-04-28 Jakub Jelinek <jakub@redhat.com>
11508 * target.def (libm_function_max_error): New target hook.
11509 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
11510 * doc/tm.texi: Regenerated.
11511 * targhooks.h (default_libm_function_max_error,
11512 glibc_linux_libm_function_max_error): Declare.
11513 * targhooks.cc: Include case-cfn-macros.h.
11514 (default_libm_function_max_error,
11515 glibc_linux_libm_function_max_error): New functions.
11516 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11517 * config/linux-protos.h (linux_libm_function_max_error): Declare.
11518 * config/linux.cc: Include target.h and targhooks.h.
11519 (linux_libm_function_max_error): New function.
11520 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
11521 (arc_libm_function_max_error): New function.
11522 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11523 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
11524 (ix86_libm_function_max_error): New function.
11525 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11526 * config/rs6000/rs6000-protos.h
11527 (rs6000_linux_libm_function_max_error): Declare.
11528 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
11529 and case-cfn-macros.h.
11530 (rs6000_linux_libm_function_max_error): New function.
11531 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11532 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11533 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
11534 (or1k_libm_function_max_error): New function.
11535 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11537 2023-04-28 Alexandre Oliva <oliva@adacore.com>
11539 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
11540 Move detach value calls...
11541 (pass_harden_conditional_branches::execute): ... here.
11542 (pass_harden_compares::execute): Detach values before
11545 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
11547 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
11548 (cml<addsub_as><mode>4): Likewise.
11549 (vec_addsub<mode>3): Likewise.
11550 (cadd<rot><mode>3): Likewise.
11551 (vec_fmaddsub<mode>4): Likewise.
11552 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
11554 2023-04-27 Andrew Pinski <apinski@marvell.com>
11556 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
11557 up to 2 min/max expressions in the sequence/match code.
11559 2023-04-27 Andrew Pinski <apinski@marvell.com>
11561 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
11563 * tree-eh.cc (operation_could_trap_helper_p): Treate
11564 MIN_EXPR/MAX_EXPR similar as other comparisons.
11566 2023-04-27 Andrew Pinski <apinski@marvell.com>
11568 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
11570 (cond_if_else_store_replacement): Likewise.
11571 (get_non_trapping): Likewise.
11572 (store_elim_worker): Move into ...
11573 (pass_cselim::execute): This.
11575 2023-04-27 Andrew Pinski <apinski@marvell.com>
11577 * tree-ssa-phiopt.cc (two_value_replacement): Remove
11579 (match_simplify_replacement): Likewise.
11580 (factor_out_conditional_conversion): Likewise.
11581 (value_replacement): Likewise.
11582 (minmax_replacement): Likewise.
11583 (spaceship_replacement): Likewise.
11584 (cond_removal_in_builtin_zero_pattern): Likewise.
11585 (hoist_adjacent_loads): Likewise.
11586 (tree_ssa_phiopt_worker): Move into ...
11587 (pass_phiopt::execute): this.
11589 2023-04-27 Andrew Pinski <apinski@marvell.com>
11591 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
11592 do_store_elim argument and split that part out to ...
11593 (store_elim_worker): This new function.
11594 (pass_cselim::execute): Call store_elim_worker.
11595 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
11597 2023-04-27 Jan Hubicka <jh@suse.cz>
11599 * cfgloopmanip.h (unloop_loops): Export.
11600 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
11601 that no longer loop.
11602 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
11603 vectors of loops to unloop.
11604 (canonicalize_induction_variables): Free vectors here.
11605 (tree_unroll_loops_completely): Free vectors here.
11607 2023-04-27 Richard Biener <rguenther@suse.de>
11609 PR tree-optimization/109170
11610 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
11611 Handle __builtin_expect and similar via cfn_pass_through_arg1
11612 and inspecting the calls fnspec.
11613 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
11614 and BUILT_IN_EXPECT_WITH_PROBABILITY.
11616 2023-04-27 Alexandre Oliva <oliva@adacore.com>
11618 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
11620 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
11622 PR tree-optimization/109639
11623 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
11624 (propagate_vr_across_jump_function): Same.
11625 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
11626 * ipa-prop.h (ipa_range_set_and_normalize): New.
11627 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
11629 2023-04-27 Richard Biener <rguenther@suse.de>
11631 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
11632 create a CTOR operand in the result when simplifying GIMPLE.
11634 2023-04-27 Richard Biener <rguenther@suse.de>
11636 * gimplify.cc (gimplify_compound_lval): When the base
11637 gimplified to a register make sure to split up chains
11640 2023-04-27 Richard Biener <rguenther@suse.de>
11643 * ipa-param-manipulation.h
11644 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
11646 * ipa-param-manipulation.cc
11647 (ipa_param_body_adjustments::modify_expression): Likewise.
11648 When we need a conversion and the replacement is a register
11649 split the conversion out.
11650 (ipa_param_body_adjustments::modify_assignment): Pass
11651 extra_stmts to RHS modify_expression.
11653 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
11655 * doc/extend.texi (Zero Length): Describe example.
11657 2023-04-27 Richard Biener <rguenther@suse.de>
11659 PR tree-optimization/109594
11660 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
11661 what we rewrite to a register based on the above.
11663 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
11665 * config/riscv/riscv.cc: Fix whitespace.
11666 * config/riscv/sync.md: Fix whitespace.
11668 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11670 PR tree-optimization/108697
11671 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
11672 not clear the vector on an out of range query.
11673 (ssa_cache::dump): Use dump_range_query instead of get_range.
11674 (ssa_cache::dump_range_query): New.
11675 (ssa_lazy_cache::dump_range_query): New.
11676 (ssa_lazy_cache::set_range): New.
11677 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
11678 (class ssa_lazy_cache): New.
11679 (ssa_lazy_cache::ssa_lazy_cache): New.
11680 (ssa_lazy_cache::~ssa_lazy_cache): New.
11681 (ssa_lazy_cache::get_range): New.
11682 (ssa_lazy_cache::clear_range): New.
11683 (ssa_lazy_cache::clear): New.
11684 (ssa_lazy_cache::dump): New.
11685 * gimple-range-path.cc (path_range_query::path_range_query): Do
11686 not allocate a ssa_cache object nor has_cache bitmap.
11687 (path_range_query::~path_range_query): Do not free objects.
11688 (path_range_query::clear_cache): Remove.
11689 (path_range_query::get_cache): Adjust.
11690 (path_range_query::set_cache): Remove.
11691 (path_range_query::dump): Don't call through a pointer.
11692 (path_range_query::internal_range_of_expr): Set cache directly.
11693 (path_range_query::reset_path): Clear cache directly.
11694 (path_range_query::ssa_range_in_phi): Fold with globals only.
11695 (path_range_query::compute_ranges_in_phis): Simply set range.
11696 (path_range_query::compute_ranges_in_block): Call cache directly.
11697 * gimple-range-path.h (class path_range_query): Replace bitmap
11698 and cache pointer with lazy cache object.
11699 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
11701 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11703 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
11704 (ssa_cache::~ssa_cache): Rename.
11705 (ssa_cache::has_range): New.
11706 (ssa_cache::get_range): Rename.
11707 (ssa_cache::set_range): Rename.
11708 (ssa_cache::clear_range): Rename.
11709 (ssa_cache::clear): Rename.
11710 (ssa_cache::dump): Rename and use get_range.
11711 (ranger_cache::get_global_range): Use get_range and set_range.
11712 (ranger_cache::range_of_def): Use get_range.
11713 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
11714 (class ranger_cache): Use ssa_cache.
11715 * gimple-range-path.cc (path_range_query::path_range_query): Use
11717 (path_range_query::get_cache): Use get_range.
11718 (path_range_query::set_cache): Use set_range.
11719 * gimple-range-path.h (class path_range_query): Use ssa_cache.
11720 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
11721 (assume_query::range_of_expr): Use get_range.
11722 (assume_query::assume_query): Use set_range.
11723 (assume_query::calculate_op): Use get_range and set_range.
11724 * gimple-range.h (class assume_query): Use ssa_cache.
11726 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11728 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
11729 and local to optionally zero memory.
11730 (br_vector::grow): Only zero memory if flag is set.
11731 (class sbr_lazy_vector): New.
11732 (sbr_lazy_vector::sbr_lazy_vector): New.
11733 (sbr_lazy_vector::set_bb_range): New.
11734 (sbr_lazy_vector::get_bb_range): New.
11735 (sbr_lazy_vector::bb_range_p): New.
11736 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
11737 * gimple-range-gori.cc (gori_map::calculate_gori): Use
11738 param_vrp_switch_limit.
11739 (gori_compute::gori_compute): Use param_vrp_switch_limit.
11740 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
11741 (vrp_switch_limit): Rename from evrp_switch_limit.
11742 (vrp_vector_threshold): New.
11744 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11746 * value-relation.cc (dom_oracle::query_relation): Check early for lack
11748 * value-relation.h (equiv_oracle::has_equiv_p): New.
11750 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11752 PR tree-optimization/109417
11753 * gimple-range-gori.cc (range_def_chain::register_dependency):
11754 Save the ssa version number, not the pointer.
11755 (gori_compute::may_recompute_p): No need to check if a dependency
11756 is in the free list.
11757 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
11758 fields to be unsigned int instead of trees.
11759 (ange_def_chain::depend1): Adjust.
11760 (ange_def_chain::depend2): Adjust.
11761 * gimple-range.h: Include "ssa.h" to inline ssa_name().
11763 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
11765 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
11766 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
11767 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
11769 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
11772 * config/riscv/riscv-protos.h: Add helper function stubs.
11773 * config/riscv/riscv.cc: Add helper functions for subword masking.
11774 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
11775 -mno-inline-atomics.
11776 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
11777 fetch_and_nand, CAS, and exchange ops.
11778 * doc/invoke.texi: Add blurb regarding new command-line flags
11779 -minline-atomics and -mno-inline-atomics.
11781 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11783 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
11784 Reimplement using standard RTL codes instead of unspec.
11785 (aarch64_rshrn2<mode>_insn_be): Likewise.
11786 (aarch64_rshrn2<mode>): Adjust for the above.
11787 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
11789 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11791 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
11792 with standard RTL codes instead of an UNSPEC.
11793 (aarch64_rshrn<mode>_insn_be): Likewise.
11794 (aarch64_rshrn<mode>): Adjust for the above.
11795 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
11797 2023-04-26 Pan Li <pan2.li@intel.com>
11798 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11800 * config/riscv/riscv.cc (riscv_classify_address): Allow
11801 const0_rtx for the RVV load/store.
11803 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11805 * range-op.cc (range_op_cast_tests): Remove legacy support.
11806 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
11807 * value-range.cc (irange::operator=): Same.
11808 (get_legacy_range): Same.
11809 (irange::copy_legacy_to_multi_range): Delete.
11810 (irange::copy_to_legacy): Delete.
11811 (irange::irange_set_anti_range): Delete.
11812 (irange::set): Remove legacy support.
11813 (irange::verify_range): Same.
11814 (irange::legacy_lower_bound): Delete.
11815 (irange::legacy_upper_bound): Delete.
11816 (irange::legacy_equal_p): Delete.
11817 (irange::operator==): Remove legacy support.
11818 (irange::singleton_p): Same.
11819 (irange::value_inside_range): Same.
11820 (irange::contains_p): Same.
11821 (intersect_ranges): Delete.
11822 (irange::legacy_intersect): Delete.
11823 (union_ranges): Delete.
11824 (irange::legacy_union): Delete.
11825 (irange::legacy_verbose_union_): Delete.
11826 (irange::legacy_verbose_intersect): Delete.
11827 (irange::irange_union): Remove legacy support.
11828 (irange::irange_intersect): Same.
11829 (irange::intersect): Same.
11830 (irange::invert): Same.
11831 (ranges_from_anti_range): Delete.
11832 (gt_pch_nx): Adjust for legacy removal.
11834 (range_tests_legacy): Delete.
11835 (range_tests_misc): Adjust for legacy removal.
11836 (range_tests): Same.
11837 * value-range.h (class irange): Same.
11838 (irange::legacy_mode_p): Delete.
11839 (ranges_from_anti_range): Delete.
11840 (irange::nonzero_p): Adjust for legacy removal.
11841 (irange::lower_bound): Same.
11842 (irange::upper_bound): Same.
11843 (irange::union_): Same.
11844 (irange::intersect): Same.
11845 (irange::set_nonzero): Same.
11846 (irange::set_zero): Same.
11847 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
11849 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11851 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
11852 of range_has_numeric_bounds_p with irange API.
11853 (range_has_numeric_bounds_p): Delete.
11854 * value-range.h (range_has_numeric_bounds_p): Delete.
11856 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11858 * tree-data-ref.cc (compute_distributive_range): Replace uses of
11859 range_int_cst_p with irange API.
11860 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
11861 * tree-vrp.h (range_int_cst_p): Delete.
11862 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
11863 range_int_cst_p with irange API.
11864 (vr_set_zero_nonzero_bits): Same.
11865 (range_fits_type_p): Same.
11866 (simplify_using_ranges::simplify_casted_cond): Same.
11867 * tree-vrp.cc (range_int_cst_p): Remove.
11869 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11871 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
11873 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11875 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
11876 API uses to new API.
11877 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
11878 * internal-fn.cc (get_min_precision): Same.
11880 * tree-affine.cc (expr_to_aff_combination): Same.
11881 * tree-data-ref.cc (dr_step_indicator): Same.
11882 * tree-dfa.cc (get_ref_base_and_extent): Same.
11883 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
11884 * tree-ssa-phiopt.cc (two_value_replacement): Same.
11885 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
11886 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
11887 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
11888 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
11889 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
11890 * tree.cc (get_range_pos_neg): Same.
11892 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11894 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
11895 vrange::dump instead of ad-hoc dumper.
11896 * tree-ssa-strlen.cc (dump_strlen_info): Same.
11897 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
11900 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11902 * range-op.cc (operator_cast::op1_range): Use
11903 create_possibly_reversed_range.
11904 (operator_bitwise_and::simple_op1_range_solver): Same.
11905 * value-range.cc (swap_out_of_order_endpoints): Delete.
11906 (irange::set): Remove call to swap_out_of_order_endpoints.
11908 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11910 * builtins.cc (determine_block_size): Convert use of legacy API to
11912 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
11913 (array_bounds_checker::check_array_ref): Same.
11914 * gimple-ssa-warn-restrict.cc
11915 (builtin_memref::extend_offset_range): Same.
11916 * ipa-cp.cc (ipcp_store_vr_results): Same.
11917 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
11918 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
11919 (ipa_write_jump_function): Same.
11920 * pointer-query.cc (get_size_range): Same.
11921 * tree-data-ref.cc (split_constant_offset): Same.
11922 * tree-ssa-strlen.cc (get_range): Same.
11923 (maybe_diag_stxncpy_trunc): Same.
11924 (strlen_pass::get_len_or_size): Same.
11925 (strlen_pass::count_nonzero_bytes_addr): Same.
11926 * tree-vect-patterns.cc (vect_get_range_info): Same.
11927 * value-range.cc (irange::maybe_anti_range): Remove.
11928 (get_legacy_range): New.
11929 (irange::copy_to_legacy): Use get_legacy_range.
11930 (ranges_from_anti_range): Same.
11931 * value-range.h (class irange): Remove maybe_anti_range.
11932 (get_legacy_range): New.
11933 * vr-values.cc (check_for_binary_op_overflow): Convert use of
11934 legacy API to get_legacy_range.
11935 (compare_ranges): Same.
11936 (compare_range_with_value): Same.
11937 (bounds_of_var_in_loop): Same.
11938 (find_case_label_ranges): Same.
11939 (simplify_using_ranges::simplify_switch_using_ranges): Same.
11941 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11943 * value-range-pretty-print.cc (vrange_printer::visit): Remove
11945 * value-range.cc (irange::constant_p): Remove.
11946 (irange::get_nonzero_bits_from_range): Remove constant_p use.
11947 * value-range.h (class irange): Remove constant_p.
11948 (irange::num_pairs): Remove constant_p use.
11950 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11952 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
11954 (irange::set): Same.
11955 (irange::legacy_lower_bound): Same.
11956 (irange::legacy_upper_bound): Same.
11957 (irange::contains_p): Same.
11958 (range_tests_legacy): Same.
11959 (irange::normalize_addresses): Remove.
11960 (irange::normalize_symbolics): Remove.
11961 (irange::symbolic_p): Remove.
11962 * value-range.h (class irange): Remove symbolic_p,
11963 normalize_symbolics, and normalize_addresses.
11964 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
11965 Remove symbolics support.
11967 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11969 * value-range.cc (irange::may_contain_p): Remove.
11970 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
11971 usage with contains_p.
11972 * vr-values.cc (compare_range_with_value): Same.
11974 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11976 * tree-vrp.cc (supported_types_p): Remove.
11977 (defined_ranges_p): Remove.
11978 (range_fold_binary_expr): Remove.
11979 (range_fold_unary_expr): Remove.
11980 * tree-vrp.h (range_fold_unary_expr): Remove.
11981 (range_fold_binary_expr): Remove.
11983 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11985 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
11986 (ipa_value_range_from_jfunc): Same.
11987 (propagate_vr_across_jump_function): Same.
11988 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
11989 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
11990 * vr-values.cc (bounds_of_var_in_loop): Same.
11992 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11994 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
11995 Add irange argument.
11996 (check_out_of_bounds_and_warn): Remove check for vr.
11997 (array_bounds_checker::check_array_ref): Remove pointer qualifier
11998 for vr and adjust accordingly.
11999 * gimple-array-bounds.h (get_value_range): Add irange argument.
12000 * value-query.cc (class equiv_allocator): Delete.
12001 (range_query::get_value_range): Delete.
12002 (range_query::range_query): Remove allocator access.
12003 (range_query::~range_query): Same.
12004 * value-query.h (get_value_range): Delete.
12006 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
12007 call to get_value_range.
12008 (check_for_binary_op_overflow): Same.
12009 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12010 (simplify_using_ranges::simplify_abs_using_ranges): Same.
12011 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
12012 (simplify_using_ranges::simplify_casted_cond): Same.
12013 (simplify_using_ranges::simplify_switch_using_ranges): Same.
12014 (simplify_using_ranges::two_valued_val_range_p): Same.
12016 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12019 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
12021 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
12022 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
12023 (simplify_using_ranges::legacy_fold_cond): ...this.
12024 (simplify_using_ranges::fold_cond): Rename
12025 vrp_evaluate_conditional_warnv_with_ops to
12026 legacy_fold_cond_overflow.
12027 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
12028 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
12029 legacy_fold_cond_overflow respectively.
12031 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12033 * vr-values.cc (get_vr_for_comparison): Remove.
12034 (compare_name_with_value): Same.
12035 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
12036 compare_name_with_value.
12037 * vr-values.h: Remove compare_name_with_value.
12038 Remove get_vr_for_comparison.
12040 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
12042 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
12043 (bswapsi2): New define_insn.
12044 (swaphi): New define_insn to exchange two registers (swpw).
12045 (define_peephole2): Recognize exchange of registers as swaphi.
12047 2023-04-26 Richard Biener <rguenther@suse.de>
12049 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
12051 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
12052 * predict.cc (apply_return_prediction): Likewise.
12053 * sese.cc (set_ifsese_condition): Likewise. Simplify.
12054 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
12055 (make_edges_bb): Likewise.
12056 (make_cond_expr_edges): Likewise.
12057 (end_recording_case_labels): Likewise.
12058 (make_gimple_asm_edges): Likewise.
12059 (cleanup_dead_labels): Likewise.
12060 (group_case_labels): Likewise.
12061 (gimple_can_merge_blocks_p): Likewise.
12062 (gimple_merge_blocks): Likewise.
12063 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
12064 (gimple_duplicate_sese_tail): Avoid last_stmt.
12065 (find_loop_dist_alias): Likewise.
12066 (gimple_block_ends_with_condjump_p): Likewise.
12067 (gimple_purge_dead_eh_edges): Likewise.
12068 (gimple_purge_dead_abnormal_call_edges): Likewise.
12069 (pass_warn_function_return::execute): Likewise.
12070 (execute_fixup_cfg): Likewise.
12071 * tree-eh.cc (redirect_eh_edge_1): Likewise.
12072 (pass_lower_resx::execute): Likewise.
12073 (pass_lower_eh_dispatch::execute): Likewise.
12074 (cleanup_empty_eh): Likewise.
12075 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
12076 (predicate_bbs): Likewise.
12077 (ifcvt_split_critical_edges): Likewise.
12078 * tree-loop-distribution.cc (create_edge_for_control_dependence):
12080 (loop_distribution::transform_reduction_loop): Likewise.
12081 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
12082 (try_transform_to_exit_first_loop_alt): Likewise.
12083 (transform_to_exit_first_loop): Likewise.
12084 (create_parallel_loop): Likewise.
12085 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
12086 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
12087 (eliminate_unnecessary_stmts): Likewise.
12089 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
12091 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
12092 (pass_tree_ifcombine::execute): Likewise.
12093 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
12094 (should_duplicate_loop_header_p): Likewise.
12095 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
12096 (tree_estimate_loop_size): Likewise.
12097 (try_unroll_loop_completely): Likewise.
12098 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
12099 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
12100 (canonicalize_loop_ivs): Likewise.
12101 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
12102 (bound_difference): Likewise.
12103 (number_of_iterations_popcount): Likewise.
12104 (number_of_iterations_cltz): Likewise.
12105 (number_of_iterations_cltz_complement): Likewise.
12106 (simplify_using_initial_conditions): Likewise.
12107 (number_of_iterations_exit_assumptions): Likewise.
12108 (loop_niter_by_eval): Likewise.
12109 (estimate_numbers_of_iterations): Likewise.
12111 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12113 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
12115 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
12118 * config/rs6000/rs6000-builtins.def
12119 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
12120 __builtin_vsx_scalar_cmp_exp_qp_lt,
12121 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
12124 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
12127 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
12128 easy_vector_constant with const_vector_each_byte_same, add
12129 handlings in preparation for !easy_vector_constant, and update
12130 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
12131 * config/rs6000/predicates.md (const_vector_each_byte_same): New
12134 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12136 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
12137 (*pred_ltge<mode>_merge_tie_mask): Ditto.
12138 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
12139 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
12140 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
12141 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
12142 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
12144 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12146 * config/riscv/vector.md: Fix redundant vmv1r.v.
12148 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12150 * config/riscv/vector.md: Fix RA constraint.
12152 2023-04-26 Pan Li <pan2.li@intel.com>
12155 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
12156 check for vn_reference equal.
12158 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12160 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
12161 auto-vectorization preference.
12162 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
12163 auto-vectorization.
12164 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
12166 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12168 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
12169 and bclridisi_nottwobits patterns.
12170 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
12171 predicate to avoid splitting arith constants.
12172 (const_nottwobits_not_arith_operand): New predicate.
12174 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
12176 * recog.cc (peep2_attempt, peep2_update_life): Correct
12177 head-comment description of parameter match_len.
12179 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
12181 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
12182 riscv_split_symbol() drop in_splitter arg.
12183 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
12184 riscv_split_symbol() drop in_splitter arg.
12185 riscv_force_temporary() drop in_splitter arg.
12186 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
12187 riscv_split_symbol() drop in_splitter arg.
12189 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
12191 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
12192 superfluous debug temporaries for single GIMPLE assignments.
12194 2023-04-25 Richard Biener <rguenther@suse.de>
12196 PR tree-optimization/109609
12197 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
12199 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
12200 the size given by arg_max_access_size_given_by_arg_p as
12201 maximum, not exact, size.
12203 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12206 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
12207 (orn<mode>3<vczle><vczbe>): ... This.
12208 (bic<mode>3): Rename to...
12209 (bic<mode>3<vczle><vczbe>): ... This.
12210 (<su><maxmin><mode>3): Rename to...
12211 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
12213 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12215 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
12216 * config/aarch64/iterators.md (VQDIV): New mode iterator.
12217 (vnx2di): New mode attribute.
12219 2023-04-25 Richard Biener <rguenther@suse.de>
12221 PR rtl-optimization/109585
12222 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
12224 2023-04-25 Jakub Jelinek <jakub@redhat.com>
12227 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
12228 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
12229 is larger than signed int maximum.
12231 2023-04-25 Martin Liska <mliska@suse.cz>
12233 * doc/gcov.texi: Document the new "calls" field and document
12234 the API bump. Mention also "block_ids" for lines.
12235 * gcov.cc (output_intermediate_json_line): Output info about
12236 calls and extend branches as well.
12237 (generate_results): Bump version to 2.
12238 (output_line_details): Use block ID instead of a non-sensual
12241 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
12243 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
12244 length attribute for the first (memory operand) alternative.
12246 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
12248 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
12249 * config/aarch64/constraints.md: Make "Umn" relaxed memory
12251 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
12253 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
12255 * value-range.cc (frange::set): Adjust constructor.
12256 * value-range.h (nan_state::nan_state): Replace default
12257 constructor with one taking an argument.
12259 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
12261 * ipa-cp.cc (ipa_range_contains_p): New.
12262 (decide_whether_version_node): Use it.
12264 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12266 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
12267 simplify two successive VEC_PERM_EXPRs with same VLA mask,
12268 where mask chooses elements in reverse order.
12270 2023-04-24 Andrew Pinski <apinski@marvell.com>
12272 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
12273 and support diamond shaped basic block form.
12274 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
12276 2023-04-24 Andrew Pinski <apinski@marvell.com>
12278 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12279 Instead of calling last_and_only_stmt, look for the last statement
12282 2023-04-24 Andrew Pinski <apinski@marvell.com>
12284 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12286 (match_simplify_replacement): Call
12287 empty_bb_or_one_feeding_into_p instead of doing it inline.
12289 2023-04-24 Andrew Pinski <apinski@marvell.com>
12291 PR tree-optimization/68894
12292 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
12293 continue for the do_hoist_loads diamond case.
12295 2023-04-24 Andrew Pinski <apinski@marvell.com>
12297 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
12298 code for better code readability.
12300 2023-04-24 Andrew Pinski <apinski@marvell.com>
12302 PR tree-optimization/109604
12303 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
12304 diamond form check from ...
12305 (minmax_replacement): Here.
12307 2023-04-24 Patrick Palka <ppalka@redhat.com>
12309 * tree.cc (strip_array_types): Don't define here.
12310 (is_typedef_decl): Don't define here.
12311 (typedef_variant_p): Don't define here.
12312 * tree.h (strip_array_types): Define here.
12313 (is_typedef_decl): Define here.
12314 (typedef_variant_p): Define here.
12316 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
12318 * doc/generic.texi (OpenMP): Add != to allowed
12319 conditions and state that vars can be unsigned.
12320 * tree.def (OMP_FOR): Likewise.
12322 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12324 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
12326 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12328 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
12329 Remove explicit Solaris 11 references.
12331 (Options specification, --with-gnu-as): as and gas always differ
12333 Remove /usr/ccs/bin reference.
12334 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
12335 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
12336 (*-*-solaris2*): ... here.
12337 Update bundled GCC versions.
12338 Don't refer to pre-built binaries.
12339 Remove /bin/sh warning.
12340 Update assembler, linker recommendations.
12341 Document GNAT bootstrap compiler.
12342 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
12343 (sparc64-*-solaris2*): Move content...
12344 (sparcv9-*-solaris2*): ...here.
12345 Add GDC for 64-bit bootstrap compilers.
12347 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12350 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
12352 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
12355 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12357 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
12358 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
12359 (aarch64_<su>abal2<mode>): New define_expand.
12360 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
12361 (aarch64_rtx_costs): Handle ABD rtxes.
12362 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
12363 * config/aarch64/iterators.md (ABAL2): Delete.
12364 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
12366 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12368 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
12369 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
12370 (<sur>sadv16qi): Rename to...
12371 (<su>sadv16qi): ... This. Adjust for the above.
12372 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
12373 (<su>sad<vsi2qi>): ... This. Adjust for the above.
12374 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
12375 * config/aarch64/iterators.md (ABAL): Delete.
12376 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
12378 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12380 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
12381 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
12382 (aarch64_<su>abdl2<mode>): New define_expand.
12383 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
12384 * config/aarch64/iterators.md (ABDL2): Delete.
12385 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
12387 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12389 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
12390 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
12392 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
12393 * config/aarch64/iterators.md (ABDL): Delete.
12394 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
12396 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12398 * config/aarch64/aarch64-simd.md
12399 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
12401 2023-04-24 Richard Biener <rguenther@suse.de>
12403 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
12405 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
12407 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
12408 (set_switch_stmt_execution_predicate): Likewise.
12409 (phi_result_unknown_predicate): Likewise.
12410 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
12411 (ipa_analyze_indirect_call_uses): Likewise.
12412 * predict.cc (predict_iv_comparison): Likewise.
12413 (predict_extra_loop_exits): Likewise.
12414 (predict_loops): Likewise.
12415 (tree_predict_by_opcode): Likewise.
12416 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
12418 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
12419 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
12420 (replace_phi_edge_with_variable): Likewise.
12421 (two_value_replacement): Likewise.
12422 (value_replacement): Likewise.
12423 (minmax_replacement): Likewise.
12424 (spaceship_replacement): Likewise.
12425 (cond_removal_in_builtin_zero_pattern): Likewise.
12426 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
12427 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
12428 (vn_phi_lookup): Likewise.
12429 (vn_phi_insert): Likewise.
12430 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
12431 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
12433 (back_threader_profitability::possibly_profitable_path_p):
12435 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
12437 * tree-switch-conversion.cc (pass_convert_switch::execute):
12439 (pass_lower_switch<O0>::execute): Likewise.
12440 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
12441 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
12442 * tree-vect-slp.cc (vect_slp_function): Likewise.
12443 * tree-vect-stmts.cc (cfun_returns): Likewise.
12444 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
12445 (vect_loop_dist_alias_call): Likewise.
12447 2023-04-24 Richard Biener <rguenther@suse.de>
12449 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
12451 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12453 * config/riscv/riscv-vsetvl.cc
12454 (vector_infos_manager::all_avail_in_compatible_p): New function.
12455 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
12456 * config/riscv/riscv-vsetvl.h: New function.
12458 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12460 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
12461 comment for cleanup_insns.
12463 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12465 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
12466 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
12467 with the fault first load property.
12469 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12471 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
12472 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
12474 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12477 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
12478 (aarch64_addp<mode><vczle><vczbe>): ... This.
12480 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12482 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
12483 provide reasonable values for common arithmetic operations and
12484 immediate operands (in several machine modes).
12486 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12488 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
12489 format specifier to output high_part register name of SImode reg.
12490 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
12491 (zero_extendqihi2): Fix lengths, consistent formatting and add
12492 "and Rx,#255" alternative, for documentation purposes.
12493 (zero_extendhisi2): New define_insn.
12495 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12497 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
12498 SImode shifts by two by performing a single bit SImode shift twice.
12500 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
12502 PR tree-optimization/109593
12503 * value-range.cc (frange::operator==): Handle NANs.
12505 2023-04-23 liuhongt <hongtao.liu@intel.com>
12507 PR rtl-optimization/108707
12508 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
12509 GENERAL_REGS when preferred reg_class is not known.
12511 2023-04-22 Andrew Pinski <apinski@marvell.com>
12513 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
12514 Change the code around slightly to move diamond
12515 handling for do_store_elim/do_hoist_loads out of
12518 2023-04-22 Andrew Pinski <apinski@marvell.com>
12520 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
12521 Remove check on empty_block_p.
12523 2023-04-22 Jakub Jelinek <jakub@redhat.com>
12525 PR bootstrap/109589
12526 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
12527 * realmpfr.h (class auto_mpfr): Likewise.
12529 2023-04-22 Jakub Jelinek <jakub@redhat.com>
12531 PR tree-optimization/109583
12532 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
12533 if vec_mode is not VECTOR_MODE_P.
12535 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
12536 Ondrej Kubanek <kubanek0ondrej@gmail.com>
12538 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
12539 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
12540 loop profile and bounds after header duplication.
12541 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
12542 Break out from try_peel_loop; fix handling of 0 iterations.
12543 (try_peel_loop): Use adjust_loop_info_after_peeling.
12545 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
12547 PR tree-optimization/109546
12548 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
12549 not fold conditions with ADDR_EXPR early.
12551 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12553 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
12554 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
12556 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
12557 (*aarch64_<optab><mode>3_zero): Define.
12558 (*aarch64_<optab><mode>3_cssc): Likewise.
12559 * config/aarch64/iterators.md (maxminand): New code attribute.
12561 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12564 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
12565 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
12567 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
12568 (aarch64_override_options_internal): Handle the above.
12569 (aarch64_output_load_tp): New function.
12570 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
12571 aarch64_output_load_tp.
12572 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
12573 (mtp=): New option.
12574 * doc/invoke.texi (AArch64 Options): Document -mtp=.
12576 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12579 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
12580 (add_vec_concat_subst_be): Likewise.
12583 (add<mode>3): Rename to...
12584 (add<mode>3<vczle><vczbe>): ... This.
12585 (sub<mode>3): Rename to...
12586 (sub<mode>3<vczle><vczbe>): ... This.
12587 (mul<mode>3): Rename to...
12588 (mul<mode>3<vczle><vczbe>): ... This.
12589 (and<mode>3): Rename to...
12590 (and<mode>3<vczle><vczbe>): ... This.
12591 (ior<mode>3): Rename to...
12592 (ior<mode>3<vczle><vczbe>): ... This.
12593 (xor<mode>3): Rename to...
12594 (xor<mode>3<vczle><vczbe>): ... This.
12595 * config/aarch64/iterators.md (VDZ): Define.
12597 2023-04-21 Patrick Palka <ppalka@redhat.com>
12599 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
12602 2023-04-21 Jan Hubicka <jh@suse.cz>
12604 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
12607 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
12609 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
12610 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
12612 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12614 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
12615 force_reg instead of copy_to_mode_reg.
12616 (aarch64_expand_vector_init): Likewise.
12618 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
12620 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
12621 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
12622 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
12623 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
12624 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
12625 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
12626 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
12627 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
12628 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
12629 * config/i386/predicates.md (index_register_operand):
12630 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
12631 * config/i386/i386.cc (ix86_legitimate_address_p): Use
12632 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
12633 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
12635 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12636 Ondrej Kubanek <kubanek0ondrej@gmail.com>
12638 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
12641 2023-04-21 Richard Biener <rguenther@suse.de>
12643 * is-a.h (safe_is_a): New.
12645 2023-04-21 Richard Biener <rguenther@suse.de>
12647 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
12648 (gphi_iterator::operator*): Likewise.
12650 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12651 Michal Jires <michal@jires.eu>
12653 * ipa-inline.cc (class inline_badness): New class.
12654 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
12656 (update_edge_key): Update.
12657 (lookup_recursive_calls): Likewise.
12658 (recursive_inlining): Likewise.
12659 (add_new_edges_to_heap): Likewise.
12660 (inline_small_functions): Likewise.
12662 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12664 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
12666 2023-04-21 Richard Biener <rguenther@suse.de>
12668 PR tree-optimization/109573
12669 * tree-vect-loop.cc (vectorizable_live_operation): Allow
12670 unhandled SSA copy as well. Demote assert to checking only.
12672 2023-04-21 Richard Biener <rguenther@suse.de>
12674 * df-core.cc (df_analyze): Compute RPO on the reverse graph
12675 for DF_BACKWARD problems.
12676 (loop_post_order_compute): Rename to ...
12677 (loop_rev_post_order_compute): ... this, compute a RPO.
12678 (loop_inverted_post_order_compute): Rename to ...
12679 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
12680 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
12681 problems, RPO on the inverted graph for DF_BACKWARD.
12683 2023-04-21 Richard Biener <rguenther@suse.de>
12685 * cfganal.h (inverted_rev_post_order_compute): Rename
12687 (inverted_post_order_compute): ... this. Add struct function
12688 argument, change allocation to a C array.
12689 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
12690 * lcm.cc (compute_antinout_edge): Adjust.
12691 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
12692 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
12693 * tree-ssa-pre.cc (compute_antic): Likewise.
12695 2023-04-21 Richard Biener <rguenther@suse.de>
12697 * df.h (df_d::postorder_inverted): Change back to int *,
12699 * df-core.cc (rest_of_handle_df_finish): Adjust.
12700 (df_analyze_1): Likewise.
12701 (df_analyze): For DF_FORWARD problems use RPO on the forward
12703 (loop_inverted_post_order_compute): Adjust API.
12704 (df_analyze_loop): Adjust.
12705 (df_get_n_blocks): Likewise.
12706 (df_get_postorder): Likewise.
12708 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12711 * config/riscv/riscv-vsetvl.cc
12712 (vector_infos_manager::all_empty_predecessor_p): New function.
12713 (pass_vsetvl::backward_demand_fusion): Ditto.
12714 * config/riscv/riscv-vsetvl.h: Ditto.
12716 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
12719 * config/riscv/generic.md: Change standard names to insn names.
12721 2023-04-21 Richard Biener <rguenther@suse.de>
12723 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
12724 (compute_laterin): Use RPO.
12725 (compute_available): Likewise.
12727 2023-04-21 Peng Fan <fanpeng@loongson.cn>
12729 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
12731 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12734 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
12735 (vector_insn_info::skip_avl_compatible_p): Ditto.
12736 (vector_insn_info::merge): Remove default value.
12737 (pass_vsetvl::compute_local_backward_infos): Ditto.
12738 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
12739 * config/riscv/riscv-vsetvl.h: Ditto.
12741 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
12743 * doc/extend.texi (Common Function Attributes): Remove duplicate
12746 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
12748 PR tree-optimization/109564
12749 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
12750 UNDEFINED range names when deciding if all PHI arguments are the same,
12752 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12754 PR tree-optimization/109011
12755 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
12756 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
12757 .CTZ (X) = PREC - .POPCOUNT (X | -X).
12759 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
12761 * lra-constraints.cc (match_reload): Exclude some hard regs for
12762 multi-reg inout reload pseudos used in asm in different mode.
12764 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
12766 * config/arm/arm.cc (thumb1_legitimate_address_p):
12767 Use VIRTUAL_REGISTER_P predicate.
12768 (arm_eliminable_register): Ditto.
12769 * config/avr/avr.md (push<mode>_1): Ditto.
12770 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
12771 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
12772 * config/i386/predicates.md (register_no_elim_operand): Ditto.
12773 * config/iq2000/predicates.md (call_insn_operand): Ditto.
12774 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
12776 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
12779 * config/i386/predicates.md (extract_operator): New predicate.
12780 * config/i386/i386.md (any_extract): Remove code iterator.
12781 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
12782 (*cmpqi_ext<mode>_1): Ditto.
12783 (*cmpqi_ext<mode>_2): Ditto.
12784 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
12785 (*cmpqi_ext<mode>_3): Ditto.
12786 (*cmpqi_ext<mode>_4): Ditto.
12787 (*extzvqi_mem_rex64): Ditto.
12789 (*insvqi_2): Ditto.
12790 (*extendqi<SWI24:mode>_ext_1): Ditto.
12791 (*addqi_ext<mode>_0): Ditto.
12792 (*addqi_ext<mode>_1): Ditto.
12793 (*addqi_ext<mode>_2): Ditto.
12794 (*subqi_ext<mode>_0): Ditto.
12795 (*subqi_ext<mode>_2): Ditto.
12796 (*testqi_ext<mode>_1): Ditto.
12797 (*testqi_ext<mode>_2): Ditto.
12798 (*andqi_ext<mode>_0): Ditto.
12799 (*andqi_ext<mode>_1): Ditto.
12800 (*andqi_ext<mode>_1_cc): Ditto.
12801 (*andqi_ext<mode>_2): Ditto.
12802 (*<any_or:code>qi_ext<mode>_0): Ditto.
12803 (*<any_or:code>qi_ext<mode>_1): Ditto.
12804 (*<any_or:code>qi_ext<mode>_2): Ditto.
12805 (*xorqi_ext<mode>_1_cc): Ditto.
12806 (*negqi_ext<mode>_2): Ditto.
12807 (*ashlqi_ext<mode>_2): Ditto.
12808 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
12810 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
12813 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
12814 <bitmanip_insn> as the type to allow for fine grained control of
12815 scheduling these insns.
12816 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
12818 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
12819 pcnt, signed and unsigned min/max.
12821 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12822 kito-cheng <kito.cheng@sifive.com>
12824 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
12826 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12827 kito-cheng <kito.cheng@sifive.com>
12830 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
12831 (pass_vsetvl::cleanup_insns): Fix bug.
12833 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
12835 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
12836 (ldexp<mode>3): Delete.
12837 (ldexp<mode>3<exec>): Change "B" to "A".
12839 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12840 Jonathan Wakely <jwakely@redhat.com>
12842 * tree.h (built_in_function_equal_p): New helper function.
12843 (fndecl_built_in_p): Turn into variadic template to support
12844 1 or more built_in_function arguments.
12845 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
12846 * gimplify.cc (goa_stabilize_expr): Likewise.
12847 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
12848 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
12849 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
12850 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
12851 cgraph_update_edges_for_call_stmt_node,
12852 cgraph_edge::verify_corresponds_to_fndecl,
12853 cgraph_node::verify_node): Likewise.
12854 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
12855 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
12856 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
12858 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12860 PR tree-optimization/109011
12861 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
12862 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
12863 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
12864 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
12865 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
12867 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
12869 2023-04-20 Richard Biener <rguenther@suse.de>
12871 * df-core.cc (rest_of_handle_df_initialize): Remove
12872 computation of df->postorder, df->postorder_inverted and
12875 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
12877 * common/config/i386/i386-common.cc
12878 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
12879 (ix86_handle_option): Set AVX flag for VAES.
12880 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
12881 Add OPTION_MASK_ISA2_VAES_UNSET.
12882 (def_builtin): Share builtin between AES and VAES.
12883 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
12885 * config/i386/i386.md (aes): New isa attribute.
12886 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
12887 (aesenclast): Ditto.
12889 (aesdeclast): Ditto.
12890 * config/i386/vaesintrin.h: Remove redundant avx target push.
12891 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
12892 (_mm_aesdeclast_si128): Ditto.
12893 (_mm_aesenc_si128): Ditto.
12894 (_mm_aesenclast_si128): Ditto.
12896 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
12898 * config/i386/avx2intrin.h
12899 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
12900 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
12901 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
12902 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
12903 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
12904 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
12905 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
12906 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
12907 (_mm_reduce_add_epi16): New instrinsics.
12908 (_mm_reduce_mul_epi16): Ditto.
12909 (_mm_reduce_and_epi16): Ditto.
12910 (_mm_reduce_or_epi16): Ditto.
12911 (_mm_reduce_max_epi16): Ditto.
12912 (_mm_reduce_max_epu16): Ditto.
12913 (_mm_reduce_min_epi16): Ditto.
12914 (_mm_reduce_min_epu16): Ditto.
12915 (_mm256_reduce_add_epi16): Ditto.
12916 (_mm256_reduce_mul_epi16): Ditto.
12917 (_mm256_reduce_and_epi16): Ditto.
12918 (_mm256_reduce_or_epi16): Ditto.
12919 (_mm256_reduce_max_epi16): Ditto.
12920 (_mm256_reduce_max_epu16): Ditto.
12921 (_mm256_reduce_min_epi16): Ditto.
12922 (_mm256_reduce_min_epu16): Ditto.
12923 (_mm_reduce_add_epi8): Ditto.
12924 (_mm_reduce_mul_epi8): Ditto.
12925 (_mm_reduce_and_epi8): Ditto.
12926 (_mm_reduce_or_epi8): Ditto.
12927 (_mm_reduce_max_epi8): Ditto.
12928 (_mm_reduce_max_epu8): Ditto.
12929 (_mm_reduce_min_epi8): Ditto.
12930 (_mm_reduce_min_epu8): Ditto.
12931 (_mm256_reduce_add_epi8): Ditto.
12932 (_mm256_reduce_mul_epi8): Ditto.
12933 (_mm256_reduce_and_epi8): Ditto.
12934 (_mm256_reduce_or_epi8): Ditto.
12935 (_mm256_reduce_max_epi8): Ditto.
12936 (_mm256_reduce_max_epu8): Ditto.
12937 (_mm256_reduce_min_epi8): Ditto.
12938 (_mm256_reduce_min_epu8): Ditto.
12939 * config/i386/avx512vlbwintrin.h:
12940 (_mm_mask_reduce_add_epi16): Ditto.
12941 (_mm_mask_reduce_mul_epi16): Ditto.
12942 (_mm_mask_reduce_and_epi16): Ditto.
12943 (_mm_mask_reduce_or_epi16): Ditto.
12944 (_mm_mask_reduce_max_epi16): Ditto.
12945 (_mm_mask_reduce_max_epu16): Ditto.
12946 (_mm_mask_reduce_min_epi16): Ditto.
12947 (_mm_mask_reduce_min_epu16): Ditto.
12948 (_mm256_mask_reduce_add_epi16): Ditto.
12949 (_mm256_mask_reduce_mul_epi16): Ditto.
12950 (_mm256_mask_reduce_and_epi16): Ditto.
12951 (_mm256_mask_reduce_or_epi16): Ditto.
12952 (_mm256_mask_reduce_max_epi16): Ditto.
12953 (_mm256_mask_reduce_max_epu16): Ditto.
12954 (_mm256_mask_reduce_min_epi16): Ditto.
12955 (_mm256_mask_reduce_min_epu16): Ditto.
12956 (_mm_mask_reduce_add_epi8): Ditto.
12957 (_mm_mask_reduce_mul_epi8): Ditto.
12958 (_mm_mask_reduce_and_epi8): Ditto.
12959 (_mm_mask_reduce_or_epi8): Ditto.
12960 (_mm_mask_reduce_max_epi8): Ditto.
12961 (_mm_mask_reduce_max_epu8): Ditto.
12962 (_mm_mask_reduce_min_epi8): Ditto.
12963 (_mm_mask_reduce_min_epu8): Ditto.
12964 (_mm256_mask_reduce_add_epi8): Ditto.
12965 (_mm256_mask_reduce_mul_epi8): Ditto.
12966 (_mm256_mask_reduce_and_epi8): Ditto.
12967 (_mm256_mask_reduce_or_epi8): Ditto.
12968 (_mm256_mask_reduce_max_epi8): Ditto.
12969 (_mm256_mask_reduce_max_epu8): Ditto.
12970 (_mm256_mask_reduce_min_epi8): Ditto.
12971 (_mm256_mask_reduce_min_epu8): Ditto.
12973 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
12975 * common/config/i386/i386-common.cc
12976 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
12977 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
12978 (OPTION_MASK_ISA_AVX_UNSET):
12979 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
12980 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
12981 * config/i386/i386.md (vpclmulqdqvl): New.
12982 * config/i386/sse.md (pclmulqdq): Add evex encoding.
12983 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
12986 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
12988 * config/i386/avx512vlbwintrin.h
12989 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
12990 (_mm_mask_blend_epi8): Ditto.
12991 (_mm256_mask_blend_epi16): Ditto.
12992 (_mm256_mask_blend_epi8): Ditto.
12993 * config/i386/avx512vlintrin.h
12994 (_mm256_mask_blend_pd): Ditto.
12995 (_mm256_mask_blend_ps): Ditto.
12996 (_mm256_mask_blend_epi64): Ditto.
12997 (_mm256_mask_blend_epi32): Ditto.
12998 (_mm_mask_blend_pd): Ditto.
12999 (_mm_mask_blend_ps): Ditto.
13000 (_mm_mask_blend_epi64): Ditto.
13001 (_mm_mask_blend_epi32): Ditto.
13002 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
13003 (VF_AVX512HFBFVL): Move it before the first usage.
13004 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
13005 to VF_AVX512HFBFVL.
13007 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13009 * common/config/i386/i386-common.cc
13010 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
13011 to OPTION_MASK_ISA_AVX512BW_SET.
13012 (OPTION_MASK_ISA_AVX512F_UNSET):
13013 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
13014 (OPTION_MASK_ISA_AVX512BW_UNSET):
13015 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
13016 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
13017 * config/i386/avx512vbmi2vlintrin.h: Ditto.
13018 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
13019 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
13020 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
13021 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
13023 (compressstore<mode>_mask): Ditto.
13024 (expand<mode>_mask): Ditto.
13025 (expand<mode>_maskz): Ditto.
13026 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
13027 VI12_VI48F_AVX512VL.
13029 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13031 * common/config/i386/i386-common.cc
13032 (OPTION_MASK_ISA_AVX512BITALG_SET):
13033 Change OPTION_MASK_ISA_AVX512F_SET
13034 to OPTION_MASK_ISA_AVX512BW_SET.
13035 (OPTION_MASK_ISA_AVX512F_UNSET):
13036 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
13037 (OPTION_MASK_ISA_AVX512BW_UNSET):
13038 Add OPTION_MASK_ISA_AVX512BITALG_SET.
13039 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
13040 * config/i386/i386-builtin.def:
13041 Remove redundant OPTION_MASK_ISA_AVX512BW.
13042 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
13043 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
13044 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
13046 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13048 * config/i386/i386-expand.cc
13049 (ix86_check_builtin_isa_match): Correct wrong comments.
13050 Add a new macro SHARE_BUILTIN and refactor the current if
13053 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
13055 * config/i386/cpuid.h: Open a new section for Extended Features
13056 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
13059 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
13061 * config/i386/sse.md: Modify insn vperm{i,f}
13064 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
13066 * config/xtensa/xtensa-opts.h: New header.
13067 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
13068 xtensa_strict_align.
13069 * config/xtensa/xtensa.cc (xtensa_option_override): When
13070 -m[no-]strict-align is not specified in the command line set
13071 xtensa_strict_align to 0 if the hardware supports both unaligned
13072 loads and stores or to 1 otherwise.
13073 * config/xtensa/xtensa.opt (mstrict-align): New option.
13074 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
13076 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
13078 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
13081 2023-04-19 Andrew Pinski <apinski@marvell.com>
13083 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
13085 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13087 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
13088 (VECTOR_BOOL_MODE): Ditto.
13089 (ADJUST_NUNITS): Ditto.
13090 (ADJUST_ALIGNMENT): Ditto.
13091 (ADJUST_BYTESIZE): Ditto.
13092 (ADJUST_PRECISION): Ditto.
13093 (RVV_MODES): Ditto.
13094 (VECTOR_MODE_WITH_PREFIX): Ditto.
13095 * config/riscv/riscv-v.cc (ENTRY): Ditto.
13096 (get_vlmul): Ditto.
13097 (get_ratio): Ditto.
13098 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
13099 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
13100 (vbool64_t): Ditto.
13101 (vbool32_t): Ditto.
13102 (vbool16_t): Ditto.
13107 (vint8mf8_t): Ditto.
13108 (vuint8mf8_t): Ditto.
13109 (vint8mf4_t): Ditto.
13110 (vuint8mf4_t): Ditto.
13111 (vint8mf2_t): Ditto.
13112 (vuint8mf2_t): Ditto.
13113 (vint8m1_t): Ditto.
13114 (vuint8m1_t): Ditto.
13115 (vint8m2_t): Ditto.
13116 (vuint8m2_t): Ditto.
13117 (vint8m4_t): Ditto.
13118 (vuint8m4_t): Ditto.
13119 (vint8m8_t): Ditto.
13120 (vuint8m8_t): Ditto.
13121 (vint16mf4_t): Ditto.
13122 (vuint16mf4_t): Ditto.
13123 (vint16mf2_t): Ditto.
13124 (vuint16mf2_t): Ditto.
13125 (vint16m1_t): Ditto.
13126 (vuint16m1_t): Ditto.
13127 (vint16m2_t): Ditto.
13128 (vuint16m2_t): Ditto.
13129 (vint16m4_t): Ditto.
13130 (vuint16m4_t): Ditto.
13131 (vint16m8_t): Ditto.
13132 (vuint16m8_t): Ditto.
13133 (vint32mf2_t): Ditto.
13134 (vuint32mf2_t): Ditto.
13135 (vint32m1_t): Ditto.
13136 (vuint32m1_t): Ditto.
13137 (vint32m2_t): Ditto.
13138 (vuint32m2_t): Ditto.
13139 (vint32m4_t): Ditto.
13140 (vuint32m4_t): Ditto.
13141 (vint32m8_t): Ditto.
13142 (vuint32m8_t): Ditto.
13143 (vint64m1_t): Ditto.
13144 (vuint64m1_t): Ditto.
13145 (vint64m2_t): Ditto.
13146 (vuint64m2_t): Ditto.
13147 (vint64m4_t): Ditto.
13148 (vuint64m4_t): Ditto.
13149 (vint64m8_t): Ditto.
13150 (vuint64m8_t): Ditto.
13151 (vfloat32mf2_t): Ditto.
13152 (vfloat32m1_t): Ditto.
13153 (vfloat32m2_t): Ditto.
13154 (vfloat32m4_t): Ditto.
13155 (vfloat32m8_t): Ditto.
13156 (vfloat64m1_t): Ditto.
13157 (vfloat64m2_t): Ditto.
13158 (vfloat64m4_t): Ditto.
13159 (vfloat64m8_t): Ditto.
13160 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
13161 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
13162 (riscv_convert_vector_bits): Ditto.
13163 * config/riscv/riscv.md:
13164 * config/riscv/vector-iterators.md:
13165 * config/riscv/vector.md
13166 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
13167 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
13168 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
13169 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
13170 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
13171 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
13172 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
13173 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
13174 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
13176 2023-04-19 Pan Li <pan2.li@intel.com>
13178 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
13179 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
13181 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
13185 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
13186 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
13187 for operand 0. Use any_extract code iterator.
13188 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
13189 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
13190 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
13191 (*cmpqi_ext<mode>_1): Use general_operand predicate
13192 for operand 1. Use any_extract code iterator.
13193 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
13194 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
13196 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13198 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
13199 (aarch64_uaddw2<mode>): Delete.
13200 (aarch64_ssubw2<mode>): Delete.
13201 (aarch64_usubw2<mode>): Delete.
13202 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
13204 2023-04-19 Richard Biener <rguenther@suse.de>
13206 * tree-ssa-structalias.cc (do_ds_constraint): Use
13207 solve_add_graph_edge.
13209 2023-04-19 Richard Biener <rguenther@suse.de>
13211 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
13213 (do_sd_constraint): ... here.
13215 2023-04-19 Richard Biener <rguenther@suse.de>
13217 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
13218 rejecting the merge when A contains only a non-local label.
13220 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
13222 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
13223 (VIRTUAL_REGISTER_NUM_P): Ditto.
13224 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
13225 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
13226 * function.cc (instantiate_decl_rtl): Ditto.
13227 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
13228 (nonzero_address_p): Ditto.
13229 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
13231 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
13233 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
13235 2023-04-19 Richard Biener <rguenther@suse.de>
13237 * system.h (auto_mpz::operator->()): New.
13238 * realmpfr.h (auto_mpfr::operator->()): New.
13239 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
13240 * real.cc (real_from_string): Likewise.
13241 (dconst_e_ptr): Likewise.
13242 (dconst_sqrt2_ptr): Likewise.
13243 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
13245 (bound_difference_of_offsetted_base): Likewise.
13246 (number_of_iterations_ne): Likewise.
13247 (number_of_iterations_lt_to_ne): Likewise.
13248 * ubsan.cc: Include realmpfr.h.
13249 (ubsan_instrument_float_cast): Use auto_mpfr.
13251 2023-04-19 Richard Biener <rguenther@suse.de>
13253 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
13254 edges, remove edges from escaped after special-casing them.
13256 2023-04-19 Richard Biener <rguenther@suse.de>
13258 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
13261 2023-04-19 Richard Biener <rguenther@suse.de>
13263 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
13264 to the LHS varinfo solution member.
13266 2023-04-19 Richard Biener <rguenther@suse.de>
13268 * tree-ssa-structalias.cc (topo_visit): Look at the real
13269 destination of edges.
13271 2023-04-19 Richard Biener <rguenther@suse.de>
13273 PR tree-optimization/44794
13274 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
13275 If an epilogue loop is required set its iteration upper bound.
13277 2023-04-19 Xi Ruoyao <xry111@xry111.site>
13280 * config/loongarch/loongarch-protos.h
13281 (loongarch_expand_block_move): Add a parameter as alignment RTX.
13282 * config/loongarch/loongarch.h:
13283 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
13284 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
13285 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
13286 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
13287 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
13288 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
13289 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
13290 Take the alignment from the parameter, but set it to
13291 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
13292 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
13293 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
13294 (loongarch_block_move_straight): When there are left-over bytes,
13295 half the mode size instead of falling back to byte mode at once.
13296 (loongarch_block_move_loop): Limit the length of loop body with
13297 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
13298 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
13299 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
13300 to loongarch_expand_block_move.
13302 2023-04-19 Xi Ruoyao <xry111@xry111.site>
13304 * config/loongarch/loongarch.cc
13305 (loongarch_setup_incoming_varargs): Don't save more GARs than
13306 cfun->va_list_gpr_size / UNITS_PER_WORD.
13308 2023-04-19 Richard Biener <rguenther@suse.de>
13310 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
13311 no epilogue condition.
13313 2023-04-19 Richard Biener <rguenther@suse.de>
13315 * gimple.h (gimple_assign_load): Outline...
13316 * gimple.cc (gimple_assign_load): ... here. Avoid
13317 get_base_address and instead just strip the outermost
13318 handled component, treating a remaining handled component
13321 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13323 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
13325 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
13327 2023-04-19 Jakub Jelinek <jakub@redhat.com>
13329 PR tree-optimization/109011
13330 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
13331 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
13332 CLZ, CTZ and FFS. Remove vargs variable, use
13333 gimple_build_call_internal rather than gimple_build_call_internal_vec.
13334 (vect_vect_recog_func_ptrs): Adjust popcount entry.
13336 2023-04-19 Jakub Jelinek <jakub@redhat.com>
13339 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
13340 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
13341 a new REG rather than the SUBREG.
13343 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13345 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
13348 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13351 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
13352 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
13354 2023-04-19 Richard Biener <rguenther@suse.de>
13356 PR rtl-optimization/109237
13357 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
13358 TREE_VISITED on INSN_VAR_LOCATION_DECL.
13359 (delete_trivially_dead_insns): Maintain TREE_VISITED on
13360 active debug bind INSN_VAR_LOCATION_DECL.
13362 2023-04-19 Richard Biener <rguenther@suse.de>
13364 PR rtl-optimization/109237
13365 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
13367 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
13369 * doc/install.texi (enable-decimal-float): Add AArch64.
13371 2023-04-19 liuhongt <hongtao.liu@intel.com>
13373 PR rtl-optimization/109351
13374 * ira.cc (setup_class_subset_and_memory_move_costs): Check
13375 hard_regno_mode_ok before setting lowest memory move cost for
13376 the mode with different reg classes.
13378 2023-04-18 Jason Merrill <jason@redhat.com>
13380 * doc/invoke.texi: Remove stray @gol.
13382 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
13384 * ifcvt.cc (cond_move_process_if_block): Consider the result of
13385 targetm.noce_conversion_profitable_p() when replacing the original
13386 sequence with the converted one.
13388 2023-04-18 Mark Harmstone <mark@harmstone.com>
13390 * common.opt (gcodeview): Add new option.
13391 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
13392 * opts.cc (command_handle_option): Similarly.
13393 * doc/invoke.texi: Add documentation for -gcodeview.
13395 2023-04-18 Andrew Pinski <apinski@marvell.com>
13397 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
13398 (make_pass_phiopt): Make execute out of line.
13399 (tree_ssa_cs_elim): Move code into ...
13400 (pass_cselim::execute): here.
13402 2023-04-18 Sam James <sam@gentoo.org>
13404 * system.h: Drop unused INCLUDE_PTHREAD_H.
13406 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
13408 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
13411 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
13413 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
13414 (bswapdi2, bswapsi2): Similarly.
13416 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
13419 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
13420 Use CODE_FOR_sse4_1_insertps_v4sf.
13421 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
13422 (expand_vec_perm_1): Call expand_vec_per_insertps.
13423 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
13424 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
13425 (@sse4_1_insertps_<mode>): New insn pattern.
13426 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
13427 pattern from sse4_1_insertps using VI4F_128 mode iterator.
13429 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13431 * value-range.cc (gt_ggc_mx): New.
13433 * value-range.h (class vrange): Add GTY marker.
13434 (class frange): Same.
13435 (gt_ggc_mx): Remove.
13436 (gt_pch_nx): Remove.
13438 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
13440 * lra-constraints.cc (constraint_unique): New.
13441 (process_address_1): Apply constraint_unique test.
13442 * recog.cc (constrain_operands): Allow relaxed memory
13445 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
13447 * doc/extend.texi (Target Builtins): Add RISC-V Vector
13449 (RISC-V Vector Intrinsics): Document GCC implemented which
13450 version of RISC-V vector intrinsics and its reference.
13452 2023-04-18 Richard Biener <rguenther@suse.de>
13454 PR middle-end/108786
13455 * bitmap.h (bitmap_clear_first_set_bit): New.
13456 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
13457 bitmap_first_set_bit and add optional clearing of the bit.
13458 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
13459 (bitmap_clear_first_set_bit): Likewise.
13460 * df-core.cc (df_worklist_dataflow_doublequeue): Use
13461 bitmap_clear_first_set_bit.
13462 * graphite-scop-detection.cc (scop_detection::merge_sese):
13464 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
13465 (sanitize_asan_mark_poison): Likewise.
13466 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
13467 * tree-into-ssa.cc (rewrite_blocks): Likewise.
13468 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
13469 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
13471 2023-04-18 Richard Biener <rguenther@suse.de>
13473 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
13474 (dump_sa_points_to_info): ... this function.
13475 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
13476 and call dump_sa_stats guarded with TDF_STATS.
13477 (ipa_pta_execute): Likewise.
13478 (compute_may_aliases): Guard dump_alias_info with
13479 TDF_DETAILS|TDF_ALIAS.
13481 2023-04-18 Andrew Pinski <apinski@marvell.com>
13483 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
13484 the expression that is being tried when TDF_FOLDING
13486 (phiopt_worker::match_simplify_replacement): Dump
13487 the sequence which was created by gimple_simplify_phiopt
13488 when TDF_FOLDING is true.
13490 2023-04-18 Andrew Pinski <apinski@marvell.com>
13492 * tree-ssa-phiopt.cc (match_simplify_replacement):
13493 Simplify code that does the movement slightly.
13495 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13497 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
13499 (rev16<mode>2): Rename to...
13500 (aarch64_rev16<mode>2_alt1): ... This.
13501 (rev16<mode>2_alt): Rename to...
13502 (*aarch64_rev16<mode>2_alt2): ... This.
13504 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13506 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
13507 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
13509 * range-op-float.cc (zero_range): Use dconstm0.
13510 (zero_to_inf_range): Same.
13511 * real.h (dconstm0): New.
13512 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
13513 (frange::set_zero): Do not declare dconstm0.
13515 2023-04-18 Richard Biener <rguenther@suse.de>
13517 * system.h (class auto_mpz): New,
13518 * realmpfr.h (class auto_mpfr): Likewise.
13519 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
13520 (do_mpfr_arg2): Likewise.
13521 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
13523 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13525 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
13526 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
13528 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13530 * value-range.cc (frange::operator==): Adjust for NAN.
13531 (range_tests_nan): Remove some NAN tests.
13533 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13535 * inchash.cc (hash::add_real_value): New.
13536 * inchash.h (class hash): Add add_real_value.
13537 * value-range.cc (add_vrange): New.
13538 * value-range.h (inchash::add_vrange): New.
13540 2023-04-18 Richard Biener <rguenther@suse.de>
13542 PR tree-optimization/109539
13543 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
13544 Re-implement pointer relatedness for PHIs.
13546 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
13548 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
13549 (SV_FP): New iterator.
13550 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
13551 (recip<mode>2): Unify the two patterns using SV_FP.
13552 (div_scale<mode><exec_vcc>): New insn.
13553 (div_fmas<mode><exec>): New insn.
13554 (div_fixup<mode><exec>): New insn.
13555 (div<mode>3): Unify the two expanders and rewrite using hardfp.
13556 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
13557 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
13558 and UNSPEC_DIV_FIXUP.
13559 (vccwait): New attribute.
13561 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13563 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
13564 if the argument matches that.
13566 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13568 * config/aarch64/atomics.md
13569 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
13570 Use SD_HSDI for destination mode iterator.
13572 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
13574 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
13575 of z-extensions and s-extensions.
13576 (riscv_subset_list::parse): Likewise.
13578 2023-04-18 Jakub Jelinek <jakub@redhat.com>
13580 PR tree-optimization/109240
13581 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
13582 first vec_perm operand and minus as second using fneg/fadd and
13583 minus as first vec_perm operand and plus as second using fneg/fsub.
13585 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13587 * data-streamer.cc (bp_pack_real_value): New.
13588 (bp_unpack_real_value): New.
13589 * data-streamer.h (bp_pack_real_value): New.
13590 (bp_unpack_real_value): New.
13591 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
13592 bp_unpack_real_value.
13593 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
13594 bp_pack_real_value.
13596 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13598 * wide-int.h (WIDE_INT_MAX_HWIS): New.
13599 (class fixed_wide_int_storage): Use it.
13600 (trailing_wide_ints <N>::set_precision): Use it.
13601 (trailing_wide_ints <N>::extra_size): Use it.
13603 2023-04-18 Xi Ruoyao <xry111@xry111.site>
13605 * config/loongarch/loongarch-protos.h
13606 (loongarch_addu16i_imm12_operand_p): New function prototype.
13607 (loongarch_split_plus_constant): Likewise.
13608 * config/loongarch/loongarch.cc
13609 (loongarch_addu16i_imm12_operand_p): New function.
13610 (loongarch_split_plus_constant): Likewise.
13611 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
13612 (DUAL_IMM12_OPERAND): Likewise.
13613 (DUAL_ADDU16I_OPERAND): Likewise.
13614 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
13616 * config/loongarch/predicates.md (const_dual_imm12_operand): New
13618 (const_addu16i_operand): Likewise.
13619 (const_addu16i_imm12_di_operand): Likewise.
13620 (const_addu16i_imm12_si_operand): Likewise.
13621 (plus_di_operand): Likewise.
13622 (plus_si_operand): Likewise.
13623 (plus_si_extend_operand): Likewise.
13624 * config/loongarch/loongarch.md (add<mode>3): Convert to
13625 define_insn_and_split. Use plus_<mode>_operand predicate
13626 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
13627 and Le constraints.
13628 (*addsi3_extended): Convert to define_insn_and_split. Use
13629 plus_si_extend_operand instead of arith_operand. Add
13630 alternatives for La and Le alternatives.
13632 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13634 * value-range.h (Value_Range::Value_Range): New.
13635 (Value_Range::contains_p): New.
13637 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13639 * value-range.h (class vrange): Make m_discriminator const.
13640 (class irange): Make m_max_ranges const. Adjust constructors
13642 (class unsupported_range): Construct vrange appropriately.
13643 (class frange): Same.
13645 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
13647 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
13650 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
13652 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
13654 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
13656 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
13658 (riscv_expand_epilogue): Likewise.
13660 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
13662 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
13664 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
13666 2023-04-17 Andrew Pinski <apinski@marvell.com>
13668 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
13671 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
13673 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
13676 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
13678 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
13679 parameter remaining_size.
13680 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
13681 (riscv_expand_prologue): Likewise.
13682 (riscv_expand_epilogue): Likewise.
13684 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
13686 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
13687 roriw for constant counts.
13688 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
13689 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
13690 (simplify_context::simplify_binary_operation_1): Use it.
13691 * expmed.cc (expand_shift_1): Likewise.
13693 2023-04-17 Martin Jambor <mjambor@suse.cz>
13697 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
13698 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
13699 (ipa_zap_jf_refdesc): New function.
13700 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
13701 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
13702 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
13703 the new parameter of find_reference.
13704 (adjust_references_in_caller): Likewise. Make sure the constant jump
13705 function is not used to decrement a refdec counter again. Only
13706 decrement refdesc counters when the pass_through jump function allows
13707 it. Added a detailed dump when decrementing refdesc counters.
13708 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
13709 (ipa_set_jf_simple_pass_through): Initialize the new flag.
13710 (ipa_set_jf_unary_pass_through): Likewise.
13711 (ipa_set_jf_arith_pass_through): Likewise.
13712 (remove_described_reference): Provide a value for the new parameter of
13714 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
13715 the previous pass_through had a flag mandating that we do so.
13716 (propagate_controlled_uses): Likewise. Only decrement refdesc
13717 counters when the pass_through jump function allows it.
13718 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
13719 parameter of find_reference.
13720 (ipa_write_jump_function): Assert the new flag does not have to be
13722 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
13725 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
13726 Di Zhao <di.zhao@amperecomputing.com>
13728 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
13729 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
13730 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
13731 Check for the above tuning option when processing loads.
13733 2023-04-17 Richard Biener <rguenther@suse.de>
13735 PR tree-optimization/109524
13736 * tree-vrp.cc (remove_unreachable::m_list): Change to a
13737 vector of pairs of block indices.
13738 (remove_unreachable::maybe_register_block): Adjust.
13739 (remove_unreachable::remove_and_update_globals): Likewise.
13740 Deal with removed blocks.
13742 2023-04-16 Jeff Law <jlaw@ventanamicro>
13745 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
13746 TARGET_SFB_ALU, force the true arm into a register.
13748 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
13751 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
13752 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
13754 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
13755 (pa_function_arg_size): Change return type to int. Return zero
13756 for arguments larger than 1 GB. Update comments.
13758 2023-04-15 Jakub Jelinek <jakub@redhat.com>
13760 PR tree-optimization/109154
13761 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
13762 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
13764 2023-04-15 Jason Merrill <jason@redhat.com>
13767 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
13768 Overhaul lhs_ref.ref analysis.
13770 2023-04-14 Richard Biener <rguenther@suse.de>
13772 PR tree-optimization/109502
13773 * tree-vect-stmts.cc (vectorizable_assignment): Fix
13774 check for conversion between mask and non-mask types.
13776 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
13777 Jakub Jelinek <jakub@redhat.com>
13781 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
13782 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
13783 smaller than word_mode.
13784 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
13785 <case AND>: Likewise.
13787 2023-04-14 Jakub Jelinek <jakub@redhat.com>
13789 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
13792 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
13794 PR tree-optimization/108139
13795 PR tree-optimization/109462
13796 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
13797 equivalency check for PHI nodes.
13798 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
13799 does not dominate single-arg equivalency edges.
13801 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
13804 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
13805 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
13807 2023-04-13 Richard Biener <rguenther@suse.de>
13809 PR tree-optimization/109491
13810 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
13811 NULL operands test.
13813 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13816 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
13817 (vint16mf4_t): Ditto.
13818 (vint32mf2_t): Ditto.
13819 (vint64m1_t): Ditto.
13820 (vint64m2_t): Ditto.
13821 (vint64m4_t): Ditto.
13822 (vint64m8_t): Ditto.
13823 (vuint8mf8_t): Ditto.
13824 (vuint16mf4_t): Ditto.
13825 (vuint32mf2_t): Ditto.
13826 (vuint64m1_t): Ditto.
13827 (vuint64m2_t): Ditto.
13828 (vuint64m4_t): Ditto.
13829 (vuint64m8_t): Ditto.
13830 (vfloat32mf2_t): Ditto.
13831 (vbool64_t): Ditto.
13832 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
13833 (register_vector_type): Ditto.
13834 (check_required_extensions): Fix condition.
13835 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
13836 (RVV_REQUIRE_ELEN_64): New define.
13837 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
13838 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
13839 (TARGET_VECTOR_FP64): Ditto.
13840 (ENTRY): Fix predicate.
13841 * config/riscv/vector-iterators.md: Fix predicate.
13843 2023-04-12 Jakub Jelinek <jakub@redhat.com>
13845 PR tree-optimization/109410
13846 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
13847 block if first statement of the function is a call to returns_twice
13850 2023-04-12 Jakub Jelinek <jakub@redhat.com>
13853 * config/i386/i386.cc: Include rtl-error.h.
13854 (ix86_print_operand): For z modifier warning, use warning_for_asm
13855 if this_is_asm_operands. For Z modifier errors, use %c and code
13856 instead of hardcoded Z.
13858 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
13860 * config/i386/x-mingw32-utf8: Remove extrataneous $@
13862 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
13864 PR tree-optimization/109462
13865 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
13866 check for equivalences if NAME is a phi node.
13868 2023-04-12 Richard Biener <rguenther@suse.de>
13870 PR tree-optimization/109473
13871 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
13872 Convert scalar result to the computation type before performing
13873 the reduction adjustment.
13875 2023-04-12 Richard Biener <rguenther@suse.de>
13877 PR tree-optimization/109469
13878 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
13879 a returns-twice call.
13881 2023-04-12 Richard Biener <rguenther@suse.de>
13883 PR tree-optimization/109434
13884 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
13885 handle possibly throwing calls when processing the LHS
13886 and may-defs are not OK.
13888 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
13890 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
13891 predicate to avoid splitting arith constants.
13893 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
13894 Pan Li <pan2.li@intel.com>
13895 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13896 Kito Cheng <kito.cheng@sifive.com>
13899 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
13900 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
13901 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
13902 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
13903 (riscv_zero_call_used_regs): New.
13904 (TARGET_ZERO_CALL_USED_REGS): New.
13906 2023-04-11 Martin Liska <mliska@suse.cz>
13909 * opts.cc (finish_options): Drop also
13910 x_flag_var_tracking_assignments.
13912 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
13914 PR tree-optimization/108888
13915 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
13917 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
13920 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
13921 (vsx_sign_extend_v16qi_<mode>): ... this.
13922 (vsx_sign_extend_hi_<mode>): Rename to...
13923 (vsx_sign_extend_v8hi_<mode>): ... this.
13924 (vsx_sign_extend_si_v2di): Rename to...
13925 (vsx_sign_extend_v4si_v2di): ... this.
13926 (vsignextend_qi_<mode>): Remove.
13927 (vsignextend_hi_<mode>): Remove.
13928 (vsignextend_si_v2di): Remove.
13929 (vsignextend_v2di_v1ti): Remove.
13930 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
13931 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
13932 with gen_vsx_sign_extend_v16qi_v4si.
13933 * config/rs6000/rs6000.md (split for DI constant generation):
13934 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
13935 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
13936 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
13937 with gen_vsx_sign_extend_v16qi_si.
13938 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
13939 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
13940 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
13941 vsx_sign_extend_v16qi_v4si.
13942 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
13943 vsx_sign_extend_v8hi_v2di.
13944 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
13945 vsx_sign_extend_v8hi_v4si.
13946 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
13947 vsx_sign_extend_si_v2di.
13948 (__builtin_altivec_vsignext): Set bif-pattern to
13949 vsx_sign_extend_v2di_v1ti.
13950 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
13951 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
13952 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
13953 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
13955 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
13958 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
13959 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
13961 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
13963 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
13965 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
13967 * common/config/i386/cpuinfo.h (get_available_features):
13968 Detect AMX-COMPLEX.
13969 * common/config/i386/i386-common.cc
13970 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
13971 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
13972 (ix86_handle_option): Handle -mamx-complex.
13973 * common/config/i386/i386-cpuinfo.h (enum processor_features):
13974 Add FEATURE_AMX_COMPLEX.
13975 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
13977 * config.gcc: Add amxcomplexintrin.h.
13978 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
13979 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
13981 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
13982 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
13983 Handle amx-complex.
13984 * config/i386/i386.opt: Add option -mamx-complex.
13985 * config/i386/immintrin.h: Include amxcomplexintrin.h.
13986 * doc/extend.texi: Document amx-complex.
13987 * doc/invoke.texi: Document -mamx-complex.
13988 * doc/sourcebuild.texi: Document target amx-complex.
13989 * config/i386/amxcomplexintrin.h: New file.
13991 2023-04-08 Jakub Jelinek <jakub@redhat.com>
13993 PR tree-optimization/109392
13994 * tree-vect-generic.cc (tree_vec_extract): Handle failure
13995 of maybe_push_res_to_seq better.
13997 2023-04-08 Jakub Jelinek <jakub@redhat.com>
13999 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
14001 (SYSTEM_H): Depend on $(HASHTAB_H).
14002 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
14003 dependency on $(RTL_BASE_H), remove redundant dependency on
14006 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
14009 * config/arm/arm.cc (arm_effective_regno): New function.
14010 (mve_vector_mem_operand): Use it.
14012 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
14014 PR tree-optimization/109417
14015 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
14016 dependency is in SSA_NAME_FREE_LIST.
14018 2023-04-06 Andrew Pinski <apinski@marvell.com>
14020 PR tree-optimization/109427
14021 * params.opt (-param=vect-induction-float=):
14022 Fix option attribute typo for IntegerRange.
14024 2023-04-05 Jeff Law <jlaw@ventanamicro>
14027 * combine.cc (combine_instructions): Force re-recognition when
14028 after restoring the body of an insn to its original form.
14030 2023-04-05 Martin Jambor <mjambor@suse.cz>
14033 * ipa-sra.cc (zap_useless_ipcp_results): New function.
14034 (process_isra_node_results): Call it.
14036 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14038 * config/riscv/vector.md: Fix incorrect operand order.
14040 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14042 * config/riscv/riscv-vsetvl.cc
14043 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
14046 2023-04-05 Li Xu <xuli1@eswincomputing.com>
14048 * config/riscv/riscv-vector-builtins.def: Fix typo.
14049 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
14050 * config/riscv/vector-iterators.md: Ditto.
14052 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
14054 * doc/md.texi (Including Patterns): Fix page break.
14056 2023-04-04 Jakub Jelinek <jakub@redhat.com>
14058 PR tree-optimization/109386
14059 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
14060 foperator_le::op1_range, foperator_le::op2_range,
14061 foperator_gt::op1_range, foperator_gt::op2_range,
14062 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
14063 BRS_FALSE case even if the other op is maybe_isnan, not just
14065 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
14066 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
14067 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
14068 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
14069 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
14070 not just known_isnan.
14072 2023-04-04 Marek Polacek <polacek@redhat.com>
14074 PR sanitizer/109107
14075 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
14077 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
14079 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
14081 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
14082 (mve_vcreateq_f<mode>): Swap operands.
14084 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
14086 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
14088 2023-04-04 Jakub Jelinek <jakub@redhat.com>
14091 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
14092 Reword diagnostics about zfinx conflict with f, formatting fixes.
14094 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14096 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
14098 2023-04-04 Richard Biener <rguenther@suse.de>
14100 PR tree-optimization/109304
14101 * tree-profile.cc (tree_profiling): Use symtab node
14102 availability to decide whether to skip adjusting calls.
14103 Do not adjust calls to internal functions.
14105 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
14108 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
14109 function for permutation control vector by considering big endianness.
14111 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
14114 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
14115 (rs6000_vprtyb<mode>2): ... this.
14116 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
14117 rs6000_vprtybv2di2.
14118 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
14119 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
14120 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
14121 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
14123 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
14124 Sandra Loosemore <sandra@codesourcery.com>
14126 * doc/md.texi (Insn Splitting): Tweak wording for readability.
14128 2023-04-03 Martin Jambor <mjambor@suse.cz>
14131 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
14132 offset + size will be representable in unsigned int.
14134 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14136 * configure.ac (ZSTD_LIB): Move before zstd.h check.
14137 Unset gcc_cv_header_zstd_h without libzstd.
14138 * configure: Regenerate.
14140 2023-04-03 Martin Liska <mliska@suse.cz>
14142 * doc/invoke.texi: Document new param.
14144 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
14146 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
14147 new check_effective_target function.
14149 2023-04-03 Li Xu <xuli1@eswincomputing.com>
14151 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
14152 (vfloat32m8_t): Likewise
14154 2023-04-03 liuhongt <hongtao.liu@intel.com>
14156 * doc/md.texi: Document signbitm2.
14158 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14159 kito-cheng <kito.cheng@sifive.com>
14161 * config/riscv/vector.md: Fix RA constraint.
14163 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14165 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
14166 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
14167 * config/riscv/vector.md: Fix scalar move bug.
14169 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14171 * range-op-float.cc (foperator_equal::fold_range): If at least
14172 one of the op ranges is not singleton and neither is NaN and all
14173 4 bounds are zero, return [1, 1].
14174 (foperator_not_equal::fold_range): In the same case return [0, 0].
14176 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14178 * range-op-float.cc (foperator_equal::fold_range): Perform the
14179 non-singleton handling regardless of maybe_isnan (op1, op2).
14180 (foperator_not_equal::fold_range): Likewise.
14181 (foperator_lt::fold_range, foperator_le::fold_range,
14182 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
14183 real_* comparison check which results in range_false (type)
14184 even if maybe_isnan (op1, op2). Simplify.
14185 (foperator_ltgt): New class.
14186 (fop_ltgt): New variable.
14187 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
14190 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14193 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
14194 returns VOIDmode, handle it like if the register isn't used for
14195 passing arguments at all.
14196 (apply_result_size): If targetm.calls.get_raw_result_mode returns
14197 VOIDmode, handle it like if the register isn't used for returning
14199 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
14200 means to return VOIDmode.
14201 * doc/tm.texi: Regenerated.
14202 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
14203 TARGET_SVE for P0_REGNUM.
14204 (aarch64_function_arg_regno_p): Also return true for p0-p3.
14205 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
14207 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
14209 * lra-constraints.cc: (combine_reload_insn): New function.
14211 2023-03-31 Jakub Jelinek <jakub@redhat.com>
14213 PR tree-optimization/91645
14214 * range-op-float.cc (foperator_unordered_lt::fold_range,
14215 foperator_unordered_le::fold_range,
14216 foperator_unordered_gt::fold_range,
14217 foperator_unordered_ge::fold_range,
14218 foperator_unordered_equal::fold_range): Call the ordered
14219 fold_range on ranges with cleared NaNs.
14220 * value-query.cc (range_query::get_tree_range): Handle also
14221 COMPARISON_CLASS_P trees.
14223 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
14224 Andrew Pinski <pinskia@gmail.com>
14227 * config/riscv/t-riscv: Add missing dependencies.
14229 2023-03-31 liuhongt <hongtao.liu@intel.com>
14231 * config/i386/i386.cc (inline_memory_move_cost): Return 100
14232 for MASK_REGS when MODE_SIZE > 8.
14234 2023-03-31 liuhongt <hongtao.liu@intel.com>
14237 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
14238 ufloat/ufix to floatuns/fixuns.
14239 * config/i386/i386-expand.cc
14240 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
14241 * config/i386/sse.md
14242 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
14244 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
14245 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
14247 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
14249 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
14251 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
14252 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
14253 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
14254 (ufloatv2siv2df2<mask_name>): Renamed to ..
14255 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
14256 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
14258 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
14260 (ufix_notruncv2dfv2si2): Renamed to ..
14261 (fixuns_notruncv2dfv2si2):.. this.
14262 (ufix_notruncv2dfv2si2_mask): Renamed to ..
14263 (fixuns_notruncv2dfv2si2_mask): .. this.
14264 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
14265 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
14266 (ufix_truncv2dfv2si2): Renamed to ..
14267 (*fixuns_truncv2dfv2si2): .. this.
14268 (ufix_truncv2dfv2si2_mask): Renamed to ..
14269 (fixuns_truncv2dfv2si2_mask): .. this.
14270 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
14271 (*fixuns_truncv2dfv2si2_mask_1): .. this.
14272 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
14273 (fixuns_truncv4dfv4si2<mask_name>): .. this.
14274 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
14276 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
14278 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
14279 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
14282 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
14284 PR tree-optimization/109154
14285 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
14286 * gimple-range-gori.h (may_recompute_p): Add depth param.
14287 * params.opt (ranger-recompute-depth): New param.
14289 2023-03-30 Jason Merrill <jason@redhat.com>
14293 * cgraph.h: Move reset() from cgraph_node to symtab_node.
14294 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
14295 remove_from_same_comdat_group.
14297 2023-03-30 Richard Biener <rguenther@suse.de>
14299 PR tree-optimization/107561
14300 * gimple-ssa-warn-access.cc (get_size_range): Add flags
14301 argument and pass it on.
14302 (check_access): When querying for the size range pass
14303 SR_ALLOW_ZERO when the known destination size is zero.
14305 2023-03-30 Richard Biener <rguenther@suse.de>
14307 PR tree-optimization/109342
14308 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
14309 overload for edge. When that edge is a backedge use
14310 dominated_by_p directly.
14312 2023-03-30 liuhongt <hongtao.liu@intel.com>
14314 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
14315 vpblendd instead of vpblendw for V4SI under avx2.
14317 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
14319 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
14320 for many quick operands, for register-sized modes.
14322 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
14324 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
14327 2023-03-29 Martin Liska <mliska@suse.cz>
14329 PR bootstrap/109310
14330 * configure.ac: Emit a warning for deprecated option
14331 --enable-link-mutex.
14332 * configure: Regenerate.
14334 2023-03-29 Richard Biener <rguenther@suse.de>
14336 PR tree-optimization/109331
14337 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
14338 discover a taken edge make sure to cleanup the CFG.
14340 2023-03-29 Richard Biener <rguenther@suse.de>
14342 PR tree-optimization/109327
14343 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
14344 already removed stmts when draining to_remove.
14346 2023-03-29 Richard Biener <rguenther@suse.de>
14349 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
14350 so we can re-create the DIE for the type if required.
14352 2023-03-29 Jakub Jelinek <jakub@redhat.com>
14353 Richard Biener <rguenther@suse.de>
14355 PR tree-optimization/109301
14356 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
14357 properties_provided from PROP_gimple_opt_math to 0.
14358 (pass_data_expand_powcabs): Change properties_provided from 0 to
14359 PROP_gimple_opt_math.
14361 2023-03-29 Richard Biener <rguenther@suse.de>
14363 PR tree-optimization/109154
14364 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
14365 inverted condition specially by inverting at the caller.
14366 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
14368 2023-03-28 David Malcolm <dmalcolm@redhat.com>
14371 * diagnostic-show-locus.cc (column_range::column_range): Factor
14372 out assertion conditional into...
14373 (column_range::valid_p): ...this new function.
14374 (line_corrections::add_hint): Don't attempt to consolidate hints
14375 if it would lead to invalid column_range instances.
14377 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
14380 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
14381 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
14384 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
14386 PR rtl-optimization/109187
14387 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
14388 subtraction in three-way comparison.
14390 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
14392 PR tree-optimization/109265
14393 PR tree-optimization/109274
14394 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
14395 not create a relation record is op1 and op2 are the same symbol.
14396 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
14397 handler for this stmt, but create a new record only if this statement
14398 generates a relation based on the ranges.
14399 (gori_compute::compute_operand2_range): Ditto.
14400 * value-relation.h (value_relation::set_relation): Always create the
14401 record that is requested.
14403 2023-03-28 Richard Biener <rguenther@suse.de>
14405 PR tree-optimization/107087
14406 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
14407 executable regions to avoid useless work and to better
14408 propagate degenerate PHIs.
14410 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
14412 * config/i386/x-mingw32-utf8: update comments.
14414 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
14417 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
14418 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
14420 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
14422 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
14423 after inlining. Record which decls are loaded from. Fix handling
14424 of vops for loads and stores.
14425 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
14426 (aarch64_accesses_vector_load_decl_p): Likewise.
14427 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
14429 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
14430 that loads from a decl, treat vector stores to those decls as
14432 (aarch64_vector_costs::finish_cost): ...and in that case,
14433 if the vector code does nothing more than a store, give the
14434 prologue a zero cost as well.
14436 2023-03-28 Richard Biener <rguenther@suse.de>
14439 PR tree-optimization/108129
14440 * genmatch.cc (lower_for): For (match ...) delay
14441 substituting into the match operator if possible.
14442 (dt_operand::gen_gimple_expr): For user_id look at the
14443 first substitute for determining how to access operands.
14444 (dt_operand::gen_generic_expr): Likewise.
14445 (dt_node::gen_kids): Properly sort user_ids according
14446 to their substitutes.
14447 (dt_node::gen_kids_1): Code-generate user_id matching.
14449 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14450 Jonathan Wakely <jwakely@redhat.com>
14452 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
14453 Use subcommand rather than sub-command in function comments.
14455 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14457 PR tree-optimization/109154
14458 * value-range.h (frange::flush_denormals_to_zero): Make it public
14459 rather than private.
14460 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
14462 * range-op-float.cc (range_operator_float::fold_range): Call
14463 flush_denormals_to_zero.
14465 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14467 PR middle-end/106190
14468 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
14469 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
14471 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14473 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
14474 as 4th argument to set to avoid clear_nan and union_ calls.
14476 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14479 * config/i386/i386.cc (assign_386_stack_local): For DImode
14480 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
14481 align 32 rather than 0 to assign_stack_local.
14483 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
14486 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
14487 on operand #3 to get the final condition code. Use std::swap.
14488 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
14489 (fucmp<gcond:code>8<P:mode>_vis): Move around.
14490 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
14491 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
14493 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
14495 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
14496 top-level sections.
14498 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
14500 * config.host: Pull in i386/x-mingw32-utf8 Makefile
14501 fragment and reference utf8rc-mingw32.o explicitly
14503 * config/i386/sym-mingw32.cc: prevent name mangling of
14505 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
14506 depend on manifest file explicitly.
14508 2023-03-28 Richard Biener <rguenther@suse.de>
14511 2023-03-27 Richard Biener <rguenther@suse.de>
14513 PR rtl-optimization/109237
14514 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14516 2023-03-28 Richard Biener <rguenther@suse.de>
14518 * common.opt (gdwarf): Remove Negative(gdwarf-).
14520 2023-03-28 Richard Biener <rguenther@suse.de>
14522 * common.opt (gdwarf): Add RejectNegative.
14523 (gdwarf-): Likewise.
14527 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14529 * config/cris/constraints.md ("T"): Correct to
14530 define_memory_constraint.
14532 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14534 * config/cris/cris.md (BW2): New mode-iterator.
14535 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
14538 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14540 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
14541 for possible eliminable compares.
14543 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14545 * config/cris/constraints.md ("R"): Remove unused constraint.
14547 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
14549 PR gcov-profile/109297
14550 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
14551 (merge_stream_usage): Likewise.
14552 (overlap_usage): Likewise.
14554 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
14557 * config/riscv/thead.md: Add missing mode specifiers.
14559 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
14560 Jiangning Liu <jiangning.liu@amperecomputing.com>
14561 Manolis Tsamis <manolis.tsamis@vrull.eu>
14563 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
14565 2023-03-27 Richard Biener <rguenther@suse.de>
14567 PR rtl-optimization/109237
14568 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14570 2023-03-27 Richard Biener <rguenther@suse.de>
14573 * lto-wrapper.cc (run_gcc): Parse alternate debug options
14574 as well, they always enable debug.
14576 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
14579 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
14581 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
14583 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
14586 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
14587 than zero when calling vec_sld.
14588 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
14589 zero when calling vec_sld.
14590 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
14591 than zero when calling vec_sld.
14593 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
14595 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
14596 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
14597 loops are represented and which fields are vectors. Add
14598 documentation for OMP_FOR_PRE_BODY field. Document internal
14599 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
14600 * tree.def (OMP_FOR): Make documentation consistent with the
14601 Texinfo manual, to fill some gaps and correct errors.
14603 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
14606 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14607 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
14608 (handle_move_double): Call it before handle_movsi.
14609 * config/m68k/m68k-protos.h: Declare it.
14611 2023-03-26 Jakub Jelinek <jakub@redhat.com>
14613 PR tree-optimization/109230
14614 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
14616 2023-03-26 Jakub Jelinek <jakub@redhat.com>
14619 * predict.cc (compute_function_frequency): Don't call
14620 warn_function_cold if function already has cold attribute.
14622 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
14624 * doc/install.texi: Remove anachronistic note
14625 related to languages built and separate source tarballs.
14627 2023-03-25 David Malcolm <dmalcolm@redhat.com>
14630 * diagnostic-format-sarif.cc (read_until_eof): Delete.
14631 (maybe_read_file): Delete.
14632 (sarif_builder::maybe_make_artifact_content_object): Use
14633 get_source_file_content rather than maybe_read_file.
14634 Reject it if it's not valid UTF-8.
14635 * input.cc (file_cache_slot::get_full_file_content): New.
14636 (get_source_file_content): New.
14637 (selftest::check_cpp_valid_utf8_p): New.
14638 (selftest::test_cpp_valid_utf8_p): New.
14639 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
14640 * input.h (get_source_file_content): New prototype.
14642 2023-03-24 David Malcolm <dmalcolm@redhat.com>
14644 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
14646 (Special Functions for Debugging the Analyzer): Convert to a
14647 table, and rewrite in places.
14648 (Other Debugging Techniques): Add notes on how to compare two
14649 different exploded graphs.
14651 2023-03-24 David Malcolm <dmalcolm@redhat.com>
14654 * json.cc: Update comments to indicate that we now preserve
14655 insertion order of keys within objects.
14656 (object::print): Traverse keys in insertion order.
14657 (object::set): Preserve insertion order of keys.
14658 (selftest::test_writing_objects): Add an additional key to verify
14659 that we preserve insertion order.
14660 * json.h (object::m_keys): New field.
14662 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
14664 PR tree-optimization/109238
14665 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
14666 predecessors which this block dominates.
14668 2023-03-24 Richard Biener <rguenther@suse.de>
14670 PR tree-optimization/106912
14671 * tree-profile.cc (tree_profiling): Update stmts only when
14672 profiling or testing coverage. Make sure to update calls
14673 fntype, stripping 'const' there.
14675 2023-03-24 Jakub Jelinek <jakub@redhat.com>
14677 PR middle-end/109258
14678 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
14679 if target == const0_rtx.
14681 2023-03-24 Alexandre Oliva <oliva@adacore.com>
14683 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
14684 Document options and effective targets.
14686 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
14688 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
14691 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
14693 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
14694 non-earlyclobber alternative.
14696 2023-03-23 Andrew Pinski <apinski@marvell.com>
14699 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
14702 2023-03-23 Richard Biener <rguenther@suse.de>
14704 PR tree-optimization/107569
14705 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
14706 Do not push SSA names with zero uses as available leader.
14707 (process_bb): Likewise.
14709 2023-03-23 Richard Biener <rguenther@suse.de>
14711 PR tree-optimization/109262
14712 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
14713 combining a piecewise complex load avoid touching loads
14714 that throw internally. Use fun, not cfun throughout.
14716 2023-03-23 Jakub Jelinek <jakub@redhat.com>
14718 * value-range.cc (irange::irange_union, irange::intersect): Fix
14719 comment spelling bugs.
14720 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
14721 * gimple-range-trace.h: Likewise.
14722 * gimple-range-edge.cc: Likewise.
14723 (gimple_outgoing_range_stmt_p,
14724 gimple_outgoing_range::switch_edge_range,
14725 gimple_outgoing_range::edge_range_p): Likewise.
14726 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
14727 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
14728 assume_query::assume_query, assume_query::calculate_phi): Likewise.
14729 * gimple-range-edge.h: Likewise.
14730 * value-range.h (Value_Range::set, Value_Range::lower_bound,
14731 Value_Range::upper_bound, frange::set_undefined): Likewise.
14732 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
14733 gori_compute): Likewise.
14734 * gimple-range-fold.h (fold_using_range): Likewise.
14735 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
14737 * gimple-range-gori.cc (range_def_chain::in_chain_p,
14738 range_def_chain::dump, gori_map::calculate_gori,
14739 gori_compute::compute_operand_range_switch,
14740 gori_compute::logical_combine, gori_compute::refine_using_relation,
14741 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
14743 * gimple-range.h: Likewise.
14744 (enable_ranger): Likewise.
14745 * range-op.h (empty_range_varying): Likewise.
14746 * value-query.h (value_query): Likewise.
14747 * gimple-range-cache.cc (block_range_cache::set_bb_range,
14748 block_range_cache::dump, ssa_global_cache::clear_global_range,
14749 temporal_cache::temporal_value, temporal_cache::current_p,
14750 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
14751 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
14753 * gimple-range-fold.cc (fur_edge::get_phi_operand,
14754 fur_stmt::get_operand, gimple_range_adjustment,
14755 fold_using_range::range_of_phi,
14756 fold_using_range::relation_fold_and_or): Likewise.
14757 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
14758 * value-query.cc (range_query::value_of_expr,
14759 range_query::value_on_edge, range_query::query_relation): Likewise.
14760 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
14761 intersect_range_with_nonzero_bits): Likewise.
14762 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
14763 exit_range): Likewise.
14764 * value-relation.h: Likewise.
14765 (equiv_oracle, relation_trio::relation_trio, value_relation,
14766 value_relation::value_relation, pe_min): Likewise.
14767 * range-op-float.cc (range_operator_float::rv_fold,
14768 frange_arithmetic, foperator_unordered_equal::op1_range,
14769 foperator_div::rv_fold): Likewise.
14770 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
14771 * value-relation.cc (equiv_oracle::query_relation,
14772 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
14773 value_relation::apply_transitive, relation_chain_head::find_relation,
14774 dom_oracle::query_relation, dom_oracle::find_relation_block,
14775 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
14776 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
14777 create_possibly_reversed_range, adjust_op1_for_overflow,
14778 operator_mult::wi_fold, operator_exact_divide::op1_range,
14779 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
14780 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
14781 range_op_lshift_tests): Likewise.
14783 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
14785 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
14786 (move_callee_saved_registers): Detect the bug condition early.
14788 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
14790 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
14791 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
14793 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
14794 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
14795 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
14796 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
14797 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
14799 2023-03-23 Jakub Jelinek <jakub@redhat.com>
14801 PR tree-optimization/109176
14802 * tree-vect-generic.cc (expand_vector_condition): If a has
14803 vector boolean type and is a comparison, also check if both
14804 the comparison and VEC_COND_EXPR could be successfully expanded
14807 2023-03-23 Pan Li <pan2.li@intel.com>
14808 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14812 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
14813 for vector mask modes.
14814 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
14815 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
14817 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
14819 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
14821 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14824 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
14825 (emit_vlmax_op): Ditto.
14826 * config/riscv/riscv-v.cc (get_sew): New function.
14827 (emit_vlmax_vsetvl): Adapt function.
14828 (emit_pred_op): Ditto.
14829 (emit_vlmax_op): Ditto.
14830 (emit_nonvlmax_op): Ditto.
14831 (legitimize_move): Fix LRA ICE.
14832 (gen_no_side_effects_vsetvl_rtx): Adapt function.
14833 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
14834 (@mov<VB:mode><P:mode>_lra): Ditto.
14835 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
14836 (*mov<VB:mode><P:mode>_lra): Ditto.
14838 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14841 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
14842 __riscv_vlenb support.
14844 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14845 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
14846 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
14848 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
14849 * config/riscv/riscv-vector-builtins.cc: Ditto.
14851 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14852 kito-cheng <kito.cheng@sifive.com>
14854 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
14855 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
14856 (pass_vsetvl::need_vsetvl): Fix bugs.
14857 (pass_vsetvl::backward_demand_fusion): Fix bugs.
14858 (pass_vsetvl::demand_fusion): Fix bugs.
14859 (eliminate_insn): Fix bugs.
14860 (insert_vsetvl): Ditto.
14861 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
14862 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
14863 * config/riscv/vector.md: Ditto.
14865 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14866 kito-cheng <kito.cheng@sifive.com>
14868 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
14869 * config/riscv/vector-iterators.md (nmsac): Ditto.
14875 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
14876 (@pred_mul_plus<mode>): Ditto.
14877 (*pred_madd<mode>): Ditto.
14878 (*pred_macc<mode>): Ditto.
14879 (*pred_mul_plus<mode>): Ditto.
14880 (@pred_mul_plus<mode>_scalar): Ditto.
14881 (*pred_madd<mode>_scalar): Ditto.
14882 (*pred_macc<mode>_scalar): Ditto.
14883 (*pred_mul_plus<mode>_scalar): Ditto.
14884 (*pred_madd<mode>_extended_scalar): Ditto.
14885 (*pred_macc<mode>_extended_scalar): Ditto.
14886 (*pred_mul_plus<mode>_extended_scalar): Ditto.
14887 (@pred_minus_mul<mode>): Ditto.
14888 (*pred_<madd_nmsub><mode>): Ditto.
14889 (*pred_nmsub<mode>): Ditto.
14890 (*pred_<macc_nmsac><mode>): Ditto.
14891 (*pred_nmsac<mode>): Ditto.
14892 (*pred_mul_<optab><mode>): Ditto.
14893 (*pred_minus_mul<mode>): Ditto.
14894 (@pred_mul_<optab><mode>_scalar): Ditto.
14895 (@pred_minus_mul<mode>_scalar): Ditto.
14896 (*pred_<madd_nmsub><mode>_scalar): Ditto.
14897 (*pred_nmsub<mode>_scalar): Ditto.
14898 (*pred_<macc_nmsac><mode>_scalar): Ditto.
14899 (*pred_nmsac<mode>_scalar): Ditto.
14900 (*pred_mul_<optab><mode>_scalar): Ditto.
14901 (*pred_minus_mul<mode>_scalar): Ditto.
14902 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
14903 (*pred_nmsub<mode>_extended_scalar): Ditto.
14904 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
14905 (*pred_nmsac<mode>_extended_scalar): Ditto.
14906 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
14907 (*pred_minus_mul<mode>_extended_scalar): Ditto.
14908 (*pred_<madd_msub><mode>): Ditto.
14909 (*pred_<macc_msac><mode>): Ditto.
14910 (*pred_<madd_msub><mode>_scalar): Ditto.
14911 (*pred_<macc_msac><mode>_scalar): Ditto.
14912 (@pred_neg_mul_<optab><mode>): Ditto.
14913 (@pred_mul_neg_<optab><mode>): Ditto.
14914 (*pred_<nmadd_msub><mode>): Ditto.
14915 (*pred_<nmsub_nmadd><mode>): Ditto.
14916 (*pred_<nmacc_msac><mode>): Ditto.
14917 (*pred_<nmsac_nmacc><mode>): Ditto.
14918 (*pred_neg_mul_<optab><mode>): Ditto.
14919 (*pred_mul_neg_<optab><mode>): Ditto.
14920 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
14921 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
14922 (*pred_<nmadd_msub><mode>_scalar): Ditto.
14923 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
14924 (*pred_<nmacc_msac><mode>_scalar): Ditto.
14925 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
14926 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
14927 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
14928 (@pred_widen_neg_mul_<optab><mode>): Ditto.
14929 (@pred_widen_mul_neg_<optab><mode>): Ditto.
14930 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
14931 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
14933 2023-03-23 liuhongt <hongtao.liu@intel.com>
14935 * builtins.cc (builtin_memset_read_str): Replace
14936 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
14937 (builtin_memset_gen_str): Ditto.
14938 * config/i386/i386-expand.cc
14939 (ix86_convert_const_wide_int_to_broadcast): Replace
14940 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
14941 (ix86_expand_vector_move): Ditto.
14942 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
14944 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
14945 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
14946 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
14947 * doc/tm.texi.in: Ditto.
14948 * target.def: Ditto.
14950 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
14952 * lra.cc (lra): Do not repeat inheritance and live range splitting
14953 when asm error is found.
14955 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
14957 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
14958 (gcn_expand_dpp_distribute_even_insn)
14959 (gcn_expand_dpp_distribute_odd_insn): Declare.
14960 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
14961 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
14962 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
14963 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
14964 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
14965 (fms<mode>4_negop2): New patterns.
14966 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
14967 (gcn_expand_dpp_distribute_even_insn)
14968 (gcn_expand_dpp_distribute_odd_insn): New functions.
14969 * config/gcn/gcn.md: Add entries to unspec enum.
14971 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
14973 PR tree-optimization/109008
14974 * value-range.cc (frange::set): Add nan_state argument.
14975 * value-range.h (class nan_state): New.
14976 (frange::get_nan_state): New.
14978 2023-03-22 Martin Liska <mliska@suse.cz>
14980 * configure: Regenerate.
14982 2023-03-21 Joseph Myers <joseph@codesourcery.com>
14984 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
14987 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
14989 PR tree-optimization/109192
14990 * gimple-range-gori.cc (gori_compute::compute_operand_range):
14991 Terminate gori calculations if a relation is not relevant.
14992 * value-relation.h (value_relation::set_relation): Allow
14993 equality between op1 and op2 if they are the same.
14995 2023-03-21 Richard Biener <rguenther@suse.de>
14997 PR tree-optimization/109219
14998 * tree-vect-loop.cc (vectorizable_reduction): Check
14999 slp_node, not STMT_SLP_TYPE.
15000 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
15001 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
15002 Remove assertion on STMT_SLP_TYPE.
15004 2023-03-21 Jakub Jelinek <jakub@redhat.com>
15006 PR tree-optimization/109215
15007 * tree.h (enum special_array_member): Adjust comments for int_0
15009 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
15010 has zero sized element type and the array has variable number of
15011 elements or constant one or more elements.
15012 (component_ref_size): Adjust comments, formatting fix.
15014 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15016 * configure.ac: Add check for the Texinfo 6.8
15017 CONTENTS_OUTPUT_LOCATION customization variable and set it if
15019 * configure: Regenerate.
15020 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
15021 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
15022 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
15023 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
15025 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15027 * doc/extend.texi: Associate use_hazard_barrier_return index
15028 entry with its attribute.
15029 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
15032 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15034 * doc/implement-c.texi: Remove usage of @gol.
15035 * doc/invoke.texi: Ditto.
15036 * doc/sourcebuild.texi: Ditto.
15037 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
15038 texinfo.tex versions, the bug it was working around appears to
15041 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15043 * doc/include/texinfo.tex: Update to 2023-01-17.19.
15045 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15047 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
15048 @enddefbuiltin for defining built-in functions.
15049 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
15050 places where it should be used.
15052 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15054 * doc/extend.texi (Formatted Output Function Checking): New
15055 subsection for grouping together printf et al.
15056 (Exception handling) Fix missing @ sign before copyright
15057 header, which lead to the copyright line leaking into
15058 '(gcc)Exception handling'.
15059 * doc/gcc.texi: Set document language to en_US.
15060 (@copying): Wrap front cover texts in quotations, move in manual
15063 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15065 * doc/gcc.texi: Add the Indices appendix, to make texinfo
15066 generate nice indices overview page.
15068 2023-03-21 Richard Biener <rguenther@suse.de>
15070 PR tree-optimization/109170
15071 * gimple-range-op.cc (cfn_pass_through_arg1): New.
15072 (gimple_range_op_handler::maybe_builtin_call): Handle
15073 __builtin_expect via cfn_pass_through_arg1.
15075 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
15078 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
15079 (init_float128_ieee): Delete code to switch complex multiply and divide
15081 (complex_multiply_builtin_code): New helper function.
15082 (complex_divide_builtin_code): Likewise.
15083 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
15084 of complex 128-bit multiply and divide built-in functions.
15086 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
15089 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
15091 2023-03-19 Jonny Grant <jg@jguk.org>
15093 * doc/extend.texi (Common Function Attributes) <nonnull>:
15096 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
15098 PR rtl-optimization/109179
15099 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
15100 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
15102 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15105 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
15107 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
15108 to allocate_struct_function instead of false.
15109 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
15110 nor DECL_RESULT here. Pass true as ABSTRACT_P to
15111 push_struct_function. Call targetm.target_option.relayout_function
15113 (tree_function_versioning): Formatting fix.
15115 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
15117 * lra-constraints.cc: Include hooks.h.
15118 (combine_reload_insn): New function.
15119 (lra_constraints): Call it.
15121 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15122 kito-cheng <kito.cheng@sifive.com>
15124 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
15125 as legitimate value.
15126 * config/riscv/riscv-vector-builtins.cc
15127 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
15128 (function_expander::use_widen_ternop_insn): Ditto.
15129 * config/riscv/vector.md (@vundefined<mode>): New pattern.
15130 (pred_mul_<optab><mode>_undef_merge): Remove.
15131 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
15132 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
15133 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
15134 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
15136 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15139 * config/riscv/riscv.md: Fix subreg bug.
15141 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15143 PR middle-end/108685
15144 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
15145 use its loop_father rather than BODY_BB's loop_father.
15146 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
15147 If broken_loop with ordered > collapse and at least one of those
15148 extra loops aren't guaranteed to have at least one iteration, change
15149 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
15150 loop_father to l0_bb's loop_father rather than l1_bb's.
15152 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15155 * gdbhooks.py (TreePrinter.to_string): Wrap
15156 gdb.parse_and_eval('tree_code_type') in a try block, parse
15157 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
15158 raises exception. Update comments for the recent tree_code_type
15161 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
15163 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
15164 issues. Add more line breaks to example so it doesn't overflow
15167 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
15169 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
15170 line breaks in examples.
15171 <malloc>: Fix bad line breaks in running text, also copy-edit
15173 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
15174 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
15176 (C++ Dialect Options) <-fcontracts>: Add line break in example.
15177 <-Wctad-maybe-unsupported>: Likewise.
15178 <-Winvalid-constexpr>: Likewise.
15179 (Warning Options) <-Wdangling-pointer>: Likewise.
15180 <-Winterference-size>: Likewise.
15181 <-Wvla-parameter>: Likewise.
15182 (Static Analyzer Options): Fix bad line breaks in running text,
15183 plus add some missing markup.
15184 (Optimize Options) <openacc-privatization>: Fix more bad line
15185 breaks in running text.
15187 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
15189 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
15190 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
15191 (expand_vec_perm_2perm_pblendv): Ditto.
15193 2023-03-16 Martin Liska <mliska@suse.cz>
15195 PR middle-end/106133
15196 * gcc.cc (driver_handle_option): Use x_main_input_basename
15197 if x_dump_base_name is null.
15198 * opts.cc (common_handle_option): Likewise.
15200 2023-03-16 Richard Biener <rguenther@suse.de>
15202 PR tree-optimization/109123
15203 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
15204 Do not emit -Wuse-after-free late.
15205 (pass_waccess::check_call): Always check call pointer uses.
15207 2023-03-16 Richard Biener <rguenther@suse.de>
15209 PR tree-optimization/109141
15210 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
15211 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
15213 (renumber_gimple_stmt_uids): ... here and
15214 (renumber_gimple_stmt_uids_in_blocks): ... here.
15215 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
15216 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
15218 (pass_waccess::check_pointer_uses): Process all PHIs.
15220 2023-03-15 David Malcolm <dmalcolm@redhat.com>
15223 * diagnostic-format-sarif.cc (class sarif_invocation): New.
15224 (class sarif_ice_notification): New.
15225 (sarif_builder::m_invocation_obj): New field.
15226 (sarif_invocation::add_notification_for_ice): New.
15227 (sarif_invocation::prepare_to_flush): New.
15228 (sarif_ice_notification::sarif_ice_notification): New.
15229 (sarif_builder::sarif_builder): Add m_invocation_obj.
15230 (sarif_builder::end_diagnostic): Special-case DK_ICE and
15232 (sarif_builder::flush_to_file): Call prepare_to_flush on
15233 m_invocation_obj. Pass the latter to make_top_level_object.
15234 (sarif_builder::make_result_object): Move creation of "locations"
15236 (sarif_builder::make_locations_arr): ...this new function.
15237 (sarif_builder::make_top_level_object): Add "invocation_obj" param
15238 and pass it to make_run_object.
15239 (sarif_builder::make_run_object): Add "invocation_obj" param and
15241 (sarif_ice_handler): New callback.
15242 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
15243 * diagnostic.cc (diagnostic_initialize): Initialize new field
15245 (diagnostic_action_after_output): If it is set, make one attempt
15246 to call ice_handler_cb.
15247 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
15249 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
15251 * config/i386/i386-expand.cc (expand_vec_perm_blend):
15252 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
15253 and fix V2HImode handling.
15254 (expand_vec_perm_1): Try to emit BLEND instruction
15255 before MOVSS/MOVSD.
15256 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
15258 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
15260 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
15262 2023-03-15 Richard Biener <rguenther@suse.de>
15264 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
15265 Do not diagnose clobbers.
15267 2023-03-15 Richard Biener <rguenther@suse.de>
15269 PR tree-optimization/109139
15270 * tree-ssa-live.cc (remove_unused_locals): Look at the
15271 base address for unused decls on the LHS of .DEFERRED_INIT.
15273 2023-03-15 Xi Ruoyao <xry111@xry111.site>
15276 * builtins.cc (inline_string_cmp): Force the character
15277 difference into "result" pseudo-register, instead of reassign
15278 the pseudo-register.
15280 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15282 * config.gcc: Add thead.o to RISC-V extra_objs.
15283 * config/riscv/peephole.md: Add mempair peephole passes.
15284 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
15286 (th_mempair_operands_p): Likewise.
15287 (th_mempair_order_operands): Likewise.
15288 (th_mempair_prepare_save_restore_operands): Likewise.
15289 (th_mempair_save_restore_regs): Likewise.
15290 (th_mempair_output_move): Likewise.
15291 * config/riscv/riscv.cc (riscv_save_reg): Move code.
15292 (riscv_restore_reg): Move code.
15293 (riscv_for_each_saved_reg): Add code to emit mempair insns.
15294 * config/riscv/t-riscv: Add thead.cc.
15295 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
15297 (*th_mempair_store_<GPR:mode>2): Likewise.
15298 (*th_mempair_load_extendsidi2): Likewise.
15299 (*th_mempair_load_zero_extendsidi2): Likewise.
15300 * config/riscv/thead.cc: New file.
15302 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15304 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
15305 New constraint "th_f_fmv".
15306 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
15308 * config/riscv/riscv.cc (riscv_split_doubleword_move):
15309 Add split code for XTheadFmv.
15310 (riscv_secondary_memory_needed): XTheadFmv does not need
15312 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
15313 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
15314 movdf_hardfloat_rv32.
15315 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
15316 (th_fmv_x_w): New INSN.
15317 (th_fmv_x_hw): New INSN.
15319 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15321 * config/riscv/riscv.md (maddhisi4): New expand.
15322 (msubhisi4): New expand.
15323 * config/riscv/thead.md (*th_mula<mode>): New pattern.
15324 (*th_mulawsi): New pattern.
15325 (*th_mulawsi2): New pattern.
15326 (*th_maddhisi4): New pattern.
15327 (*th_sextw_maddhisi4): New pattern.
15328 (*th_muls<mode>): New pattern.
15329 (*th_mulswsi): New pattern.
15330 (*th_mulswsi2): New pattern.
15331 (*th_msubhisi4): New pattern.
15332 (*th_sextw_msubhisi4): New pattern.
15334 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15336 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
15337 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
15339 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
15341 (riscv_expand_conditional_move): New function.
15342 (riscv_expand_conditional_move_onesided): New function.
15343 * config/riscv/riscv.md: Add support for XTheadCondMov.
15344 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
15345 support for XTheadCondMov.
15346 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
15348 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15350 * config/riscv/bitmanip.md (clzdi2): New expand.
15351 (clzsi2): New expand.
15352 (ctz<mode>2): New expand.
15353 (popcount<mode>2): New expand.
15354 (<bitmanip_optab>si2): Rename INSN.
15355 (*<bitmanip_optab>si2): Hide INSN name.
15356 (<bitmanip_optab>di2): Rename INSN.
15357 (*<bitmanip_optab>di2): Hide INSN name.
15358 (rotrsi3): Remove INSN.
15359 (rotr<mode>3): Add expand.
15360 (*rotrsi3): New INSN.
15361 (rotrdi3): Rename INSN.
15362 (*rotrdi3): Hide INSN name.
15363 (rotrsi3_sext): Rename INSN.
15364 (*rotrsi3_sext): Hide INSN name.
15365 (bswap<mode>2): Remove INSN.
15366 (bswapdi2): Add expand.
15367 (bswapsi2): Add expand.
15368 (*bswap<mode>2): Hide INSN name.
15369 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
15371 * config/riscv/riscv.md (extv<mode>): New expand.
15372 (extzv<mode>): New expand.
15373 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
15374 (*th_ext<mode>): New INSN.
15375 (*th_extu<mode>): New INSN.
15376 (*th_clz<mode>2): New INSN.
15377 (*th_rev<mode>2): New INSN.
15379 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15381 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
15382 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
15384 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15386 * config/riscv/riscv.md: Include thead.md
15387 * config/riscv/thead.md: New file.
15389 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15391 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
15393 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15395 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
15396 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
15397 (MASK_XTHEADBB): New.
15398 (MASK_XTHEADBS): New.
15399 (MASK_XTHEADCMO): New.
15400 (MASK_XTHEADCONDMOV): New.
15401 (MASK_XTHEADFMEMIDX): New.
15402 (MASK_XTHEADFMV): New.
15403 (MASK_XTHEADINT): New.
15404 (MASK_XTHEADMAC): New.
15405 (MASK_XTHEADMEMIDX): New.
15406 (MASK_XTHEADMEMPAIR): New.
15407 (MASK_XTHEADSYNC): New.
15408 (TARGET_XTHEADBA): New.
15409 (TARGET_XTHEADBB): New.
15410 (TARGET_XTHEADBS): New.
15411 (TARGET_XTHEADCMO): New.
15412 (TARGET_XTHEADCONDMOV): New.
15413 (TARGET_XTHEADFMEMIDX): New.
15414 (TARGET_XTHEADFMV): New.
15415 (TARGET_XTHEADINT): New.
15416 (TARGET_XTHEADMAC): New.
15417 (TARGET_XTHEADMEMIDX): New.
15418 (TARGET_XTHEADMEMPAIR): new.
15419 (TARGET_XTHEADSYNC): New.
15420 * config/riscv/riscv.opt: Add riscv_xthead_subext.
15422 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
15425 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
15426 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
15427 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
15429 2023-03-14 Jakub Jelinek <jakub@redhat.com>
15432 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
15433 when lo is equal to dhi and hi is a MEM which uses dlo register.
15435 2023-03-14 Martin Jambor <mjambor@suse.cz>
15438 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
15439 global0 instead of zeroing when it does not have as many counts as
15442 2023-03-14 Martin Jambor <mjambor@suse.cz>
15445 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
15446 ipa count, remove assert, lenient_count_portion_handling, dump
15447 also orig_node_count.
15449 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
15451 * config/i386/i386-expand.cc (expand_vec_perm_movs):
15452 Handle V2SImode for TARGET_MMX_WITH_SSE.
15453 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
15454 using V2FI mode iterator to handle both V2SI and V2SF modes.
15456 2023-03-14 Sam James <sam@gentoo.org>
15458 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
15459 including <sstream> earlier.
15460 * system.h: Add INCLUDE_SSTREAM.
15462 2023-03-14 Richard Biener <rguenther@suse.de>
15464 * tree-ssa-live.cc (remove_unused_locals): Do not treat
15465 the .DEFERRED_INIT of a variable as use, instead remove
15466 that if it is the only use.
15468 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
15470 PR rtl-optimization/107762
15471 * expr.cc (emit_group_store): Revert latest change.
15473 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
15475 PR tree-optimization/109005
15476 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
15477 aggregate type check.
15479 2023-03-14 Jakub Jelinek <jakub@redhat.com>
15481 PR tree-optimization/109115
15482 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
15483 r.upper_bound () on r.undefined_p () range.
15485 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
15487 PR tree-optimization/106896
15488 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
15489 implementatoin with probability_in; avoid some asserts.
15491 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
15493 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
15495 2023-03-13 Sean Bright <sean@seanbright.com>
15497 * doc/invoke.texi (Warning Options): Remove errant 'See'
15500 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15502 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
15503 REG_OK_FOR_BASE_P): Remove.
15505 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15507 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
15508 (=vd,vd,vr,vr): Ditto.
15509 * config/riscv/vector.md: Ditto.
15511 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15513 * config/riscv/riscv-vector-builtins.cc
15514 (function_expander::use_compare_insn): Add operand predicate check.
15516 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15518 * config/riscv/vector.md: Fine tune RA constraints.
15520 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
15522 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
15523 hsaco assemble/link.
15525 2023-03-13 Richard Biener <rguenther@suse.de>
15527 PR tree-optimization/109046
15528 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
15529 piecewise complex loads.
15531 2023-03-12 Jakub Jelinek <jakub@redhat.com>
15533 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
15534 (aarch64_bf16_ptr_type_node): Adjust comment.
15535 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
15536 bfloat16_type_node rather than aarch64_bf16_type_node.
15537 (aarch64_libgcc_floating_mode_supported_p,
15538 aarch64_scalar_mode_supported_p): Also support BFmode.
15539 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
15540 (aarch64_invalid_binary_op): Remove BFmode related rejections.
15541 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
15542 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
15543 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
15544 aarch64_bf16_type_node.
15545 (aarch64_init_simd_builtin_types): Likewise.
15546 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
15547 which is created in tree.cc already.
15548 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
15550 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
15552 PR middle-end/109031
15553 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
15554 ensure that the type of x is as wide or wider than the type of a.
15556 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15559 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
15560 (*bitmask_shift_plus<mode>): New.
15561 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
15562 (@aarch64_bitmask_udiv<mode>3): Remove.
15563 * config/aarch64/aarch64.cc
15564 (aarch64_vectorize_can_special_div_by_constant,
15565 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
15566 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
15567 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
15569 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15572 * target.def (preferred_div_as_shifts_over_mult): New.
15573 * doc/tm.texi.in: Document it.
15574 * doc/tm.texi: Regenerate.
15575 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
15576 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
15577 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
15579 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15580 Richard Sandiford <richard.sandiford@arm.com>
15583 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
15586 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15587 Andrew MacLeod <amacleod@redhat.com>
15590 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
15591 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
15593 (gimple_range_op_handler::maybe_non_standard): New.
15594 * range-op.cc (class operator_widen_plus_signed,
15595 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
15596 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
15597 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
15598 operator_widen_mult_unsigned::wi_fold,
15599 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
15600 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
15601 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
15602 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
15604 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15607 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
15608 * doc/tm.texi.in: Likewise.
15609 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
15610 * expmed.cc (expand_divmod): Likewise.
15611 * expmed.h (expand_divmod): Likewise.
15612 * expr.cc (force_operand, expand_expr_divmod): Likewise.
15613 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
15614 * target.def (can_special_div_by_const): Remove.
15615 * target.h: Remove tree-core.h include
15616 * targhooks.cc (default_can_special_div_by_const): Remove.
15617 * targhooks.h (default_can_special_div_by_const): Remove.
15618 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
15619 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
15620 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
15622 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
15624 * doc/install.texi2html: Fix issue number typo in comment.
15626 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
15628 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
15631 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
15633 * doc/invoke.texi (Optimize Options): Add markup to
15634 description of asan-kernel-mem-intrinsic-prefix, and clarify
15637 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
15639 * doc/extend.texi (Named Address Spaces): Drop a redundant link
15642 2023-03-11 Jeff Law <jlaw@ventanamicro>
15645 * doc/extend.texi: Clarify Attribute Syntax a bit.
15647 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
15649 * doc/install.texi (Prerequisites): Suggest using newer versions
15651 (Final install): Clean up and modernize discussion of how to
15652 build or obtain the GCC manuals.
15653 * doc/install.texi2html: Update comment to point to the PR instead
15654 of "makeinfo 4.7 brokenness" (it's not specific to that version).
15656 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15659 * optabs.cc (expand_fix): For conversions from BFmode to integral,
15660 use shifts to convert it to SFmode first and then convert SFmode
15663 2023-03-10 Andrew Pinski <apinski@marvell.com>
15665 * config/aarch64/aarch64.md: Add a new define_split
15668 2023-03-10 Richard Biener <rguenther@suse.de>
15670 * tree-ssa-structalias.cc (solve_graph): Immediately
15671 iterate self-cycles.
15673 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15675 PR tree-optimization/109008
15676 * range-op-float.cc (float_widen_lhs_range): If not
15677 -frounding-math and not IBM double double format, extend lhs
15678 range just by 0.5ulp rather than 1ulp in each direction.
15680 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15683 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
15685 * config/i386/t-cygwin-w64: Remove.
15687 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15690 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
15691 C++14, don't declare as extern const arrays.
15692 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
15693 static constexpr member arrays for C++11 or C++14.
15694 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
15695 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
15696 (TREE_CODE_LENGTH): For C++11 or C++14 use
15697 tree_code_length_tmpl <0>::tree_code_length instead of
15699 * tree.cc (tree_code_type, tree_code_length): Remove.
15701 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15704 * common.opt (fcanon-prefix-map): New option.
15705 * opts.cc: Include file-prefix-map.h.
15706 (flag_canon_prefix_map): New variable.
15707 (common_handle_option): Handle OPT_fcanon_prefix_map.
15708 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
15709 * file-prefix-map.h (flag_canon_prefix_map): Declare.
15710 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
15712 (add_prefix_map): Initialize canonicalize member from
15713 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
15714 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
15715 use lrealpath result only for map->canonicalize map entries.
15716 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
15717 * opts-global.cc (handle_common_deferred_options): Clear
15718 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
15719 * doc/invoke.texi (-fcanon-prefix-map): Document.
15720 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
15721 see also for -fcanon-prefix-map.
15722 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
15724 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15727 * cgraphunit.cc (check_global_declaration): Don't warn for unused
15728 variables which have OPT_Wunused_variable warning suppressed.
15730 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15732 PR tree-optimization/109008
15733 * range-op-float.cc (float_widen_lhs_range): If lb is
15734 minimum representable finite number or ub is maximum
15735 representable finite number, instead of widening it to
15736 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
15737 Temporarily clear flag_finite_math_only when canonicalizing
15740 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15742 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
15743 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
15744 (gimple_fold_builtin): Ditto.
15745 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
15746 (class vleff): Ditto.
15748 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15749 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
15751 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
15752 (struct fault_load_def): Ditto.
15754 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15755 * config/riscv/riscv-vector-builtins.cc
15756 (rvv_arg_type_info::get_tree_type): Add size_ptr.
15757 (gimple_folder::gimple_folder): New class.
15758 (gimple_folder::fold): Ditto.
15759 (gimple_fold_builtin): New function.
15760 (get_read_vl_instance): Ditto.
15761 (get_read_vl_decl): Ditto.
15762 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
15763 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
15764 (get_read_vl_instance): New function.
15765 (get_read_vl_decl): Ditto.
15766 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
15767 (read_vl_insn_p): Ditto.
15768 (available_occurrence_p): Ditto.
15769 (backward_propagate_worthwhile_p): Ditto.
15770 (gen_vsetvl_pat): Adapt for vleff support.
15771 (get_forward_read_vl_insn): New function.
15772 (get_backward_fault_first_load_insn): Ditto.
15773 (source_equal_p): Adapt for vleff support.
15774 (first_ratio_invalid_for_second_sew_p): Remove.
15775 (first_ratio_invalid_for_second_lmul_p): Ditto.
15776 (first_lmul_less_than_second_lmul_p): Ditto.
15777 (first_ratio_less_than_second_ratio_p): Ditto.
15778 (support_relaxed_compatible_p): New function.
15779 (vector_insn_info::operator>): Remove.
15780 (vector_insn_info::operator>=): Refine.
15781 (vector_insn_info::parse_insn): Adapt for vleff support.
15782 (vector_insn_info::compatible_p): Ditto.
15783 (vector_insn_info::update_fault_first_load_avl): New function.
15784 (pass_vsetvl::transfer_after): Adapt for vleff support.
15785 (pass_vsetvl::demand_fusion): Ditto.
15786 (pass_vsetvl::cleanup_insns): Ditto.
15787 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
15788 redundant condtions.
15789 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
15790 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
15791 * config/riscv/riscv.md: Adapt for vleff support.
15792 * config/riscv/t-riscv: Ditto.
15793 * config/riscv/vector-iterators.md: New iterator.
15794 * config/riscv/vector.md (read_vlsi): New pattern.
15795 (read_vldi_zero_extend): Ditto.
15796 (@pred_fault_load<mode>): Ditto.
15798 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15800 * config/riscv/riscv-vector-builtins.cc
15801 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
15802 (function_expander::use_widen_ternop_insn): Ditto.
15803 * optabs.cc (maybe_gen_insn): Extend nops handling.
15805 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15807 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
15808 patterns according to RVV ISA.
15809 * config/riscv/vector-iterators.md: New iterators.
15810 * config/riscv/vector.md
15811 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
15812 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
15813 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
15814 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
15815 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
15816 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
15817 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
15818 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
15819 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
15820 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
15821 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
15822 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
15823 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
15824 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
15826 2023-03-10 Michael Collison <collison@rivosinc.com>
15828 * tree-vect-loop-manip.cc (vect_do_peeling): Use
15829 result of constant_lower_bound instead of vf for the lower
15830 bound of the epilog loop trip count.
15832 2023-03-09 Tamar Christina <tamar.christina@arm.com>
15834 * passes.cc (emergency_dump_function): Finish graph generation.
15836 2023-03-09 Tamar Christina <tamar.christina@arm.com>
15838 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
15839 and bottom bit only.
15841 2023-03-09 Andrew Pinski <apinski@marvell.com>
15843 PR tree-optimization/108980
15844 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
15845 Reorgnize the call to warning for not strict flexible arrays
15846 to be before the check of warned.
15848 2023-03-09 Jason Merrill <jason@redhat.com>
15850 * doc/extend.texi: Comment out __is_deducible docs.
15852 2023-03-09 Jason Merrill <jason@redhat.com>
15855 * doc/extend.texi (Type Traits):: Document __is_deducible.
15857 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
15860 * config.host: add object for x86_64-*-mingw*.
15861 * config/i386/sym-mingw32.cc: dummy file to attach
15863 * config/i386/utf8-mingw32.rc: windres resource file.
15864 * config/i386/winnt-utf8.manifest: XML manifest to
15866 * config/i386/x-mingw32: reference to x-mingw32-utf8.
15867 * config/i386/x-mingw32-utf8: Makefile fragment to
15868 embed UTF-8 manifest.
15870 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
15872 * lra-constraints.cc (process_alt_operands): Use operand modes for
15873 clobbered regs instead of the biggest access mode.
15875 2023-03-09 Richard Biener <rguenther@suse.de>
15877 PR middle-end/108995
15878 * fold-const.cc (extract_muldiv_1): Avoid folding
15879 (CST * b) / CST2 when sanitizing overflow and we rely on
15880 overflow being undefined.
15882 2023-03-09 Jakub Jelinek <jakub@redhat.com>
15883 Richard Biener <rguenther@suse.de>
15885 PR tree-optimization/109008
15886 * range-op-float.cc (float_widen_lhs_range): New function.
15887 (foperator_plus::op1_range, foperator_minus::op1_range,
15888 foperator_minus::op2_range, foperator_mult::op1_range,
15889 foperator_div::op1_range, foperator_div::op2_range): Use it.
15891 2023-03-07 Jonathan Grant <jg@jguk.org>
15894 * doc/invoke.texi (Instrumentation Options): Clarify
15895 LeakSanitizer behavior.
15897 2023-03-07 Benson Muite <benson_muite@emailplus.org>
15899 * doc/install.texi (Prerequisites): Add link to gmplib.org.
15901 2023-03-07 Pan Li <pan2.li@intel.com>
15902 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15906 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
15908 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
15909 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
15910 * genmodes.cc (adj_precision): New.
15911 (ADJUST_PRECISION): New.
15912 (emit_mode_adjustments): Handle ADJUST_PRECISION.
15914 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
15916 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
15918 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
15920 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
15921 {s|u}{max|min} in QI, HI and DI modes.
15922 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
15923 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
15924 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
15925 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
15928 2023-03-06 Richard Biener <rguenther@suse.de>
15930 PR tree-optimization/109025
15931 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
15932 the inner LC PHI use is the inner loop PHI latch definition
15933 before classifying an outer PHI as double reduction.
15935 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
15938 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
15940 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
15941 (X86_TUNE_USE_SCATTER): Likewise.
15943 2023-03-06 Xi Ruoyao <xry111@xry111.site>
15946 * config/loongarch/loongarch.h (FP_RETURN): Use
15947 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
15948 (UNITS_PER_FP_ARG): Likewise.
15950 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15952 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
15953 (pass_vsetvl::backward_demand_fusion): Ditto.
15955 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
15956 SiYu Wu <siyu@isrc.iscas.ac.cn>
15958 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
15960 (riscv_sm3p1_<mode>): New.
15961 (riscv_sm4ed_<mode>): New.
15962 (riscv_sm4ks_<mode>): New.
15963 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
15964 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
15965 ZKSH's built-in functions.
15967 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
15968 SiYu Wu <siyu@isrc.iscas.ac.cn>
15970 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
15971 (riscv_sha256sig1_<mode>): New.
15972 (riscv_sha256sum0_<mode>): New.
15973 (riscv_sha256sum1_<mode>): New.
15974 (riscv_sha512sig0h): New.
15975 (riscv_sha512sig0l): New.
15976 (riscv_sha512sig1h): New.
15977 (riscv_sha512sig1l): New.
15978 (riscv_sha512sum0r): New.
15979 (riscv_sha512sum1r): New.
15980 (riscv_sha512sig0): New.
15981 (riscv_sha512sig1): New.
15982 (riscv_sha512sum0): New.
15983 (riscv_sha512sum1): New.
15984 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
15985 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
15986 built-in functions.
15987 (DIRECT_BUILTIN): Add new.
15989 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
15990 SiYu Wu <siyu@isrc.iscas.ac.cn>
15992 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
15994 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
15995 (riscv_aes32dsmi): New.
15996 (riscv_aes64ds): New.
15997 (riscv_aes64dsm): New.
15998 (riscv_aes64im): New.
15999 (riscv_aes64ks1i): New.
16000 (riscv_aes64ks2): New.
16001 (riscv_aes32esi): New.
16002 (riscv_aes32esmi): New.
16003 (riscv_aes64es): New.
16004 (riscv_aes64esm): New.
16005 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
16006 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
16007 ZKNE's built-in functions.
16009 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16010 SiYu Wu <siyu@isrc.iscas.ac.cn>
16012 * config/riscv/bitmanip.md: Add ZBKB's instructions.
16013 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
16014 * config/riscv/riscv.md: Add new type for crypto instructions.
16015 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
16017 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
16018 extension's built-in function file.
16020 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16021 SiYu Wu <siyu@isrc.iscas.ac.cn>
16023 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
16024 (RISCV_FTYPE_NAME3): New.
16025 (RISCV_ATYPE_QI): New.
16026 (RISCV_ATYPE_HI): New.
16027 (RISCV_FTYPE_ATYPES2): New.
16028 (RISCV_FTYPE_ATYPES3): New.
16029 * config/riscv/riscv-ftypes.def (2): New.
16032 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
16034 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
16037 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16038 kito-cheng <kito.cheng@sifive.com>
16040 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
16041 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
16042 (riscv_register_pragmas): Add builtin function check call.
16043 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
16044 (check_builtin_call): New function.
16045 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
16046 (class vreinterpret): Ditto.
16047 (class vlmul_ext): Ditto.
16048 (class vlmul_trunc): Ditto.
16049 (class vset): Ditto.
16050 (class vget): Ditto.
16052 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16053 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
16069 (vundefined): Add new intrinsic.
16070 (vreinterpret): Ditto.
16071 (vlmul_ext): Ditto.
16072 (vlmul_trunc): Ditto.
16075 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
16076 (struct narrow_alu_def): Ditto.
16077 (struct reduc_alu_def): Ditto.
16078 (struct vundefined_def): Ditto.
16079 (struct misc_def): Ditto.
16080 (struct vset_def): Ditto.
16081 (struct vget_def): Ditto.
16083 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16084 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
16085 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
16086 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
16087 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
16088 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
16089 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
16090 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
16091 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
16092 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
16093 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
16094 (DEF_RVV_LMUL1_OPS): Ditto.
16095 (DEF_RVV_LMUL2_OPS): Ditto.
16096 (DEF_RVV_LMUL4_OPS): Ditto.
16097 (vint16mf4_t): Ditto.
16098 (vint16mf2_t): Ditto.
16099 (vint16m1_t): Ditto.
16100 (vint16m2_t): Ditto.
16101 (vint16m4_t): Ditto.
16102 (vint16m8_t): Ditto.
16103 (vint32mf2_t): Ditto.
16104 (vint32m1_t): Ditto.
16105 (vint32m2_t): Ditto.
16106 (vint32m4_t): Ditto.
16107 (vint32m8_t): Ditto.
16108 (vint64m1_t): Ditto.
16109 (vint64m2_t): Ditto.
16110 (vint64m4_t): Ditto.
16111 (vint64m8_t): Ditto.
16112 (vuint16mf4_t): Ditto.
16113 (vuint16mf2_t): Ditto.
16114 (vuint16m1_t): Ditto.
16115 (vuint16m2_t): Ditto.
16116 (vuint16m4_t): Ditto.
16117 (vuint16m8_t): Ditto.
16118 (vuint32mf2_t): Ditto.
16119 (vuint32m1_t): Ditto.
16120 (vuint32m2_t): Ditto.
16121 (vuint32m4_t): Ditto.
16122 (vuint32m8_t): Ditto.
16123 (vuint64m1_t): Ditto.
16124 (vuint64m2_t): Ditto.
16125 (vuint64m4_t): Ditto.
16126 (vuint64m8_t): Ditto.
16127 (vint8mf4_t): Ditto.
16128 (vint8mf2_t): Ditto.
16129 (vint8m1_t): Ditto.
16130 (vint8m2_t): Ditto.
16131 (vint8m4_t): Ditto.
16132 (vint8m8_t): Ditto.
16133 (vuint8mf4_t): Ditto.
16134 (vuint8mf2_t): Ditto.
16135 (vuint8m1_t): Ditto.
16136 (vuint8m2_t): Ditto.
16137 (vuint8m4_t): Ditto.
16138 (vuint8m8_t): Ditto.
16139 (vint8mf8_t): Ditto.
16140 (vuint8mf8_t): Ditto.
16141 (vfloat32mf2_t): Ditto.
16142 (vfloat32m1_t): Ditto.
16143 (vfloat32m2_t): Ditto.
16144 (vfloat32m4_t): Ditto.
16145 (vfloat64m1_t): Ditto.
16146 (vfloat64m2_t): Ditto.
16147 (vfloat64m4_t): Ditto.
16148 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
16149 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
16150 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
16151 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
16152 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
16153 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
16154 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
16155 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
16156 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
16157 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
16158 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
16159 (DEF_RVV_LMUL1_OPS): Ditto.
16160 (DEF_RVV_LMUL2_OPS): Ditto.
16161 (DEF_RVV_LMUL4_OPS): Ditto.
16162 (DEF_RVV_TYPE_INDEX): Ditto.
16163 (required_extensions_p): Adapt for new intrinsic support/
16164 (get_required_extensions): New function.
16165 (check_required_extensions): Ditto.
16166 (unsigned_base_type_p): Remove.
16167 (rvv_arg_type_info::get_scalar_ptr_type): New function.
16168 (get_mode_for_bitsize): Remove.
16169 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
16170 (rvv_arg_type_info::get_base_vector_type): Ditto.
16171 (rvv_arg_type_info::get_function_type_index): Ditto.
16172 (DEF_RVV_BASE_TYPE): New def.
16173 (function_builder::apply_predication): New class.
16174 (function_expander::mask_mode): Ditto.
16175 (function_checker::function_checker): Ditto.
16176 (function_checker::report_non_ice): Ditto.
16177 (function_checker::report_out_of_range): Ditto.
16178 (function_checker::require_immediate): Ditto.
16179 (function_checker::require_immediate_range): Ditto.
16180 (function_checker::check): Ditto.
16181 (check_builtin_call): Ditto.
16182 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
16183 (DEF_RVV_BASE_TYPE): Ditto.
16184 (DEF_RVV_TYPE_INDEX): Ditto.
16185 (vbool64_t): Ditto.
16186 (vbool32_t): Ditto.
16187 (vbool16_t): Ditto.
16192 (vuint8mf8_t): Ditto.
16193 (vuint8mf4_t): Ditto.
16194 (vuint8mf2_t): Ditto.
16195 (vuint8m1_t): Ditto.
16196 (vuint8m2_t): Ditto.
16197 (vint8m4_t): Ditto.
16198 (vuint8m4_t): Ditto.
16199 (vint8m8_t): Ditto.
16200 (vuint8m8_t): Ditto.
16201 (vint16mf4_t): Ditto.
16202 (vuint16mf2_t): Ditto.
16203 (vuint16m1_t): Ditto.
16204 (vuint16m2_t): Ditto.
16205 (vuint16m4_t): Ditto.
16206 (vuint16m8_t): Ditto.
16207 (vint32mf2_t): Ditto.
16208 (vuint32m1_t): Ditto.
16209 (vuint32m2_t): Ditto.
16210 (vuint32m4_t): Ditto.
16211 (vuint32m8_t): Ditto.
16212 (vuint64m1_t): Ditto.
16213 (vuint64m2_t): Ditto.
16214 (vuint64m4_t): Ditto.
16215 (vuint64m8_t): Ditto.
16216 (vfloat32mf2_t): Ditto.
16217 (vfloat32m1_t): Ditto.
16218 (vfloat32m2_t): Ditto.
16219 (vfloat32m4_t): Ditto.
16220 (vfloat32m8_t): Ditto.
16221 (vfloat64m1_t): Ditto.
16222 (vfloat64m4_t): Ditto.
16223 (vector): Move it def.
16226 (signed_vector): Ditto.
16227 (unsigned_vector): Ditto.
16228 (unsigned_scalar): Ditto.
16229 (vector_ptr): Ditto.
16230 (scalar_ptr): Ditto.
16231 (scalar_const_ptr): Ditto.
16235 (unsigned_long): Ditto.
16237 (eew8_index): Ditto.
16238 (eew16_index): Ditto.
16239 (eew32_index): Ditto.
16240 (eew64_index): Ditto.
16241 (shift_vector): Ditto.
16242 (double_trunc_vector): Ditto.
16243 (quad_trunc_vector): Ditto.
16244 (oct_trunc_vector): Ditto.
16245 (double_trunc_scalar): Ditto.
16246 (double_trunc_signed_vector): Ditto.
16247 (double_trunc_unsigned_vector): Ditto.
16248 (double_trunc_unsigned_scalar): Ditto.
16249 (double_trunc_float_vector): Ditto.
16250 (float_vector): Ditto.
16251 (lmul1_vector): Ditto.
16252 (widen_lmul1_vector): Ditto.
16253 (eew8_interpret): Ditto.
16254 (eew16_interpret): Ditto.
16255 (eew32_interpret): Ditto.
16256 (eew64_interpret): Ditto.
16257 (vlmul_ext_x2): Ditto.
16258 (vlmul_ext_x4): Ditto.
16259 (vlmul_ext_x8): Ditto.
16260 (vlmul_ext_x16): Ditto.
16261 (vlmul_ext_x32): Ditto.
16262 (vlmul_ext_x64): Ditto.
16263 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
16264 (struct function_type_info): New function.
16265 (struct rvv_arg_type_info): Ditto.
16266 (class function_checker): New class.
16267 (rvv_arg_type_info::get_scalar_type): New function.
16268 (rvv_arg_type_info::get_vector_type): Ditto.
16269 (function_expander::ret_mode): New function.
16270 (function_checker::arg_mode): Ditto.
16271 (function_checker::ret_mode): Ditto.
16272 * config/riscv/t-riscv: Add generator.
16273 * config/riscv/vector-iterators.md: New iterators.
16274 * config/riscv/vector.md (vundefined<mode>): New pattern.
16275 (@vundefined<mode>): Ditto.
16276 (@vreinterpret<mode>): Ditto.
16277 (@vlmul_extx2<mode>): Ditto.
16278 (@vlmul_extx4<mode>): Ditto.
16279 (@vlmul_extx8<mode>): Ditto.
16280 (@vlmul_extx16<mode>): Ditto.
16281 (@vlmul_extx32<mode>): Ditto.
16282 (@vlmul_extx64<mode>): Ditto.
16283 (*vlmul_extx2<mode>): Ditto.
16284 (*vlmul_extx4<mode>): Ditto.
16285 (*vlmul_extx8<mode>): Ditto.
16286 (*vlmul_extx16<mode>): Ditto.
16287 (*vlmul_extx32<mode>): Ditto.
16288 (*vlmul_extx64<mode>): Ditto.
16289 * config/riscv/genrvv-type-indexer.cc: New file.
16291 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16293 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
16294 (slide1_sew64_helper): New function.
16295 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
16296 (get_unknown_min_value): Ditto.
16297 (force_vector_length_operand): Ditto.
16298 (gen_no_side_effects_vsetvl_rtx): Ditto.
16299 (get_vl_x2_rtx): Ditto.
16300 (slide1_sew64_helper): Ditto.
16301 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
16302 (class vrgather): Ditto.
16303 (class vrgatherei16): Ditto.
16304 (class vcompress): Ditto.
16306 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16307 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
16308 (vslidedown): Ditto.
16309 (vslide1up): Ditto.
16310 (vslide1down): Ditto.
16311 (vfslide1up): Ditto.
16312 (vfslide1down): Ditto.
16314 (vrgatherei16): Ditto.
16315 (vcompress): Ditto.
16316 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
16317 (vint8mf8_t): Ditto.
16318 (vint8mf4_t): Ditto.
16319 (vint8mf2_t): Ditto.
16320 (vint8m1_t): Ditto.
16321 (vint8m2_t): Ditto.
16322 (vint8m4_t): Ditto.
16323 (vint16mf4_t): Ditto.
16324 (vint16mf2_t): Ditto.
16325 (vint16m1_t): Ditto.
16326 (vint16m2_t): Ditto.
16327 (vint16m4_t): Ditto.
16328 (vint16m8_t): Ditto.
16329 (vint32mf2_t): Ditto.
16330 (vint32m1_t): Ditto.
16331 (vint32m2_t): Ditto.
16332 (vint32m4_t): Ditto.
16333 (vint32m8_t): Ditto.
16334 (vint64m1_t): Ditto.
16335 (vint64m2_t): Ditto.
16336 (vint64m4_t): Ditto.
16337 (vint64m8_t): Ditto.
16338 (vuint8mf8_t): Ditto.
16339 (vuint8mf4_t): Ditto.
16340 (vuint8mf2_t): Ditto.
16341 (vuint8m1_t): Ditto.
16342 (vuint8m2_t): Ditto.
16343 (vuint8m4_t): Ditto.
16344 (vuint16mf4_t): Ditto.
16345 (vuint16mf2_t): Ditto.
16346 (vuint16m1_t): Ditto.
16347 (vuint16m2_t): Ditto.
16348 (vuint16m4_t): Ditto.
16349 (vuint16m8_t): Ditto.
16350 (vuint32mf2_t): Ditto.
16351 (vuint32m1_t): Ditto.
16352 (vuint32m2_t): Ditto.
16353 (vuint32m4_t): Ditto.
16354 (vuint32m8_t): Ditto.
16355 (vuint64m1_t): Ditto.
16356 (vuint64m2_t): Ditto.
16357 (vuint64m4_t): Ditto.
16358 (vuint64m8_t): Ditto.
16359 (vfloat32mf2_t): Ditto.
16360 (vfloat32m1_t): Ditto.
16361 (vfloat32m2_t): Ditto.
16362 (vfloat32m4_t): Ditto.
16363 (vfloat32m8_t): Ditto.
16364 (vfloat64m1_t): Ditto.
16365 (vfloat64m2_t): Ditto.
16366 (vfloat64m4_t): Ditto.
16367 (vfloat64m8_t): Ditto.
16368 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
16369 * config/riscv/riscv.md: Adjust RVV instruction types.
16370 * config/riscv/vector-iterators.md (down): New iterator.
16371 (=vd,vr): New attribute.
16372 (UNSPEC_VSLIDE1UP): New unspec.
16373 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
16374 (*pred_slide<ud><mode>): Ditto.
16375 (*pred_slide<ud><mode>_extended): Ditto.
16376 (@pred_gather<mode>): Ditto.
16377 (@pred_gather<mode>_scalar): Ditto.
16378 (@pred_gatherei16<mode>): Ditto.
16379 (@pred_compress<mode>): Ditto.
16381 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16383 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
16385 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16387 * config/riscv/constraints.md (Wb1): New constraint.
16388 * config/riscv/predicates.md
16389 (vector_least_significant_set_mask_operand): New predicate.
16390 (vector_broadcast_mask_operand): Ditto.
16391 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
16392 (gen_scalar_move_mask): New function.
16393 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
16394 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
16395 (class vmv_s): Ditto.
16397 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16398 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
16402 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
16404 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16405 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
16406 (function_expander::use_exact_insn): New function.
16407 (function_expander::use_contiguous_load_insn): New function.
16408 (function_expander::use_contiguous_store_insn): New function.
16409 (function_expander::use_ternop_insn): New function.
16410 (function_expander::use_widen_ternop_insn): New function.
16411 (function_expander::use_scalar_move_insn): New function.
16412 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
16413 * config/riscv/riscv-vector-builtins.h
16414 (function_expander::add_scalar_move_mask_operand): New class.
16415 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
16416 (scalar_move_insn_p): Ditto.
16417 (has_vsetvl_killed_avl_p): Ditto.
16418 (anticipatable_occurrence_p): Ditto.
16419 (insert_vsetvl): Ditto.
16420 (get_vl_vtype_info): Ditto.
16421 (calculate_sew): Ditto.
16422 (calculate_vlmul): Ditto.
16423 (incompatible_avl_p): Ditto.
16424 (different_sew_p): Ditto.
16425 (different_lmul_p): Ditto.
16426 (different_ratio_p): Ditto.
16427 (different_tail_policy_p): Ditto.
16428 (different_mask_policy_p): Ditto.
16429 (possible_zero_avl_p): Ditto.
16430 (first_ratio_invalid_for_second_sew_p): Ditto.
16431 (first_ratio_invalid_for_second_lmul_p): Ditto.
16432 (second_ratio_invalid_for_first_sew_p): Ditto.
16433 (second_ratio_invalid_for_first_lmul_p): Ditto.
16434 (second_sew_less_than_first_sew_p): Ditto.
16435 (first_sew_less_than_second_sew_p): Ditto.
16436 (compare_lmul): Ditto.
16437 (second_lmul_less_than_first_lmul_p): Ditto.
16438 (first_lmul_less_than_second_lmul_p): Ditto.
16439 (first_ratio_less_than_second_ratio_p): Ditto.
16440 (second_ratio_less_than_first_ratio_p): Ditto.
16441 (DEF_INCOMPATIBLE_COND): Ditto.
16442 (greatest_sew): Ditto.
16443 (first_sew): Ditto.
16444 (second_sew): Ditto.
16445 (first_vlmul): Ditto.
16446 (second_vlmul): Ditto.
16447 (first_ratio): Ditto.
16448 (second_ratio): Ditto.
16449 (vlmul_for_first_sew_second_ratio): Ditto.
16450 (ratio_for_second_sew_first_vlmul): Ditto.
16451 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
16452 (always_unavailable): Ditto.
16453 (avl_unavailable_p): Ditto.
16454 (sew_unavailable_p): Ditto.
16455 (lmul_unavailable_p): Ditto.
16456 (ge_sew_unavailable_p): Ditto.
16457 (ge_sew_lmul_unavailable_p): Ditto.
16458 (ge_sew_ratio_unavailable_p): Ditto.
16459 (DEF_UNAVAILABLE_COND): Ditto.
16460 (same_sew_lmul_demand_p): Ditto.
16461 (propagate_avl_across_demands_p): Ditto.
16462 (reg_available_p): Ditto.
16463 (avl_info::has_non_zero_avl): Ditto.
16464 (vl_vtype_info::has_non_zero_avl): Ditto.
16465 (vector_insn_info::operator>=): Refactor.
16466 (vector_insn_info::parse_insn): Adjust for scalar move.
16467 (vector_insn_info::demand_vl_vtype): Remove.
16468 (vector_insn_info::compatible_p): New function.
16469 (vector_insn_info::compatible_avl_p): Ditto.
16470 (vector_insn_info::compatible_vtype_p): Ditto.
16471 (vector_insn_info::available_p): Ditto.
16472 (vector_insn_info::merge): Ditto.
16473 (vector_insn_info::fuse_avl): Ditto.
16474 (vector_insn_info::fuse_sew_lmul): Ditto.
16475 (vector_insn_info::fuse_tail_policy): Ditto.
16476 (vector_insn_info::fuse_mask_policy): Ditto.
16477 (vector_insn_info::dump): Ditto.
16478 (vector_infos_manager::release): Ditto.
16479 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
16480 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
16481 (pass_vsetvl::hard_empty_block_p): Ditto.
16482 (pass_vsetvl::backward_demand_fusion): Ditto.
16483 (pass_vsetvl::forward_demand_fusion): Ditto.
16484 (pass_vsetvl::refine_vsetvls): Ditto.
16485 (pass_vsetvl::cleanup_vsetvls): Ditto.
16486 (pass_vsetvl::commit_vsetvls): Ditto.
16487 (pass_vsetvl::propagate_avl): Ditto.
16488 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
16489 (struct demands_pair): Ditto.
16490 (struct demands_cond): Ditto.
16491 (struct demands_fuse_rule): Ditto.
16492 * config/riscv/vector-iterators.md: New iterator.
16493 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
16494 (*pred_broadcast<mode>): Ditto.
16495 (*pred_broadcast<mode>_extended_scalar): Ditto.
16496 (@pred_extract_first<mode>): Ditto.
16497 (*pred_extract_first<mode>): Ditto.
16498 (@pred_extract_first_trunc<mode>): Ditto.
16499 * config/riscv/riscv-vsetvl.def: New file.
16501 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
16503 * config/riscv/bitmanip.md: allow 0 constant in max/min
16506 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
16508 * config/riscv/bitmanip.md: Fix wrong index in the check.
16510 2023-03-04 Jakub Jelinek <jakub@redhat.com>
16512 PR middle-end/109006
16513 * vec.cc (test_auto_alias): Adjust comment for removal of
16515 * read-rtl-function.cc (function_reader::parse_block): Likewise.
16516 * gdbhooks.py: Likewise.
16518 2023-03-04 Jakub Jelinek <jakub@redhat.com>
16520 PR testsuite/108973
16521 * selftest-diagnostic.cc
16522 (test_diagnostic_context::test_diagnostic_context): Set
16523 caret_max_width to 80.
16525 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16527 * gimple-ssa-warn-access.cc
16528 (pass_waccess::check_dangling_stores): Skip non-stores.
16530 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16532 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
16533 after vmsr and vmrs, and lower the case of P0.
16535 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
16537 PR middle-end/109006
16538 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
16540 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
16542 PR middle-end/109006
16543 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
16545 2023-03-03 Jakub Jelinek <jakub@redhat.com>
16548 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
16549 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
16550 suppressed on stmt. For [static %E] warning, print access_nelts
16551 rather than access_size. Fix up comment wording.
16553 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
16555 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
16556 arch14 instead of z16.
16558 2023-03-03 Anthony Green <green@moxielogic.com>
16560 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
16562 2023-03-03 Anthony Green <green@moxielogic.com>
16564 * config/moxie/constraints.md (A, B, W): Change
16565 define_constraint to define_memory_constraint.
16567 2023-03-03 Xi Ruoyao <xry111@xry111.site>
16569 * toplev.cc (process_options): Fix the spelling of
16570 "-fstack-clash-protection".
16572 2023-03-03 Richard Biener <rguenther@suse.de>
16574 PR tree-optimization/109002
16575 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
16576 PHI-translate ANTIC_IN.
16578 2023-03-03 Jakub Jelinek <jakub@redhat.com>
16580 PR tree-optimization/108988
16581 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
16582 size_type_node before passing it as argument to fwrite. Formatting
16585 2023-03-03 Richard Biener <rguenther@suse.de>
16588 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
16589 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
16590 * config/i386/i386-features.h (scalar_chain::max_visits): New.
16591 (scalar_chain::build): Add bitmap parameter, return boolean.
16592 (scalar_chain::add_insn): Likewise.
16593 (scalar_chain::analyze_register_chain): Likewise.
16594 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
16595 Initialize max_visits.
16596 (scalar_chain::analyze_register_chain): When we exhaust
16597 max_visits, abort. Also abort when running into any
16599 (scalar_chain::add_insn): Propagate abort.
16600 (scalar_chain::build): Likewise. When aborting amend
16601 the set of disallowed insn with the insns set.
16602 (convert_scalars_to_vector): Adjust. Do not convert aborted
16605 2023-03-03 Richard Biener <rguenther@suse.de>
16608 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
16609 generate a DIE for a function scope static.
16611 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16613 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
16615 2023-03-02 Jakub Jelinek <jakub@redhat.com>
16618 * target.h (emit_support_tinfos_callback): New typedef.
16619 * targhooks.h (default_emit_support_tinfos): Declare.
16620 * targhooks.cc (default_emit_support_tinfos): New function.
16621 * target.def (emit_support_tinfos): New target hook.
16622 * doc/tm.texi.in (emit_support_tinfos): Document it.
16623 * doc/tm.texi: Regenerated.
16624 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
16625 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
16627 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
16629 * ira-costs.cc: Include print-rtl.h.
16630 (record_reg_classes, scan_one_insn): Add code to print debug info.
16631 (record_operand_costs): Find and use smaller cost for hard reg
16634 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
16635 Paul-Antoine Arras <pa@codesourcery.com>
16637 * builtins.cc (mathfn_built_in_explicit): New.
16638 * config/gcn/gcn.cc: Include case-cfn-macros.h.
16639 (mathfn_built_in_explicit): Add prototype.
16640 (gcn_vectorize_builtin_vectorized_function): New.
16641 (gcn_libc_has_function): New.
16642 (TARGET_LIBC_HAS_FUNCTION): Define.
16643 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
16645 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16647 PR tree-optimization/108979
16648 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
16649 operations on invariants.
16651 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
16653 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
16654 * config/s390/s390.cc (s390_option_override_internal): Make
16655 partial vector usage the default from z13 on.
16656 * config/s390/vector.md (len_load_v16qi): Add.
16657 (len_store_v16qi): Add.
16659 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
16661 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
16662 of constant 0 offset.
16664 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
16666 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
16668 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
16670 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
16672 * config.gcc: add -with-{no-}msa build option.
16673 * config/mips/mips.h: Likewise.
16674 * doc/install.texi: Likewise.
16676 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16678 PR tree-optimization/108603
16679 * explow.cc (convert_memory_address_addr_space_1): Only wrap
16680 the result of a recursive call in a CONST if no instructions
16683 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16685 PR tree-optimization/108430
16686 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
16687 of inverted condition.
16689 2023-03-02 Jakub Jelinek <jakub@redhat.com>
16692 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
16693 comparison copy the bytes from ptr to a temporary buffer and clearing
16694 padding bits in there.
16696 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
16698 PR middle-end/108545
16699 * gimplify.cc (struct tree_operand_hash_no_se): New.
16700 (omp_index_mapping_groups_1, omp_index_mapping_groups,
16701 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
16702 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
16703 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
16704 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
16705 of tree_operand_hash.
16707 2023-03-01 LIU Hao <lh_mouse@126.com>
16710 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
16711 Remove the size limit `pch_VA_max_size`
16713 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
16715 PR middle-end/108546
16716 * omp-low.cc (lower_omp_target): Remove optional handling
16717 on the receiver side, i.e. inside target (data), for
16720 2023-03-01 Jakub Jelinek <jakub@redhat.com>
16723 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
16724 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
16726 2023-03-01 Richard Biener <rguenther@suse.de>
16728 PR tree-optimization/108970
16729 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
16730 Check we can copy the BBs.
16731 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
16733 (vect_do_peeling): Streamline error handling.
16735 2023-03-01 Richard Biener <rguenther@suse.de>
16737 PR tree-optimization/108950
16738 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
16739 Check oprnd0 is defined in the loop.
16740 * tree-vect-loop.cc (vectorizable_reduction): Record all
16741 operands vector types, compute that of invariants and
16742 properly update their SLP nodes.
16744 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
16747 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
16748 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
16750 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
16752 PR middle-end/107411
16753 PR middle-end/107411
16754 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
16756 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
16757 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
16759 2023-02-28 Jakub Jelinek <jakub@redhat.com>
16761 PR sanitizer/108894
16762 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
16763 comparison rather than index > bound.
16764 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
16765 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
16766 * doc/invoke.texi (-fsanitize=bounds): Document that whether
16767 flexible array member-like arrays are instrumented or not depends
16768 on -fstrict-flex-arrays* options of strict_flex_array attributes.
16769 (-fsanitize=bounds-strict): Document that flexible array members
16770 are not instrumented.
16772 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
16776 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
16777 (fmod<mode>3): Ditto.
16778 (fpremxf4_i387): Ditto.
16779 (reminderxf3): Ditto.
16780 (reminder<mode>3): Ditto.
16781 (fprem1xf4_i387): Ditto.
16783 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
16785 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
16786 generating FFS with mismatched operand and result modes, by using
16787 an explicit SIGN_EXTEND/ZERO_EXTEND.
16788 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
16789 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
16791 2023-02-27 Patrick Palka <ppalka@redhat.com>
16793 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
16794 * lra-int.h (lra_change_class): Likewise.
16795 * recog.h (which_op_alt): Likewise.
16796 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
16799 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16801 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
16803 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
16805 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
16806 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
16808 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
16810 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
16811 (xtensa_get_config_v3): New functions.
16813 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16815 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
16817 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
16819 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
16820 the macro to 0x1000000000.
16822 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
16825 * doc/gm2.texi (-fm2-pathname): New option documented.
16826 (-fm2-pathnameI): New option documented.
16827 (-fm2-prefix=): New option documented.
16828 (-fruntime-modules=): Update default module list.
16830 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
16833 * config/xtensa/xtensa-protos.h
16834 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
16835 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
16836 to xtensa_expand_call.
16837 (xtensa_expand_call): Emit the call and add a clobber expression
16838 for the static chain to it in case of windowed ABI.
16839 * config/xtensa/xtensa.md (call, call_value, sibcall)
16840 (sibcall_value): Call xtensa_expand_call and complete expansion
16841 right after that call.
16843 2023-02-24 Richard Biener <rguenther@suse.de>
16845 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
16846 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
16847 changing alignment of vec<T, A, vl_embed> and simplifying
16849 (vec<T, A, vl_embed>::address): Compute as this + 1.
16850 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
16851 vector instead of the offset of the m_vecdata member.
16852 (auto_vec<T, N>::m_data): Turn storage into
16853 uninitialized unsigned char.
16854 (auto_vec<T, N>::auto_vec): Allow allocation of one
16855 stack member. Initialize m_vec in a special way to
16856 avoid later stringop overflow diagnostics.
16857 * vec.cc (test_auto_alias): New.
16858 (vec_cc_tests): Call it.
16860 2023-02-24 Richard Biener <rguenther@suse.de>
16862 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
16863 take a const reference to the object, use address to
16865 (vec<T, A, vl_embed>::contains): Use address to access data.
16866 (vec<T, A, vl_embed>::operator[]): Use address instead of
16867 m_vecdata to access data.
16868 (vec<T, A, vl_embed>::iterate): Likewise.
16869 (vec<T, A, vl_embed>::copy): Likewise.
16870 (vec<T, A, vl_embed>::quick_push): Likewise.
16871 (vec<T, A, vl_embed>::pop): Likewise.
16872 (vec<T, A, vl_embed>::quick_insert): Likewise.
16873 (vec<T, A, vl_embed>::ordered_remove): Likewise.
16874 (vec<T, A, vl_embed>::unordered_remove): Likewise.
16875 (vec<T, A, vl_embed>::block_remove): Likewise.
16876 (vec<T, A, vl_heap>::address): Likewise.
16878 2023-02-24 Martin Liska <mliska@suse.cz>
16880 PR sanitizer/108834
16881 * asan.cc (asan_add_global): Use proper TU name for normal
16882 global variables (and aux_base_name for the artificial one).
16884 2023-02-24 Jakub Jelinek <jakub@redhat.com>
16886 * config/i386/i386-builtin.def: Update description of BDESC
16887 and BDESC_FIRST in file comment to include mask2.
16889 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16891 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
16893 2023-02-24 Jakub Jelinek <jakub@redhat.com>
16895 PR middle-end/108854
16896 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
16897 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
16898 nodes and adjust their DECL_CONTEXT.
16900 2023-02-24 Jakub Jelinek <jakub@redhat.com>
16903 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
16904 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
16905 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
16906 __builtin_ia32_cvtne2ps2bf16_v8bf,
16907 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
16908 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
16909 __builtin_ia32_cvtneps2bf16_v8sf_mask,
16910 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
16911 __builtin_ia32_cvtneps2bf16_v4sf_mask,
16912 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
16913 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
16914 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
16915 __builtin_ia32_dpbf16ps_v4sf_mask,
16916 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
16917 OPTION_MASK_ISA_AVX512VL.
16919 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
16921 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
16922 Add non-compact 32-bit multilibs.
16924 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
16926 * config/mips/mips.md (*clo<mode>2): New pattern.
16928 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
16930 * config/mips/mips.h (machine_function): New variable
16931 use_hazard_barrier_return_p.
16932 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
16933 (mips_hb_return_internal): New insn pattern.
16934 * config/mips/mips.cc (mips_attribute_table): Add attribute
16935 use_hazard_barrier_return.
16936 (mips_use_hazard_barrier_return_p): New static function.
16937 (mips_function_attr_inlinable_p): Likewise.
16938 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
16939 Emit error for unsupported architecture choice.
16940 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
16941 Return false for use_hazard_barrier_return.
16942 (mips_expand_epilogue): Emit hazard barrier return.
16943 * doc/extend.texi: Document use_hazard_barrier_return.
16945 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
16947 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
16948 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
16949 for the gcc-internal headers.
16951 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
16953 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
16954 and $(POSTCOMPILE) instead of manual dependency listing.
16955 * config/xtensa/xtensa-dynconfig.c: Rename to ...
16956 * config/xtensa/xtensa-dynconfig.cc: ... this.
16958 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
16960 * doc/cfg.texi: Reorder index entries around @items.
16961 * doc/cpp.texi: Ditto.
16962 * doc/cppenv.texi: Ditto.
16963 * doc/cppopts.texi: Ditto.
16964 * doc/generic.texi: Ditto.
16965 * doc/install.texi: Ditto.
16966 * doc/extend.texi: Ditto.
16967 * doc/invoke.texi: Ditto.
16968 * doc/md.texi: Ditto.
16969 * doc/rtl.texi: Ditto.
16970 * doc/tm.texi.in: Ditto.
16971 * doc/trouble.texi: Ditto.
16972 * doc/tm.texi: Regenerate.
16974 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16976 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
16977 the occurrence of general-purpose register used only once and for
16978 transferring intermediate value.
16980 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16982 * config/xtensa/xtensa.cc (machine_function): Add new member
16983 'eliminated_callee_saved_bmp'.
16984 (xtensa_can_eliminate_callee_saved_reg_p): New function to
16985 determine whether the register can be eliminated or not.
16986 (xtensa_expand_prologue): Add invoking the above function and
16987 elimination the use of callee-saved register by using its stack
16988 slot through the stack pointer (or the frame pointer if needed)
16990 (xtensa_expand_prologue): Modify to not emit register restoration
16991 insn from its stack slot if the register is already eliminated.
16993 2023-02-23 Jakub Jelinek <jakub@redhat.com>
16995 PR translation/108890
16996 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
16997 around fatal_error format strings.
16999 2023-02-23 Richard Biener <rguenther@suse.de>
17001 * tree-ssa-structalias.cc (handle_lhs_call): Do not
17002 re-create rhsc, only truncate it.
17004 2023-02-23 Jakub Jelinek <jakub@redhat.com>
17006 PR middle-end/106258
17007 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
17008 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
17010 2023-02-23 Richard Biener <rguenther@suse.de>
17012 * tree-if-conv.cc (tree_if_conversion): Properly manage
17013 memory of refs and the contained data references.
17015 2023-02-23 Richard Biener <rguenther@suse.de>
17017 PR tree-optimization/108888
17018 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
17019 calls to predicate.
17020 (predicate_statements): Only predicate calls with PLF_2.
17022 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17024 * config/xtensa/xtensa.md
17025 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
17026 Add missing "SI:" to PLUS RTXes.
17028 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17031 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
17032 Emit (use (reg:SI A0_REG)) at the end in the sibling call
17033 (i.e. the same place as (return) in the normal call).
17035 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17038 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
17041 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
17043 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
17044 (sibcall_value, sibcall_value_internal): Add 'use' expression
17047 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
17049 * doc/cppdiropts.texi: Reorder @opindex commands to precede
17050 @items they relate to.
17051 * doc/cppopts.texi: Ditto.
17052 * doc/cppwarnopts.texi: Ditto.
17053 * doc/invoke.texi: Ditto.
17054 * doc/lto.texi: Ditto.
17056 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
17058 * internal-fn.cc (expand_MASK_CALL): New.
17059 * internal-fn.def (MASK_CALL): New.
17060 * internal-fn.h (expand_MASK_CALL): New prototype.
17061 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
17062 for mask arguments also.
17063 * tree-if-conv.cc: Include cgraph.h.
17064 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
17065 (predicate_statements): Convert functions to IFN_MASK_CALL.
17066 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
17067 IFN_MASK_CALL as a SIMD function call.
17068 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
17069 IFN_MASK_CALL as an inbranch SIMD function call.
17070 Generate the mask vector arguments.
17072 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17074 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
17075 (class widen_reducop): Ditto.
17076 (class freducop): Ditto.
17077 (class widen_freducop): Ditto.
17079 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17080 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
17089 (vwredsumu): Ditto.
17090 (vfredusum): Ditto.
17091 (vfredosum): Ditto.
17094 (vfwredosum): Ditto.
17095 (vfwredusum): Ditto.
17096 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
17098 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17099 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
17100 (DEF_RVV_WU_OPS): Ditto.
17101 (DEF_RVV_WF_OPS): Ditto.
17102 (vint8mf8_t): Ditto.
17103 (vint8mf4_t): Ditto.
17104 (vint8mf2_t): Ditto.
17105 (vint8m1_t): Ditto.
17106 (vint8m2_t): Ditto.
17107 (vint8m4_t): Ditto.
17108 (vint8m8_t): Ditto.
17109 (vint16mf4_t): Ditto.
17110 (vint16mf2_t): Ditto.
17111 (vint16m1_t): Ditto.
17112 (vint16m2_t): Ditto.
17113 (vint16m4_t): Ditto.
17114 (vint16m8_t): Ditto.
17115 (vint32mf2_t): Ditto.
17116 (vint32m1_t): Ditto.
17117 (vint32m2_t): Ditto.
17118 (vint32m4_t): Ditto.
17119 (vint32m8_t): Ditto.
17120 (vuint8mf8_t): Ditto.
17121 (vuint8mf4_t): Ditto.
17122 (vuint8mf2_t): Ditto.
17123 (vuint8m1_t): Ditto.
17124 (vuint8m2_t): Ditto.
17125 (vuint8m4_t): Ditto.
17126 (vuint8m8_t): Ditto.
17127 (vuint16mf4_t): Ditto.
17128 (vuint16mf2_t): Ditto.
17129 (vuint16m1_t): Ditto.
17130 (vuint16m2_t): Ditto.
17131 (vuint16m4_t): Ditto.
17132 (vuint16m8_t): Ditto.
17133 (vuint32mf2_t): Ditto.
17134 (vuint32m1_t): Ditto.
17135 (vuint32m2_t): Ditto.
17136 (vuint32m4_t): Ditto.
17137 (vuint32m8_t): Ditto.
17138 (vfloat32mf2_t): Ditto.
17139 (vfloat32m1_t): Ditto.
17140 (vfloat32m2_t): Ditto.
17141 (vfloat32m4_t): Ditto.
17142 (vfloat32m8_t): Ditto.
17143 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
17144 (DEF_RVV_WU_OPS): Ditto.
17145 (DEF_RVV_WF_OPS): Ditto.
17146 (required_extensions_p): Add reduction support.
17147 (rvv_arg_type_info::get_base_vector_type): Ditto.
17148 (rvv_arg_type_info::get_tree_type): Ditto.
17149 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
17150 * config/riscv/riscv.md: Ditto.
17151 * config/riscv/vector-iterators.md (minu): Ditto.
17152 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
17153 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
17154 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
17155 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
17156 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
17157 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
17158 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
17160 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17162 * config/riscv/iterators.md: New iterator.
17163 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
17164 (enum ternop_type): New enum.
17165 (class vmacc): New class.
17166 (class imac): Ditto.
17167 (class vnmsac): Ditto.
17168 (enum widen_ternop_type): New enum.
17169 (class vmadd): Ditto.
17170 (class vnmsub): Ditto.
17171 (class iwmac): Ditto.
17172 (class vwmacc): Ditto.
17173 (class vwmaccu): Ditto.
17174 (class vwmaccsu): Ditto.
17175 (class vwmaccus): Ditto.
17176 (class reverse_binop): Ditto.
17177 (class vfmacc): Ditto.
17178 (class vfnmsac): Ditto.
17179 (class vfmadd): Ditto.
17180 (class vfnmsub): Ditto.
17181 (class vfnmacc): Ditto.
17182 (class vfmsac): Ditto.
17183 (class vfnmadd): Ditto.
17184 (class vfmsub): Ditto.
17185 (class vfwmacc): Ditto.
17186 (class vfwnmacc): Ditto.
17187 (class vfwmsac): Ditto.
17188 (class vfwnmsac): Ditto.
17189 (class float_misc): Ditto.
17190 (class fcmp): Ditto.
17191 (class vfclass): Ditto.
17192 (class vfcvt_x): Ditto.
17193 (class vfcvt_rtz_x): Ditto.
17194 (class vfcvt_f): Ditto.
17195 (class vfwcvt_x): Ditto.
17196 (class vfwcvt_rtz_x): Ditto.
17197 (class vfwcvt_f): Ditto.
17198 (class vfncvt_x): Ditto.
17199 (class vfncvt_rtz_x): Ditto.
17200 (class vfncvt_f): Ditto.
17201 (class vfncvt_rod_f): Ditto.
17203 * config/riscv/riscv-vector-builtins-bases.h:
17204 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
17248 (vfcvt_rtz_x): Ditto.
17249 (vfcvt_rtz_xu): Ditto.
17252 (vfwcvt_xu): Ditto.
17253 (vfwcvt_rtz_x): Ditto.
17254 (vfwcvt_rtz_xu): Ditto.
17257 (vfncvt_xu): Ditto.
17258 (vfncvt_rtz_x): Ditto.
17259 (vfncvt_rtz_xu): Ditto.
17261 (vfncvt_rod_f): Ditto.
17262 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
17263 (struct move_def): Ditto.
17264 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
17265 (DEF_RVV_CONVERT_I_OPS): Ditto.
17266 (DEF_RVV_CONVERT_U_OPS): Ditto.
17267 (DEF_RVV_WCONVERT_I_OPS): Ditto.
17268 (DEF_RVV_WCONVERT_U_OPS): Ditto.
17269 (DEF_RVV_WCONVERT_F_OPS): Ditto.
17270 (vfloat64m1_t): Ditto.
17271 (vfloat64m2_t): Ditto.
17272 (vfloat64m4_t): Ditto.
17273 (vfloat64m8_t): Ditto.
17274 (vint32mf2_t): Ditto.
17275 (vint32m1_t): Ditto.
17276 (vint32m2_t): Ditto.
17277 (vint32m4_t): Ditto.
17278 (vint32m8_t): Ditto.
17279 (vint64m1_t): Ditto.
17280 (vint64m2_t): Ditto.
17281 (vint64m4_t): Ditto.
17282 (vint64m8_t): Ditto.
17283 (vuint32mf2_t): Ditto.
17284 (vuint32m1_t): Ditto.
17285 (vuint32m2_t): Ditto.
17286 (vuint32m4_t): Ditto.
17287 (vuint32m8_t): Ditto.
17288 (vuint64m1_t): Ditto.
17289 (vuint64m2_t): Ditto.
17290 (vuint64m4_t): Ditto.
17291 (vuint64m8_t): Ditto.
17292 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
17293 (DEF_RVV_CONVERT_U_OPS): Ditto.
17294 (DEF_RVV_WCONVERT_I_OPS): Ditto.
17295 (DEF_RVV_WCONVERT_U_OPS): Ditto.
17296 (DEF_RVV_WCONVERT_F_OPS): Ditto.
17297 (DEF_RVV_F_OPS): Ditto.
17298 (DEF_RVV_WEXTF_OPS): Ditto.
17299 (required_extensions_p): Adjust for floating-point support.
17300 (check_required_extensions): Ditto.
17301 (unsigned_base_type_p): Ditto.
17302 (get_mode_for_bitsize): Ditto.
17303 (rvv_arg_type_info::get_base_vector_type): Ditto.
17304 (rvv_arg_type_info::get_tree_type): Ditto.
17305 * config/riscv/riscv-vector-builtins.def (v_f): New define.
17308 (xu_v): New define.
17310 (xu_w): New define.
17311 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
17312 (function_expander::arg_mode): New function.
17313 * config/riscv/vector-iterators.md (sof): New iterator.
17319 (fixuns_trunc): Ditto.
17321 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
17322 (@pred_<optab><mode>): Ditto.
17323 (@pred_<optab><mode>_scalar): Ditto.
17324 (@pred_<optab><mode>_reverse_scalar): Ditto.
17325 (@pred_<copysign><mode>): Ditto.
17326 (@pred_<copysign><mode>_scalar): Ditto.
17327 (@pred_mul_<optab><mode>): Ditto.
17328 (pred_mul_<optab><mode>_undef_merge): Ditto.
17329 (*pred_<madd_nmsub><mode>): Ditto.
17330 (*pred_<macc_nmsac><mode>): Ditto.
17331 (*pred_mul_<optab><mode>): Ditto.
17332 (@pred_mul_<optab><mode>_scalar): Ditto.
17333 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
17334 (*pred_<madd_nmsub><mode>_scalar): Ditto.
17335 (*pred_<macc_nmsac><mode>_scalar): Ditto.
17336 (*pred_mul_<optab><mode>_scalar): Ditto.
17337 (@pred_neg_mul_<optab><mode>): Ditto.
17338 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
17339 (*pred_<nmadd_msub><mode>): Ditto.
17340 (*pred_<nmacc_msac><mode>): Ditto.
17341 (*pred_neg_mul_<optab><mode>): Ditto.
17342 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
17343 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
17344 (*pred_<nmadd_msub><mode>_scalar): Ditto.
17345 (*pred_<nmacc_msac><mode>_scalar): Ditto.
17346 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
17347 (@pred_<misc_op><mode>): Ditto.
17348 (@pred_class<mode>): Ditto.
17349 (@pred_dual_widen_<optab><mode>): Ditto.
17350 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
17351 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
17352 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
17353 (@pred_widen_mul_<optab><mode>): Ditto.
17354 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
17355 (@pred_widen_neg_mul_<optab><mode>): Ditto.
17356 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
17357 (@pred_cmp<mode>): Ditto.
17358 (*pred_cmp<mode>): Ditto.
17359 (*pred_cmp<mode>_narrow): Ditto.
17360 (@pred_cmp<mode>_scalar): Ditto.
17361 (*pred_cmp<mode>_scalar): Ditto.
17362 (*pred_cmp<mode>_scalar_narrow): Ditto.
17363 (@pred_eqne<mode>_scalar): Ditto.
17364 (*pred_eqne<mode>_scalar): Ditto.
17365 (*pred_eqne<mode>_scalar_narrow): Ditto.
17366 (@pred_merge<mode>_scalar): Ditto.
17367 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
17368 (@pred_<fix_cvt><mode>): Ditto.
17369 (@pred_<float_cvt><mode>): Ditto.
17370 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
17371 (@pred_widen_<fix_cvt><mode>): Ditto.
17372 (@pred_widen_<float_cvt><mode>): Ditto.
17373 (@pred_extend<mode>): Ditto.
17374 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
17375 (@pred_narrow_<fix_cvt><mode>): Ditto.
17376 (@pred_narrow_<float_cvt><mode>): Ditto.
17377 (@pred_trunc<mode>): Ditto.
17378 (@pred_rod_trunc<mode>): Ditto.
17380 2023-02-22 Jakub Jelinek <jakub@redhat.com>
17382 PR middle-end/106258
17383 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
17384 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
17385 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
17386 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
17388 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
17390 * common.opt (-Wcomplain-wrong-lang): New.
17391 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
17392 * opts-common.cc (prune_options): Handle it.
17393 * opts-global.cc (complain_wrong_lang): Use it.
17395 2023-02-21 David Malcolm <dmalcolm@redhat.com>
17398 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
17400 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
17403 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
17405 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
17406 (sibcall_value, sibcall_value_internal): Add 'use' expression
17409 2023-02-21 Richard Biener <rguenther@suse.de>
17411 PR tree-optimization/108691
17412 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
17413 assert about calls_setjmp not becoming true when it was false.
17415 2023-02-21 Richard Biener <rguenther@suse.de>
17417 PR tree-optimization/108793
17418 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
17419 Use convert operands to niter_type when computing num.
17421 2023-02-21 Richard Biener <rguenther@suse.de>
17424 2023-02-13 Richard Biener <rguenther@suse.de>
17426 PR tree-optimization/108691
17427 * tree-cfg.cc (notice_special_calls): When the CFG is built
17428 honor gimple_call_ctrl_altering_p.
17429 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
17430 temporarily if the call is not control-altering.
17431 * calls.cc (emit_call_1): Do not add REG_SETJMP if
17432 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
17434 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17436 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
17437 true if register A0 (return address register) when -Og is specified.
17439 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
17441 * config/i386/predicates.md
17442 (general_x64constmem_operand): New predicate.
17443 * config/i386/i386.md (*cmpqi_ext<mode>_1):
17444 Use nonimm_x64constmem_operand.
17445 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
17446 (*addqi_ext<mode>_1): Ditto.
17447 (*testqi_ext<mode>_1): Ditto.
17448 (*andqi_ext<mode>_1): Ditto.
17449 (*andqi_ext<mode>_1_cc): Ditto.
17450 (*<any_or:code>qi_ext<mode>_1): Ditto.
17451 (*xorqi_ext<mode>_1_cc): Ditto.
17453 2023-02-20 Jakub Jelinek <jakub2redhat.com>
17456 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
17457 gen_umadddi4_highpart{,_le}.
17459 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
17461 * config/riscv/riscv.md (prefetch): Use r instead of p for the
17463 (riscv_prefetchi_<mode>): Ditto.
17465 2023-02-20 Richard Biener <rguenther@suse.de>
17467 PR tree-optimization/108816
17468 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
17469 versioning condition split prerequesite, assert required
17472 2023-02-20 Richard Biener <rguenther@suse.de>
17474 PR tree-optimization/108825
17475 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
17476 loop-local verfication only verify there's no pending SSA
17479 2023-02-20 Richard Biener <rguenther@suse.de>
17481 PR tree-optimization/108819
17482 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
17483 we have an SSA name as iv_2 as expected.
17485 2023-02-18 Jakub Jelinek <jakub@redhat.com>
17487 PR tree-optimization/108819
17488 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
17490 2023-02-18 Jakub Jelinek <jakub@redhat.com>
17493 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
17494 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
17496 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
17497 with ix86_replace_reg_with_reg.
17499 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
17501 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
17503 2023-02-18 Xi Ruoyao <xry111@xry111.site>
17505 * config.gcc (triplet_abi): Set its value based on $with_abi,
17506 instead of $target.
17507 (la_canonical_triplet): Set it after $triplet_abi is set
17509 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
17510 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
17513 2023-02-18 Andrew Pinski <apinski@marvell.com>
17515 * match.pd: Remove #if GIMPLE around the
17518 2023-02-18 Andrew Pinski <apinski@marvell.com>
17520 * value-query.h (get_range_query): Return the global ranges
17521 for a nullptr func.
17523 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
17525 * doc/invoke.texi (@item -Wall): Fix typo in
17528 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
17531 * config/i386/predicates.md
17532 (nonimm_x64constmem_operand): New predicate.
17533 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
17534 (*subqi_ext<mode>_0): Ditto.
17535 (*andqi_ext<mode>_0): Ditto.
17536 (*<any_or:code>qi_ext<mode>_0): Ditto.
17538 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
17541 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
17542 int_outermode instead of GET_MODE (tem) to prevent
17543 VOIDmode from entering simplify_gen_subreg.
17545 2023-02-17 Richard Biener <rguenther@suse.de>
17547 PR tree-optimization/108821
17548 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
17549 move volatile accesses.
17551 2023-02-17 Richard Biener <rguenther@suse.de>
17553 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
17554 called on virtual operands.
17555 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
17556 ssa_undefined_value_p calls.
17557 (vn_phi_insert): Likewise.
17558 (set_ssa_val_to): Likewise.
17559 (visit_phi): Avoid extra work with equivalences for
17560 virtual operand PHIs.
17562 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17564 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
17566 (class mask_nlogic): Ditto.
17567 (class mask_notlogic): Ditto.
17568 (class vmmv): Ditto.
17569 (class vmclr): Ditto.
17570 (class vmset): Ditto.
17571 (class vmnot): Ditto.
17572 (class vcpop): Ditto.
17573 (class vfirst): Ditto.
17574 (class mask_misc): Ditto.
17575 (class viota): Ditto.
17576 (class vid): Ditto.
17578 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17579 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
17598 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
17599 (struct mask_alu_def): Ditto.
17601 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17602 * config/riscv/riscv-vector-builtins.cc: Ditto.
17603 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
17604 for dest it scalar RVV intrinsics.
17605 * config/riscv/vector-iterators.md (sof): New iterator.
17606 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
17607 (@pred_<optab>not<mode>): New pattern.
17608 (@pred_popcount<VB:mode><P:mode>): New pattern.
17609 (@pred_ffs<VB:mode><P:mode>): New pattern.
17610 (@pred_<misc_op><mode>): New pattern.
17611 (@pred_iota<mode>): New pattern.
17612 (@pred_series<mode>): New pattern.
17614 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17616 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
17620 * config/riscv/riscv-vector-builtins.cc: Ditto.
17622 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17623 kito-cheng <kito.cheng@sifive.com>
17625 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
17626 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
17627 (sew64_scalar_helper): New function.
17628 * config/riscv/vector.md: Normalization.
17630 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17632 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
17694 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17696 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
17697 (@pred_<optab><mode>_scalar): Ditto.
17698 (*pred_<optab><mode>_scalar): Ditto.
17699 (*pred_<optab><mode>_extended_scalar): Ditto.
17701 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17703 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
17704 (init_builtins): Ditto.
17705 (mangle_builtin_type): Ditto.
17706 (verify_type_context): Ditto.
17707 (handle_pragma_vector): Ditto.
17708 (builtin_decl): Ditto.
17709 (expand_builtin): Ditto.
17710 (const_vec_all_same_in_range_p): Ditto.
17711 (legitimize_move): Ditto.
17712 (emit_vlmax_op): Ditto.
17713 (emit_nonvlmax_op): Ditto.
17714 (get_vlmul): Ditto.
17715 (get_ratio): Ditto.
17718 (get_avl_type): Ditto.
17719 (calculate_ratio): Ditto.
17720 (enum vlmul_type): Ditto.
17722 (neg_simm5_p): Ditto.
17723 (has_vi_variant_p): Ditto.
17725 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17727 * config/riscv/riscv-protos.h (simm32_p): Remove.
17728 * config/riscv/riscv-v.cc (simm32_p): Ditto.
17729 * config/riscv/vector.md: Use immediate_operand
17730 instead of riscv_vector::simm32_p.
17732 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
17734 * doc/invoke.texi (Optimize Options): Reword the explanation
17735 getting minimal, maximal and default values of a parameter.
17737 2023-02-16 Patrick Palka <ppalka@redhat.com>
17739 * addresses.h: Mechanically drop 'static' from 'static inline'
17740 functions via s/^static inline/inline/g.
17741 * asan.h: Likewise.
17742 * attribs.h: Likewise.
17743 * basic-block.h: Likewise.
17744 * bitmap.h: Likewise.
17745 * cfghooks.h: Likewise.
17746 * cfgloop.h: Likewise.
17747 * cgraph.h: Likewise.
17748 * cselib.h: Likewise.
17749 * data-streamer.h: Likewise.
17750 * debug.h: Likewise.
17752 * diagnostic.h: Likewise.
17753 * dominance.h: Likewise.
17754 * dumpfile.h: Likewise.
17755 * emit-rtl.h: Likewise.
17756 * except.h: Likewise.
17757 * expmed.h: Likewise.
17758 * expr.h: Likewise.
17759 * fixed-value.h: Likewise.
17760 * gengtype.h: Likewise.
17761 * gimple-expr.h: Likewise.
17762 * gimple-iterator.h: Likewise.
17763 * gimple-predict.h: Likewise.
17764 * gimple-range-fold.h: Likewise.
17765 * gimple-ssa.h: Likewise.
17766 * gimple.h: Likewise.
17767 * graphite.h: Likewise.
17768 * hard-reg-set.h: Likewise.
17769 * hash-map.h: Likewise.
17770 * hash-set.h: Likewise.
17771 * hash-table.h: Likewise.
17772 * hwint.h: Likewise.
17773 * input.h: Likewise.
17774 * insn-addr.h: Likewise.
17775 * internal-fn.h: Likewise.
17776 * ipa-fnsummary.h: Likewise.
17777 * ipa-icf-gimple.h: Likewise.
17778 * ipa-inline.h: Likewise.
17779 * ipa-modref.h: Likewise.
17780 * ipa-prop.h: Likewise.
17781 * ira-int.h: Likewise.
17783 * lra-int.h: Likewise.
17785 * lto-streamer.h: Likewise.
17786 * memmodel.h: Likewise.
17787 * omp-general.h: Likewise.
17788 * optabs-query.h: Likewise.
17789 * optabs.h: Likewise.
17790 * plugin.h: Likewise.
17791 * pretty-print.h: Likewise.
17792 * range.h: Likewise.
17793 * read-md.h: Likewise.
17794 * recog.h: Likewise.
17795 * regs.h: Likewise.
17796 * rtl-iter.h: Likewise.
17798 * sbitmap.h: Likewise.
17799 * sched-int.h: Likewise.
17800 * sel-sched-ir.h: Likewise.
17801 * sese.h: Likewise.
17802 * sparseset.h: Likewise.
17803 * ssa-iterators.h: Likewise.
17804 * system.h: Likewise.
17805 * target-globals.h: Likewise.
17806 * target.h: Likewise.
17807 * timevar.h: Likewise.
17808 * tree-chrec.h: Likewise.
17809 * tree-data-ref.h: Likewise.
17810 * tree-iterator.h: Likewise.
17811 * tree-outof-ssa.h: Likewise.
17812 * tree-phinodes.h: Likewise.
17813 * tree-scalar-evolution.h: Likewise.
17814 * tree-sra.h: Likewise.
17815 * tree-ssa-alias.h: Likewise.
17816 * tree-ssa-live.h: Likewise.
17817 * tree-ssa-loop-manip.h: Likewise.
17818 * tree-ssa-loop.h: Likewise.
17819 * tree-ssa-operands.h: Likewise.
17820 * tree-ssa-propagate.h: Likewise.
17821 * tree-ssa-sccvn.h: Likewise.
17822 * tree-ssa.h: Likewise.
17823 * tree-ssanames.h: Likewise.
17824 * tree-streamer.h: Likewise.
17825 * tree-switch-conversion.h: Likewise.
17826 * tree-vectorizer.h: Likewise.
17827 * tree.h: Likewise.
17828 * wide-int.h: Likewise.
17830 2023-02-16 Jakub Jelinek <jakub@redhat.com>
17832 PR tree-optimization/108657
17833 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
17834 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
17835 is a call to internal or builtin function.
17837 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
17839 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
17840 using-declaration to unhide functions.
17842 2023-02-16 Jakub Jelinek <jakub@redhat.com>
17844 PR tree-optimization/108783
17845 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
17846 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
17847 t to curr->op. Otherwise, punt if either newop1 or newop2 are
17848 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
17850 2023-02-16 Richard Biener <rguenther@suse.de>
17852 PR tree-optimization/108791
17853 * tree-ssa-forwprop.cc (optimize_vector_load): Build
17854 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
17857 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
17860 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
17861 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
17862 (ix86_expand_prologue): Likewise.
17864 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
17866 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
17868 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
17870 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
17871 int248_register_operand predicate in zero_extract sub-RTX.
17872 (*cmpqi_ext<mode>_2): Ditto.
17873 (*cmpqi_ext<mode>_3): Ditto.
17874 (*cmpqi_ext<mode>_4): Ditto.
17875 (*extzvqi_mem_rex64): Ditto.
17877 (*insvqi_1_mem_rex64): Ditto.
17878 (@insv<mode>_1): Ditto.
17879 (*insvqi_1): Ditto.
17880 (*insvqi_2): Ditto.
17881 (*insvqi_3): Ditto.
17882 (*extendqi<SWI24:mode>_ext_1): Ditto.
17883 (*addqi_ext<mode>_1): Ditto.
17884 (*addqi_ext<mode>_2): Ditto.
17885 (*subqi_ext<mode>_2): Ditto.
17886 (*testqi_ext<mode>_1): Ditto.
17887 (*testqi_ext<mode>_2): Ditto.
17888 (*andqi_ext<mode>_1): Ditto.
17889 (*andqi_ext<mode>_1_cc): Ditto.
17890 (*andqi_ext<mode>_2): Ditto.
17891 (*<any_or:code>qi_ext<mode>_1): Ditto.
17892 (*<any_or:code>qi_ext<mode>_2): Ditto.
17893 (*xorqi_ext<mode>_1_cc): Ditto.
17894 (*negqi_ext<mode>_2): Ditto.
17895 (*ashlqi_ext<mode>_2): Ditto.
17896 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
17898 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
17900 * config/i386/predicates.md (int248_register_operand):
17901 Rename from extr_register_operand.
17902 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
17903 (*extzx<mode>): Ditto.
17904 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
17905 (*ashl<mode>3_mask): Ditto.
17906 (*<any_shiftrt:insn><mode>3_mask): Ditto.
17907 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
17908 (*<any_rotate:insn><mode>3_mask): Ditto.
17909 (*<btsc><mode>_mask): Ditto.
17910 (*btr<mode>_mask): Ditto.
17911 (*jcc_bt<mode>_mask_1): Ditto.
17913 2023-02-15 Richard Biener <rguenther@suse.de>
17915 PR middle-end/26854
17916 * df-core.cc (df_worklist_propagate_forward): Put later
17917 blocks on worklist and only earlier blocks on pending.
17918 (df_worklist_propagate_backward): Likewise.
17919 (df_worklist_dataflow_doublequeue): Change the iteration
17920 to process new blocks in the same iteration if that
17921 maintains the iteration order.
17923 2023-02-15 Marek Polacek <polacek@redhat.com>
17925 PR middle-end/106080
17926 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
17929 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17931 * config/riscv/predicates.md: Refine codes.
17932 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
17933 * config/riscv/riscv-v.cc: Refine codes.
17934 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
17936 (class imac): New class.
17937 (enum widen_ternop_type): New enum.
17938 (class iwmac): New class.
17940 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17941 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
17949 * config/riscv/riscv-vector-builtins.cc
17950 (function_builder::apply_predication): Adjust for multiply-add support.
17951 (function_expander::add_vundef_operand): Refine codes.
17952 (function_expander::use_ternop_insn): New function.
17953 (function_expander::use_widen_ternop_insn): Ditto.
17954 * config/riscv/riscv-vector-builtins.h: New function.
17955 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
17956 (pred_mul_<optab><mode>_undef_merge): Ditto.
17957 (*pred_<madd_nmsub><mode>): Ditto.
17958 (*pred_<macc_nmsac><mode>): Ditto.
17959 (*pred_mul_<optab><mode>): Ditto.
17960 (@pred_mul_<optab><mode>_scalar): Ditto.
17961 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
17962 (*pred_<madd_nmsub><mode>_scalar): Ditto.
17963 (*pred_<macc_nmsac><mode>_scalar): Ditto.
17964 (*pred_mul_<optab><mode>_scalar): Ditto.
17965 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
17966 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
17967 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
17968 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
17969 (@pred_widen_mul_plus<su><mode>): Ditto.
17970 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
17971 (@pred_widen_mul_plussu<mode>): Ditto.
17972 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
17973 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
17975 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17977 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
17978 (vector_all_trues_mask_operand): New predicate.
17979 (vector_undef_operand): New predicate.
17980 (ltge_operator): New predicate.
17981 (comparison_except_ltge_operator): New predicate.
17982 (comparison_except_eqge_operator): New predicate.
17983 (ge_operator): New predicate.
17984 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
17985 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
17987 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17988 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
17998 * config/riscv/riscv-vector-builtins-shapes.cc
17999 (struct return_mask_def): Adjust for compare support.
18000 * config/riscv/riscv-vector-builtins.cc
18001 (function_expander::use_compare_insn): New function.
18002 * config/riscv/riscv-vector-builtins.h
18003 (function_expander::add_integer_operand): Ditto.
18004 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
18005 * config/riscv/riscv.md: Add vector min/max attributes.
18006 * config/riscv/vector-iterators.md (xnor): New iterator.
18007 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
18008 (*pred_cmp<mode>): Ditto.
18009 (*pred_cmp<mode>_narrow): Ditto.
18010 (@pred_ltge<mode>): Ditto.
18011 (*pred_ltge<mode>): Ditto.
18012 (*pred_ltge<mode>_narrow): Ditto.
18013 (@pred_cmp<mode>_scalar): Ditto.
18014 (*pred_cmp<mode>_scalar): Ditto.
18015 (*pred_cmp<mode>_scalar_narrow): Ditto.
18016 (@pred_eqne<mode>_scalar): Ditto.
18017 (*pred_eqne<mode>_scalar): Ditto.
18018 (*pred_eqne<mode>_scalar_narrow): Ditto.
18019 (*pred_cmp<mode>_extended_scalar): Ditto.
18020 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
18021 (*pred_eqne<mode>_extended_scalar): Ditto.
18022 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
18023 (@pred_ge<mode>_scalar): Ditto.
18024 (@pred_<optab><mode>): Ditto.
18025 (@pred_n<optab><mode>): Ditto.
18026 (@pred_<optab>n<mode>): Ditto.
18027 (@pred_not<mode>): Ditto.
18029 2023-02-15 Martin Jambor <mjambor@suse.cz>
18032 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
18033 creation of non-scalar replacements even if IPA-CP knows their
18036 2023-02-15 Jakub Jelinek <jakub@redhat.com>
18040 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
18041 expander, change operand 3 to be TImode, emit maddlddi4 and
18042 umadddi4_highpart{,_le} with its low half and finally add the high
18043 half to the result.
18045 2023-02-15 Martin Liska <mliska@suse.cz>
18047 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
18049 2023-02-15 Richard Biener <rguenther@suse.de>
18051 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
18052 for with_poison and alias worklist to it.
18053 (sanitize_asan_mark_poison): Likewise.
18055 2023-02-15 Richard Biener <rguenther@suse.de>
18058 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
18059 Combine bitmap test and set.
18060 (scalar_chain::add_insn): Likewise.
18061 (scalar_chain::analyze_register_chain): Remove redundant
18062 attempt to add to queue and instead strengthen assert.
18063 Sink common attempts to mark the def dual-mode.
18064 (scalar_chain::add_to_queue): Remove redundant insn bitmap
18067 2023-02-15 Richard Biener <rguenther@suse.de>
18070 * config/i386/i386-features.cc (convert_scalars_to_vector):
18071 Switch candidates bitmaps to tree view before building the chains.
18073 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
18075 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
18076 "failure trying to reload" call.
18078 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
18080 * gdbinit.in (phrs): New command.
18081 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
18082 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
18084 2023-02-14 David Faust <david.faust@oracle.com>
18087 * config/bpf/constraints.md (q): New memory constraint.
18088 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
18089 (zero_extendqidi2): Likewise.
18090 (zero_extendsidi2): Likewise.
18091 (*mov<MM:mode>): Likewise.
18093 2023-02-14 Andrew Pinski <apinski@marvell.com>
18095 PR tree-optimization/108355
18096 PR tree-optimization/96921
18097 * match.pd: Add pattern for "1 - bool_val".
18099 2023-02-14 Richard Biener <rguenther@suse.de>
18101 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
18102 basic block index hashing on the availability of ->cclhs.
18103 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
18104 rely on ->cclhs availability.
18105 (vn_phi_lookup): Set ->cclhs only when we are eventually
18106 going to CSE the PHI.
18107 (vn_phi_insert): Likewise.
18109 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
18111 * gimplify.cc (gimplify_save_expr): Add missing guard.
18113 2023-02-14 Richard Biener <rguenther@suse.de>
18115 PR tree-optimization/108782
18116 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
18117 Make sure we're not vectorizing an inner loop.
18119 2023-02-14 Jakub Jelinek <jakub@redhat.com>
18121 PR sanitizer/108777
18122 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
18123 * asan.h (asan_memfn_rtl): Declare.
18124 * asan.cc (asan_memfn_rtls): New variable.
18125 (asan_memfn_rtl): New function.
18126 * builtins.cc (expand_builtin): If
18127 param_asan_kernel_mem_intrinsic_prefix and function is
18128 kernel-{,hw}address sanitized, emit calls to
18129 __{,hw}asan_{memcpy,memmove,memset} rather than
18130 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
18131 instead of flag_sanitize & SANITIZE_ADDRESS to check if
18132 asan_intercepted_p functions shouldn't be expanded inline.
18134 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
18136 PR tree-optimization/96373
18137 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
18138 operations on the loop mask. Reject partial vectors if this isn't
18141 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
18143 PR rtl-optimization/108681
18144 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
18145 code to handle bare uses and clobbers.
18147 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
18149 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
18150 caller_save_p flag when clearing defined_p flag.
18151 (setup_reg_equiv): Ditto.
18152 * lra-constraints.cc (lra_constraints): Ditto.
18154 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
18157 * config/i386/predicates.md (extr_register_operand):
18158 New special predicate.
18159 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
18160 as operand 1 predicate.
18161 (*exzv<mode>): Ditto.
18162 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
18164 2023-02-13 Richard Biener <rguenther@suse.de>
18166 PR tree-optimization/28614
18167 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
18168 walking all edges in most cases.
18169 (vn_nary_op_insert_pieces_predicated): Avoid repeated
18170 calls to can_track_predicate_on_edge unless checking is
18172 (process_bb): Instead call it once here for each edge
18173 we register possibly multiple predicates on.
18175 2023-02-13 Richard Biener <rguenther@suse.de>
18177 PR tree-optimization/108691
18178 * tree-cfg.cc (notice_special_calls): When the CFG is built
18179 honor gimple_call_ctrl_altering_p.
18180 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
18181 temporarily if the call is not control-altering.
18182 * calls.cc (emit_call_1): Do not add REG_SETJMP if
18183 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
18185 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18188 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
18189 (struct s390_sched_state): Initialise to zero.
18190 (s390_sched_variable_issue): For better debuggability also emit
18192 (s390_sched_init): Unconditionally reset scheduler state.
18194 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
18196 * ifcvt.h (noce_if_info::cond_inverted): New field.
18197 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
18198 values when cond_inverted is true.
18199 (noce_find_if_block): Allow the condition to be inverted when
18200 handling conditional moves.
18202 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18204 * config/s390/predicates.md (execute_operation): Use
18205 constrain_operands instead of extract_constrain_insn in order to
18206 determine wheter there exists a valid alternative.
18208 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
18210 * common/config/arc/arc-common.cc (arc_option_optimization_table):
18211 Remove millicode from list.
18213 2023-02-13 Martin Liska <mliska@suse.cz>
18215 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
18217 2023-02-13 Richard Biener <rguenther@suse.de>
18219 PR tree-optimization/106722
18220 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
18221 whether we marked a stmt.
18222 (mark_control_dependent_edges_necessary): When
18223 mark_last_stmt_necessary didn't mark any stmt make sure
18224 to mark its control dependent edges.
18225 (propagate_necessity): Likewise.
18227 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
18229 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
18230 (DWARF_FRAME_REGISTERS): New.
18231 (DWARF_REG_TO_UNWIND_COLUMN): New.
18233 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
18235 * doc/sourcebuild.texi: Remove (broken) direct reference to
18236 "The GNU configure and build system".
18238 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
18240 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
18241 gen_add3_insn to gen_rtx_SET.
18242 (riscv_adjust_libcall_cfi_epilogue): Likewise.
18244 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18246 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
18247 (class vnclip): Ditto.
18249 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18250 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
18259 * config/riscv/vector-iterators.md (su): Add instruction.
18262 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
18263 (@pred_<sat_op><mode>_scalar): Ditto.
18264 (*pred_<sat_op><mode>_scalar): Ditto.
18265 (*pred_<sat_op><mode>_extended_scalar): Ditto.
18266 (@pred_narrow_clip<v_su><mode>): Ditto.
18267 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
18269 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18271 * config/riscv/constraints.md (Wbr): Remove unused constraint.
18272 * config/riscv/predicates.md: Fix move operand predicate.
18273 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
18274 (class vncvt_x): Ditto.
18275 (class vmerge): Ditto.
18276 (class vmv_v): Ditto.
18278 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18279 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
18286 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
18287 (struct move_def): Ditto.
18289 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18290 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
18291 (DEF_RVV_WEXTU_OPS): Ditto
18292 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
18297 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
18298 * config/riscv/vector-iterators.md (nmsac):New iterator.
18299 (nmsub): New iterator.
18300 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
18301 (@pred_merge<mode>_scalar): New pattern.
18302 (*pred_merge<mode>_scalar): New pattern.
18303 (*pred_merge<mode>_extended_scalar): New pattern.
18304 (@pred_narrow_<optab><mode>): New pattern.
18305 (@pred_narrow_<optab><mode>_scalar): New pattern.
18306 (@pred_trunc<mode>): New pattern.
18308 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18310 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
18311 (class vmsbc): Ditto.
18312 (BASE): Define new class.
18313 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18314 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
18316 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
18319 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18320 * config/riscv/riscv-vector-builtins.cc
18321 (function_expander::use_exact_insn): Adjust for new support
18322 * config/riscv/riscv-vector-builtins.h
18323 (function_base::has_merge_operand_p): New function.
18324 * config/riscv/vector-iterators.md: New iterator.
18325 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
18326 (@pred_msbc<mode>): Ditto.
18327 (@pred_madc<mode>_scalar): Ditto.
18328 (@pred_msbc<mode>_scalar): Ditto.
18329 (*pred_madc<mode>_scalar): Ditto.
18330 (*pred_madc<mode>_extended_scalar): Ditto.
18331 (*pred_msbc<mode>_scalar): Ditto.
18332 (*pred_msbc<mode>_extended_scalar): Ditto.
18333 (@pred_madc<mode>_overflow): Ditto.
18334 (@pred_msbc<mode>_overflow): Ditto.
18335 (@pred_madc<mode>_overflow_scalar): Ditto.
18336 (@pred_msbc<mode>_overflow_scalar): Ditto.
18337 (*pred_madc<mode>_overflow_scalar): Ditto.
18338 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
18339 (*pred_msbc<mode>_overflow_scalar): Ditto.
18340 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
18342 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18344 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
18345 * config/riscv/riscv-v.cc (simm32_p): Ditto.
18346 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
18347 (class vsbc): Ditto.
18349 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18350 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
18352 * config/riscv/riscv-vector-builtins-shapes.cc
18353 (struct no_mask_policy_def): Ditto.
18355 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18356 * config/riscv/riscv-vector-builtins.cc
18357 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
18358 (rvv_arg_type_info::get_tree_type): Ditto.
18359 (function_expander::use_exact_insn): Ditto.
18360 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18361 (function_base::use_mask_predication_p): New function.
18362 * config/riscv/vector-iterators.md: New iterator.
18363 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
18364 (@pred_sbc<mode>): Ditto.
18365 (@pred_adc<mode>_scalar): Ditto.
18366 (@pred_sbc<mode>_scalar): Ditto.
18367 (*pred_adc<mode>_scalar): Ditto.
18368 (*pred_adc<mode>_extended_scalar): Ditto.
18369 (*pred_sbc<mode>_scalar): Ditto.
18370 (*pred_sbc<mode>_extended_scalar): Ditto.
18372 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18374 * config/riscv/vector.md: use "zero" reg.
18376 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18378 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
18380 (class vwmulsu): Ditto.
18381 (class vwcvt): Ditto.
18382 (BASE): Add integer widening support.
18383 * config/riscv/riscv-vector-builtins-bases.h: Ditto
18384 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
18385 (vwsub): New class.
18386 (vwmul): New class.
18387 (vwmulu): New class.
18388 (vwmulsu): New class.
18389 (vwaddu): New class.
18390 (vwsubu): New class.
18391 (vwcvt_x): New class.
18392 (vwcvtu_x): New class.
18393 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
18395 (struct widen_alu_def): New class.
18396 (SHAPE): New class.
18397 * config/riscv/riscv-vector-builtins-shapes.h: New class.
18398 * config/riscv/riscv-vector-builtins.cc
18399 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
18400 (rvv_arg_type_info::get_tree_type): Ditto.
18401 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
18403 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
18405 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
18406 * config/riscv/riscv.h (X0_REGNUM): New constant.
18407 * config/riscv/vector-iterators.md: New iterators.
18408 * config/riscv/vector.md
18409 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
18411 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
18413 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
18414 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
18416 (@pred_widen_mulsu<mode>): Ditto.
18417 (@pred_widen_mulsu<mode>_scalar): Ditto.
18418 (@pred_<optab><mode>): Ditto.
18420 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18421 kito-cheng <kito.cheng@sifive.com>
18423 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
18424 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
18426 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18427 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
18431 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
18433 (DEF_RVV_FULL_V_U_OPS): Ditto.
18434 (vint8mf8_t): Ditto.
18435 (vint8mf4_t): Ditto.
18436 (vint8mf2_t): Ditto.
18437 (vint8m1_t): Ditto.
18438 (vint8m2_t): Ditto.
18439 (vint8m4_t): Ditto.
18440 (vint8m8_t): Ditto.
18441 (vint16mf4_t): Ditto.
18442 (vint16mf2_t): Ditto.
18443 (vint16m1_t): Ditto.
18444 (vint16m2_t): Ditto.
18445 (vint16m4_t): Ditto.
18446 (vint16m8_t): Ditto.
18447 (vint32mf2_t): Ditto.
18448 (vint32m1_t): Ditto.
18449 (vint32m2_t): Ditto.
18450 (vint32m4_t): Ditto.
18451 (vint32m8_t): Ditto.
18452 (vint64m1_t): Ditto.
18453 (vint64m2_t): Ditto.
18454 (vint64m4_t): Ditto.
18455 (vint64m8_t): Ditto.
18456 (vuint8mf8_t): Ditto.
18457 (vuint8mf4_t): Ditto.
18458 (vuint8mf2_t): Ditto.
18459 (vuint8m1_t): Ditto.
18460 (vuint8m2_t): Ditto.
18461 (vuint8m4_t): Ditto.
18462 (vuint8m8_t): Ditto.
18463 (vuint16mf4_t): Ditto.
18464 (vuint16mf2_t): Ditto.
18465 (vuint16m1_t): Ditto.
18466 (vuint16m2_t): Ditto.
18467 (vuint16m4_t): Ditto.
18468 (vuint16m8_t): Ditto.
18469 (vuint32mf2_t): Ditto.
18470 (vuint32m1_t): Ditto.
18471 (vuint32m2_t): Ditto.
18472 (vuint32m4_t): Ditto.
18473 (vuint32m8_t): Ditto.
18474 (vuint64m1_t): Ditto.
18475 (vuint64m2_t): Ditto.
18476 (vuint64m4_t): Ditto.
18477 (vuint64m8_t): Ditto.
18478 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
18479 (DEF_RVV_FULL_V_U_OPS): Ditto.
18480 (check_required_extensions): Add vmulh support.
18481 (rvv_arg_type_info::get_tree_type): Ditto.
18482 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
18483 (enum rvv_base_type): Ditto.
18484 * config/riscv/riscv.opt: Add 'V' extension flag.
18485 * config/riscv/vector-iterators.md (su): New iterator.
18486 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
18487 (@pred_mulh<v_su><mode>_scalar): Ditto.
18488 (*pred_mulh<v_su><mode>_scalar): Ditto.
18489 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
18491 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18493 * config/riscv/iterators.md: Add sign_extend/zero_extend.
18494 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
18496 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
18497 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
18500 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
18501 for vsext/vzext support.
18502 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
18504 (DEF_RVV_QEXTI_OPS): Ditto.
18505 (DEF_RVV_OEXTI_OPS): Ditto.
18506 (DEF_RVV_WEXTU_OPS): Ditto.
18507 (DEF_RVV_QEXTU_OPS): Ditto.
18508 (DEF_RVV_OEXTU_OPS): Ditto.
18509 (vint16mf4_t): Ditto.
18510 (vint16mf2_t): Ditto.
18511 (vint16m1_t): Ditto.
18512 (vint16m2_t): Ditto.
18513 (vint16m4_t): Ditto.
18514 (vint16m8_t): Ditto.
18515 (vint32mf2_t): Ditto.
18516 (vint32m1_t): Ditto.
18517 (vint32m2_t): Ditto.
18518 (vint32m4_t): Ditto.
18519 (vint32m8_t): Ditto.
18520 (vint64m1_t): Ditto.
18521 (vint64m2_t): Ditto.
18522 (vint64m4_t): Ditto.
18523 (vint64m8_t): Ditto.
18524 (vuint16mf4_t): Ditto.
18525 (vuint16mf2_t): Ditto.
18526 (vuint16m1_t): Ditto.
18527 (vuint16m2_t): Ditto.
18528 (vuint16m4_t): Ditto.
18529 (vuint16m8_t): Ditto.
18530 (vuint32mf2_t): Ditto.
18531 (vuint32m1_t): Ditto.
18532 (vuint32m2_t): Ditto.
18533 (vuint32m4_t): Ditto.
18534 (vuint32m8_t): Ditto.
18535 (vuint64m1_t): Ditto.
18536 (vuint64m2_t): Ditto.
18537 (vuint64m4_t): Ditto.
18538 (vuint64m8_t): Ditto.
18539 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
18540 (DEF_RVV_QEXTI_OPS): Ditto.
18541 (DEF_RVV_OEXTI_OPS): Ditto.
18542 (DEF_RVV_WEXTU_OPS): Ditto.
18543 (DEF_RVV_QEXTU_OPS): Ditto.
18544 (DEF_RVV_OEXTU_OPS): Ditto.
18545 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
18547 (rvv_arg_type_info::get_tree_type): Ditto.
18548 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18549 * config/riscv/vector-iterators.md (z): New attribute.
18550 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
18551 (@pred_<optab><mode>_vf4): Ditto.
18552 (@pred_<optab><mode>_vf8): Ditto.
18554 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18556 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
18557 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
18558 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
18559 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18560 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
18564 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
18569 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
18570 (@pred_<optab><mode>_scalar): New pattern.
18571 (*pred_<optab><mode>_scalar): New pattern.
18572 (*pred_<optab><mode>_extended_scalar): New pattern.
18574 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18576 * config/riscv/iterators.md: Add neg and not.
18577 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
18579 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18580 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
18601 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
18602 (struct alu_def): Ditto.
18604 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18605 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
18606 * config/riscv/vector-iterators.md: New iterator.
18607 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
18609 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18611 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
18613 2023-02-11 Jakub Jelinek <jakub@redhat.com>
18616 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
18617 item->offset bit position is too large to be representable as
18618 unsigned int byte position.
18620 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
18622 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
18624 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
18626 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
18627 valid_combine only when ira_use_lra_p is true.
18629 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
18631 * params.opt (ira-simple-lra-insn-threshold): Add new param.
18632 * ira.cc (ira): Use the param to switch on simple LRA.
18634 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
18636 PR tree-optimization/108687
18637 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
18638 back to RFD_NONE mode for calculations.
18639 (ranger_cache::propagate_cache): Call the internal edge range API
18640 with RFD_READ_ONLY instead of changing the external routine.
18642 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
18644 PR tree-optimization/108520
18645 * gimple-range-infer.cc (check_assume_func): Invoke
18646 gimple_range_global directly instead using global_range_query.
18647 * value-query.cc (get_range_global): Add function context and
18648 avoid calling nonnull_arg_p if not cfun.
18649 (gimple_range_global): Add function context pointer.
18650 * value-query.h (imple_range_global): Add function context.
18652 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18654 * config/riscv/constraints.md (Wdm): Adjust constraint.
18655 (Wbr): New constraint.
18656 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
18657 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
18658 (emit_vlmax_op): New function.
18659 (emit_nonvlmax_op): Ditto.
18661 (neg_simm5_p): Ditto.
18662 (has_vi_variant_p): Ditto.
18663 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
18664 (emit_vlmax_op): New function.
18665 (emit_nonvlmax_op): Ditto.
18666 (expand_const_vector): Adjust function.
18667 (legitimize_move): Ditto.
18668 (simm32_p): New function.
18670 (neg_simm5_p): Ditto.
18671 (has_vi_variant_p): Ditto.
18672 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
18674 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18675 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
18678 (vminu): Remove signed cases.
18680 (vdiv): Remove unsigned cases.
18682 (vdivu): Remove signed cases.
18686 (vrsub): New class.
18691 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
18692 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
18693 * config/riscv/vector-iterators.md: New iterators.
18694 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
18696 (@pred_<optab><mode>_scalar): New pattern.
18697 (@pred_sub<mode>_reverse_scalar): Ditto.
18698 (*pred_<optab><mode>_scalar): Ditto.
18699 (*pred_<optab><mode>_extended_scalar): Ditto.
18700 (*pred_sub<mode>_reverse_scalar): Ditto.
18701 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
18703 2023-02-10 Richard Biener <rguenther@suse.de>
18705 PR tree-optimization/108724
18706 * tree-vect-stmts.cc (vectorizable_operation): Avoid
18707 using word_mode vectors when vector lowering will
18708 decompose them to elementwise operations.
18710 2023-02-10 Jakub Jelinek <jakub@redhat.com>
18713 2023-02-09 Martin Liska <mliska@suse.cz>
18716 * doc/extend.texi: Document that the function
18717 does not work correctly for old VIA processors.
18719 2023-02-10 Andrew Pinski <apinski@marvell.com>
18720 Andrew Macleod <amacleod@redhat.com>
18722 PR tree-optimization/108684
18723 * tree-ssa-dce.cc (simple_dce_from_worklist):
18724 Check all ssa names and not just non-vdef ones
18725 before accepting the inline-asm.
18726 Call unlink_stmt_vdef on the statement before
18729 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
18731 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18732 * ira.cc (validate_equiv_mem): Check memref address variance.
18733 (no_equiv): Clear caller_save_p flag.
18734 (update_equiv_regs): Define caller save equivalence for
18736 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18737 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18738 call_save_p. Use caller save equivalence depending on the arg.
18739 (split_reg): Adjust the call.
18741 2023-02-09 Jakub Jelinek <jakub@redhat.com>
18744 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
18745 (cpu_indicator_init): Call get_available_features for all CPUs with
18746 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
18749 2023-02-09 Jakub Jelinek <jakub@redhat.com>
18751 PR tree-optimization/108688
18752 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
18753 of BIT_INSERT_EXPR extracting exactly all inserted bits even
18754 when without mode precision. Formatting fixes.
18756 2023-02-09 Andrew Pinski <apinski@marvell.com>
18758 PR tree-optimization/108688
18759 * match.pd (bit_field_ref [bit_insert]): Avoid generating
18760 BIT_FIELD_REFs of non-mode-precision integral operands.
18762 2023-02-09 Martin Liska <mliska@suse.cz>
18765 * doc/extend.texi: Document that the function
18766 does not work correctly for old VIA processors.
18768 2023-02-09 Andreas Schwab <schwab@suse.de>
18770 * lto-wrapper.cc (merge_and_complain): Handle
18771 -funwind-tables and -fasynchronous-unwind-tables.
18772 (append_compiler_options): Likewise.
18774 2023-02-09 Richard Biener <rguenther@suse.de>
18776 PR tree-optimization/26854
18777 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
18778 view around insert_updated_phi_nodes_for.
18779 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
18781 (walk_aliased_vdefs_1): Likewise.
18783 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
18785 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
18787 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18790 * config.gcc (tm_mlib_file): Define new variable.
18792 2023-02-08 Jakub Jelinek <jakub@redhat.com>
18794 PR tree-optimization/108692
18795 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
18796 widened_code which is different from code, don't call
18797 vect_look_through_possible_promotion but instead just check op is
18798 SSA_NAME with integral type for which vect_is_simple_use is true
18799 and call set_op on this_unprom.
18801 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
18803 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
18805 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
18807 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
18808 to 'aarch_ra_sign_key'.
18809 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
18811 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
18812 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
18813 * config/arm/arm.opt: Define.
18815 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
18817 PR tree-optimization/108316
18818 * tree-vect-stmts.cc (get_load_store_type): When using
18819 internal functions for gather/scatter, make sure that the type
18820 of the offset argument is consistent with the offset vector type.
18822 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
18825 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
18827 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18828 * ira.cc (validate_equiv_mem): Check memref address variance.
18829 (update_equiv_regs): Define caller save equivalence for
18831 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18832 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18833 call_save_p. Use caller save equivalence depending on the arg.
18834 (split_reg): Adjust the call.
18836 2023-02-08 Jakub Jelinek <jakub@redhat.com>
18838 * tree.def (SAD_EXPR): Remove outdated comment about missing
18841 2023-02-07 Marek Polacek <polacek@redhat.com>
18843 * doc/invoke.texi: Update -fchar8_t documentation.
18845 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
18847 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18848 * ira.cc (validate_equiv_mem): Check memref address variance.
18849 (update_equiv_regs): Define caller save equivalence for
18851 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18852 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18853 call_save_p. Use caller save equivalence depending on the arg.
18854 (split_reg): Adjust the call.
18856 2023-02-07 Richard Biener <rguenther@suse.de>
18858 PR tree-optimization/26854
18859 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
18860 instead of immediate uses.
18862 2023-02-07 Jakub Jelinek <jakub@redhat.com>
18864 PR tree-optimization/106923
18865 * ipa-split.cc (execute_split_functions): Don't split returns_twice
18868 2023-02-07 Jakub Jelinek <jakub@redhat.com>
18870 PR tree-optimization/106433
18871 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
18872 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
18874 2023-02-07 Jan Hubicka <jh@suse.cz>
18876 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
18879 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
18881 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
18882 (process_asm): Create a constructor for GCN_STACK_SIZE.
18883 (main): Parse the -mstack-size option.
18885 2023-02-06 Alex Coplan <alex.coplan@arm.com>
18888 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
18889 Use correct constraint for operand 3.
18891 2023-02-06 Martin Jambor <mjambor@suse.cz>
18893 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
18895 2023-02-06 Xi Ruoyao <xry111@xry111.site>
18897 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
18898 New define_int_iterator.
18899 (bytepick_d_ashift_amount): Likewise.
18900 (bytepick_imm): New define_int_attr.
18901 (bytepick_w_lshiftrt_amount): Likewise.
18902 (bytepick_d_lshiftrt_amount): Likewise.
18903 (bytepick_w_<bytepick_imm>): New define_insn template.
18904 (bytepick_w_<bytepick_imm>_extend): Likewise.
18905 (bytepick_d_<bytepick_imm>): Likewise.
18906 (bytepick_w): Remove unused define_insn.
18907 (bytepick_d): Likewise.
18908 (UNSPEC_BYTEPICK_W): Remove unused unspec.
18909 (UNSPEC_BYTEPICK_D): Likewise.
18910 * config/loongarch/predicates.md (const_0_to_3_operand):
18911 Remove unused define_predicate.
18912 (const_0_to_7_operand): Likewise.
18914 2023-02-06 Jakub Jelinek <jakub@redhat.com>
18916 PR tree-optimization/108655
18917 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
18918 or -fsanitize=unreachable -fsanitize-trap=unreachable return
18919 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
18921 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
18923 * doc/install.texi (Specific): Remove PW32.
18925 2023-02-03 Jakub Jelinek <jakub@redhat.com>
18927 PR tree-optimization/108647
18928 * range-op.cc (operator_equal::op1_range,
18929 operator_not_equal::op1_range): Don't test op2 bound
18930 equality if op2.undefined_p (), instead set_varying.
18931 (operator_lt::op1_range, operator_le::op1_range,
18932 operator_gt::op1_range, operator_ge::op1_range): Return false if
18933 op2.undefined_p ().
18934 (operator_lt::op2_range, operator_le::op2_range,
18935 operator_gt::op2_range, operator_ge::op2_range): Return false if
18936 op1.undefined_p ().
18938 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
18940 PR tree-optimization/108639
18941 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
18943 (irange::operator==): Same.
18945 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
18947 PR tree-optimization/108647
18948 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
18949 (foperator_lt::op2_range): Same.
18950 (foperator_le::op1_range): Same.
18951 (foperator_le::op2_range): Same.
18952 (foperator_gt::op1_range): Same.
18953 (foperator_gt::op2_range): Same.
18954 (foperator_ge::op1_range): Same.
18955 (foperator_ge::op2_range): Same.
18956 (foperator_unordered_lt::op1_range): Same.
18957 (foperator_unordered_lt::op2_range): Same.
18958 (foperator_unordered_le::op1_range): Same.
18959 (foperator_unordered_le::op2_range): Same.
18960 (foperator_unordered_gt::op1_range): Same.
18961 (foperator_unordered_gt::op2_range): Same.
18962 (foperator_unordered_ge::op1_range): Same.
18963 (foperator_unordered_ge::op2_range): Same.
18965 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
18967 PR tree-optimization/107570
18968 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
18970 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
18972 * doc/gm2.texi (Internals): Remove from menu.
18973 (Using): Comment out ifnohtml conditional.
18974 (Documentation): Use gcc url.
18975 (License): Node simplified.
18976 (Copying): New node. Include gpl_v3_without_node.
18977 (Contributing): Node simplified.
18978 (Internals): Commented out.
18979 (Libraries): Node simplified.
18982 (Functions): Ditto.
18984 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
18986 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
18988 (mve_vqshluq_m_n_s<mode>): Likewise.
18989 (mve_vshlq_m_<supf><mode>): Likewise.
18990 (mve_vsriq_m_n_<supf><mode>): Likewise.
18991 (mve_vsubq_m_<supf><mode>): Likewise.
18993 2023-02-03 Martin Jambor <mjambor@suse.cz>
18996 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
18997 when comparing to an IPA-CP value.
18998 (dump_list_of_param_indices): New function.
18999 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
19000 Dump removed candidates using dump_list_of_param_indices.
19001 * ipa-param-manipulation.cc
19002 (ipa_param_body_adjustments::modify_expression): Add assert checking
19003 sizes of a VIEW_CONVERT_EXPR will match.
19004 (ipa_param_body_adjustments::modify_assignment): Likewise.
19006 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
19008 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
19009 * config/riscv/riscv.cc: Ditto.
19011 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19013 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
19017 * config/riscv/vector.md: Ditto.
19019 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19021 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
19022 * config/riscv/riscv-vector-builtins-bases.cc: New class.
19023 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
19026 * config/riscv/riscv-vector-builtins.cc: Ditto.
19027 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
19029 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
19031 * toplev.cc (toplev::main): Only print the version information header
19032 from toplevel main().
19034 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
19036 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
19037 cond_{ashl|ashr|lshr}
19039 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
19041 PR rtl-optimization/108086
19042 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
19043 Adjust size-related commentary accordingly.
19045 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
19047 PR rtl-optimization/108508
19048 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
19049 the splay tree search gives the first clobber in the second group,
19050 make sure that the root of the first clobber group is updated
19051 correctly. Enter the new clobber group into the definition splay
19054 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
19056 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
19057 Fix finding best match score.
19059 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19062 PR rtl-optimization/108463
19064 * cselib.cc (cselib_current_insn): Move declaration earlier.
19065 (cselib_hasher::equal): For debug only locs, temporarily override
19066 cselib_current_insn to their l->setting_insn for the
19067 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
19068 promote some debug locs.
19069 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
19070 when using cselib call cselib_lookup_from_insn on the address but
19071 don't substitute it.
19073 2023-02-02 Richard Biener <rguenther@suse.de>
19075 PR middle-end/108625
19076 * genmatch.cc (expr::gen_transform): Also disallow resimplification
19077 from pushing to lseq with force_leaf.
19078 (dt_simplify::gen_1): Likewise.
19080 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
19082 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
19083 (struct kernargs): Replace the common content with kernargs_abi.
19084 (struct heap): Delete.
19085 (main): Read GCN_STACK_SIZE envvar.
19086 Allocate space for the device stacks.
19087 Write the new kernargs fields.
19088 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
19089 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
19090 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
19091 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
19092 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
19093 Set up the stacks from the values in the kernargs, not private.
19094 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
19095 (gcn_hsa_declare_function_name): Turn off the private segment.
19096 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
19097 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
19098 * config/gcn/gcn.opt (mstack-size): Change the description.
19100 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19103 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
19104 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
19105 addressing MVE predicate modes.
19106 (mve_bool_vec_to_const): Change to represent correct MVE predicate
19108 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
19110 (arm_vector_mode_supported_p): Likewise.
19111 (arm_mode_to_pred_mode): Add V2QI.
19112 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
19114 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
19115 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
19116 (v2qi_UP): New macro.
19117 (v4bi_UP): New macro.
19118 (v8bi_UP): New macro.
19119 (v16bi_UP): New macro.
19120 (arm_expand_builtin_args): Make it able to expand the new predicate
19122 * config/arm/arm-modes.def (V2QI): New mode.
19123 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
19124 Pred4x4_t): Remove unused predicate builtin types.
19125 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
19126 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
19127 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
19128 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
19129 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
19130 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
19131 of MODE_VECTOR_BOOL.
19132 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
19133 (MVE_VPRED): Likewise.
19134 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
19135 (MVE_vctp): New mode attribute.
19139 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
19140 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
19142 (mve_vpnothi): Rename this...
19143 (mve_vpnotv16bi): ... to this.
19144 (mve_vctp<mode1>q_mhi): Rename this...
19145 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
19146 (mve_vldrdq_gather_base_z_<supf>v2di,
19147 mve_vldrdq_gather_offset_z_<supf>v2di,
19148 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
19149 mve_vstrdq_scatter_base_p_<supf>v2di,
19150 mve_vstrdq_scatter_offset_p_<supf>v2di,
19151 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
19152 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
19153 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
19154 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
19155 mve_vldrdq_gather_base_wb_z_<supf>v2di,
19156 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
19157 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
19159 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
19161 (VCTP): ... with this.
19162 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
19163 (VCTP_M): ... with this.
19164 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
19165 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
19167 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19170 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
19171 (arm_modes_tieable_p): Make MVE predicate modes tieable.
19172 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
19173 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
19174 simplify_subreg to simplify subregs where the outermode is not scalar.
19176 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19179 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
19180 new qualifiers parameter and use unsigned short type for MVE predicate.
19181 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
19183 (arm_init_crypto_builtins): Likewise.
19185 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19188 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
19189 * internal-fn.def (TRAP): Remove.
19190 * internal-fn.cc (expand_TRAP): Remove.
19191 * tree.cc (build_common_builtin_nodes): Define
19192 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
19193 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
19194 instead of BUILT_IN_TRAP.
19195 * gimple.cc (gimple_build_builtin_unreachable): Remove
19196 emitting internal function for BUILT_IN_TRAP.
19197 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
19198 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
19199 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
19200 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
19201 BUILT_IN_UNREACHABLE_TRAP.
19202 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
19203 * tree-cfg.cc (verify_gimple_call,
19204 pass_warn_function_return::execute): Likewise.
19205 * attribs.cc (decl_attributes): Don't report exclusions on
19206 BUILT_IN_UNREACHABLE_TRAP either.
19208 2023-02-02 liuhongt <hongtao.liu@intel.com>
19210 PR tree-optimization/108601
19211 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
19212 * tree-vect-loop.cc
19213 (vectorizable_nonlinear_induction): Remove
19214 vect_can_peel_nonlinear_iv_p.
19215 (vect_can_peel_nonlinear_iv_p): Don't peel
19216 nonlinear iv(mult or shift) for epilog when vf is not
19217 constant and moved the defination to ..
19218 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
19221 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19223 PR middle-end/108435
19224 * tree-nested.cc (convert_nonlocal_omp_clauses)
19225 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
19226 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
19227 before calling declare_vars.
19228 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
19229 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
19230 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
19231 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
19233 2023-02-01 Tamar Christina <tamar.christina@arm.com>
19235 * common/config/aarch64/aarch64-common.cc
19236 (struct aarch64_option_extension): Add native_detect and document struct
19238 (all_extensions): Set new field native_detect.
19239 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
19242 2023-02-01 Martin Liska <mliska@suse.cz>
19244 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
19247 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
19249 PR tree-optimization/108356
19250 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
19251 do a search of the DOM tree for a range.
19253 2023-02-01 Martin Liska <mliska@suse.cz>
19256 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
19257 ony non-null values.
19258 * ipa.cc (walk_polymorphic_call_targets): Likewise.
19260 2023-02-01 Martin Liska <mliska@suse.cz>
19263 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
19266 2023-02-01 Jakub Jelinek <jakub@redhat.com>
19269 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
19270 subregs in DEBUG_INSNs.
19272 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
19274 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
19276 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19278 * config/s390/s390.cc (s390_restore_gpr_p): New function.
19279 (s390_preserve_gpr_arg_in_range_p): New function.
19280 (s390_preserve_gpr_arg_p): New function.
19281 (s390_preserve_fpr_arg_p): New function.
19282 (s390_register_info_stdarg_fpr): Rename to ...
19283 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
19284 (s390_register_info_stdarg_gpr): Rename to ...
19285 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
19286 (s390_register_info): Use the renamed functions above.
19287 (s390_optimize_register_info): Likewise.
19288 (save_fpr): Generate CFI for -mpreserve-args.
19289 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
19290 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
19291 (s390_optimize_prologue): Likewise.
19292 * config/s390/s390.opt: New option -mpreserve-args
19294 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19296 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
19297 (restore_gprs): Likewise.
19298 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
19299 frame pointer if a frame-pointer is used.
19300 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
19301 * config/s390/s390.md (stack_tie): Add a register operand and
19303 (@stack_tie<mode>): ... this.
19305 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19307 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
19308 EMIT_CFI parameter.
19309 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
19310 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
19312 2023-02-01 Richard Biener <rguenther@suse.de>
19314 PR middle-end/108500
19315 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
19316 with tree traversal algorithm.
19318 2023-02-01 Jason Merrill <jason@redhat.com>
19320 * doc/invoke.texi: Document -Wno-changes-meaning.
19322 2023-02-01 David Malcolm <dmalcolm@redhat.com>
19324 * doc/invoke.texi (Static Analyzer Options): Add notes about
19325 limitations of -fanalyzer.
19327 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19329 * config/riscv/constraints.md (vj): New.
19331 * config/riscv/iterators.md: Add more opcode.
19332 * config/riscv/predicates.md (vector_arith_operand): New.
19333 (vector_neg_arith_operand): New.
19334 (vector_shift_operand): New.
19335 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
19336 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
19353 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
19370 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
19371 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
19372 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
19373 (DEF_RVV_U_OPS): New.
19374 (rvv_arg_type_info::get_base_vector_type): Handle
19375 RVV_BASE_shift_vector.
19376 (rvv_arg_type_info::get_tree_type): Ditto.
19377 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
19378 RVV_BASE_shift_vector.
19379 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
19380 * config/riscv/vector-iterators.md: Handle more opcode.
19381 * config/riscv/vector.md (@pred_<optab><mode>): New.
19383 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
19386 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
19389 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
19391 PR tree-optimization/108608
19392 * tree-vect-loop.cc (vect_transform_reduction): Handle single
19393 def-use cycles that involve function calls rather than tree codes.
19395 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19397 PR tree-optimization/108385
19398 * gimple-range-gori.cc (gori_compute::compute_operand_range):
19399 Allow VARYING computations to continue if there is a relation.
19400 * range-op.cc (pointer_plus_operator::op2_range): New.
19402 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19404 PR tree-optimization/108359
19405 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
19406 (range_operator::fold_range): If op1 is equivalent to op2 then
19407 invoke new fold_in_parts_equiv to operate on sub-components.
19408 * range-op.h (wi_fold_in_parts_equiv): New prototype.
19410 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19412 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
19413 not abort calculations if there is a valid relation available.
19414 (gori_compute::refine_using_relation): Pass correct relation trio.
19415 (gori_compute::compute_operand1_range): Create trio and use it.
19416 (gori_compute::compute_operand2_range): Ditto.
19417 * range-op.cc (operator_plus::op1_range): Use correct trio member.
19418 (operator_minus::op1_range): Use correct trio member.
19419 * value-relation.cc (value_relation::create_trio): New.
19420 * value-relation.h (value_relation::create_trio): New prototype.
19422 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19425 * config/i386/i386-expand.cc
19426 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
19427 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
19428 equal to bitsize of mode.
19430 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19432 PR rtl-optimization/108596
19433 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
19434 ends with asm goto and has a crossing fallthrough edge to the same bb
19435 that contains at least one of its labels by restoring EDGE_CROSSING
19436 flag even on possible edge from cur_bb to new_bb successor.
19438 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19441 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
19442 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
19443 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
19444 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
19445 uninitialized automatic variable __W.
19447 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
19449 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
19451 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19453 * config/riscv/riscv-protos.h (get_vector_mode): New function.
19454 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
19455 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
19456 (class loadstore): Adjust for indexed loads/stores support.
19458 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
19459 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
19475 * config/riscv/riscv-vector-builtins-shapes.cc
19476 (struct indexed_loadstore_def): New class.
19478 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19479 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
19480 for indexed loads/stores support.
19481 (check_required_extensions): Ditto.
19482 (rvv_arg_type_info::get_base_vector_type): New function.
19483 (rvv_arg_type_info::get_tree_type): Ditto.
19484 (function_builder::add_unique_function): Adjust for indexed loads/stores
19486 (function_expander::use_exact_insn): New function.
19487 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
19488 indexed loads/stores support.
19489 (struct rvv_arg_type_info): Ditto.
19490 (function_expander::index_mode): New function.
19491 (function_base::apply_tail_policy_p): Ditto.
19492 (function_base::apply_mask_policy_p): Ditto.
19493 * config/riscv/vector-iterators.md (unspec): New unspec.
19494 * config/riscv/vector.md (unspec): Ditto.
19495 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
19497 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
19498 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
19499 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
19500 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
19501 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
19502 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
19503 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
19504 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
19505 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
19506 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19507 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19508 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19509 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19511 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
19513 * config.gcc: Recognize x86_64-*-gnu* targets and include
19515 * config/i386/gnu64.h: Define configuration for new target
19516 including ld.so location.
19518 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
19520 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
19521 ampere1a to include SM4.
19523 2023-01-30 Andrew Pinski <apinski@marvell.com>
19525 PR tree-optimization/108582
19526 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
19527 for middlebb to have no phi nodes.
19529 2023-01-30 Richard Biener <rguenther@suse.de>
19531 PR tree-optimization/108574
19532 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
19533 sameval and def, ignore the equivalence if there's the
19534 danger of oscillating between two values.
19536 2023-01-30 Andreas Schwab <schwab@suse.de>
19538 * common/config/riscv/riscv-common.cc
19539 (riscv_option_optimization_table)
19540 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
19541 -fasynchronous-unwind-tables and -funwind-tables.
19542 * config.gcc (riscv*-*-linux*): Define
19543 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
19545 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
19547 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
19548 value of includedir.
19550 2023-01-30 Richard Biener <rguenther@suse.de>
19553 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
19556 2023-01-30 liuhongt <hongtao.liu@intel.com>
19558 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
19559 * doc/invoke.texi: Ditto.
19561 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
19563 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
19564 (stmt_may_terminate_function_p): If assuming return or EH
19565 volatile asm is safe.
19566 (find_always_executed_bbs): Fix handling of terminating BBS and
19567 infinite loops; add debug output.
19568 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
19570 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
19572 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
19573 off-by-one in checking the permissible shift-amount.
19575 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19577 * doc/extend.texi (Named Address Spaces): Update link to the
19580 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19582 * doc/standards.texi (Standards): Fix markup.
19584 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19586 * doc/standards.texi (Standards): Update link to Objective-C book.
19588 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19590 * doc/invoke.texi (Instrumentation Options): Update reference to
19593 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19595 * doc/standards.texi: Update Go1 link.
19597 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19599 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
19600 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
19603 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19604 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
19606 * config/riscv/riscv-vector-builtins.cc
19607 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
19608 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
19609 (@pred_strided_store<mode>): Ditto.
19611 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19613 * config/riscv/vector.md (tail_policy_op_idx): Remove.
19614 (mask_policy_op_idx): Remove.
19615 (avl_type_op_idx): Remove.
19617 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
19619 PR tree-optimization/96373
19620 * tree.h (sign_mask_for): Declare.
19621 * tree.cc (sign_mask_for): New function.
19622 (signed_or_unsigned_type_for): For vector types, try to use the
19623 related_int_vector_mode.
19624 * genmatch.cc (commutative_op): Handle conditional internal functions.
19625 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
19627 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
19629 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
19630 Use the likely minimum VF when bounding the denominators to
19631 the estimated number of iterations.
19633 2023-01-27 Richard Biener <rguenther@suse.de>
19636 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
19637 and -Ofast FP environment side-effects.
19639 2023-01-27 Richard Biener <rguenther@suse.de>
19642 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
19643 Don't add crtfastmath.o for -shared.
19645 2023-01-27 Richard Biener <rguenther@suse.de>
19648 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
19651 2023-01-27 Richard Biener <rguenther@suse.de>
19654 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
19655 crtfastmath.o for -shared.
19657 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
19659 PR tree-optimization/108306
19660 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
19661 varying for shifts that are always out of void range.
19662 (operator_rshift::fold_range): Return [0, 0] not
19663 varying for shifts that are always out of void range.
19665 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
19667 PR tree-optimization/108447
19668 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
19669 Do not attempt to fold HONOR_NAN types.
19671 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19673 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
19674 Remove _m suffix for "vop_m" C++ overloaded API name.
19676 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19678 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
19679 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19680 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
19682 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
19683 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
19684 (vbool64_t): Ditto.
19685 (vbool32_t): Ditto.
19686 (vbool16_t): Ditto.
19691 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
19692 (rvv_arg_type_info::get_tree_type): Ditto.
19693 (function_expander::use_contiguous_load_insn): Ditto.
19694 * config/riscv/vector.md (@pred_store<mode>): Ditto.
19696 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19698 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
19699 (vsetvl_discard_result_insn_p): New function.
19700 (reg_killed_by_bb_p): rename to find_reg_killed_by.
19701 (find_reg_killed_by): New name.
19702 (get_vl): allow it to be called by more functions.
19703 (has_vsetvl_killed_avl_p): Add condition.
19704 (get_avl): allow it to be called by more functions.
19705 (insn_should_be_added_p): New function.
19706 (get_all_nonphi_defs): Refine function.
19707 (get_all_sets): Ditto.
19708 (get_same_bb_set): New function.
19709 (any_insn_in_bb_p): Ditto.
19710 (any_set_in_bb_p): Ditto.
19711 (get_vl_vtype_info): Add VLMAX forward optimization.
19712 (source_equal_p): Fix issues.
19713 (extract_single_source): Refine.
19714 (avl_info::multiple_source_equal_p): New function.
19715 (avl_info::operator==): Adjust for final version.
19716 (vl_vtype_info::operator==): Ditto.
19717 (vl_vtype_info::same_avl_p): Ditto.
19718 (vector_insn_info::parse_insn): Ditto.
19719 (vector_insn_info::available_p): New function.
19720 (vector_insn_info::merge): Adjust for final version.
19721 (vector_insn_info::dump): Add hard_empty.
19722 (pass_vsetvl::hard_empty_block_p): New function.
19723 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
19724 (pass_vsetvl::forward_demand_fusion): Ditto.
19725 (pass_vsetvl::demand_fusion): Ditto.
19726 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
19727 (pass_vsetvl::compute_local_properties): Adjust for final version.
19728 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
19729 (pass_vsetvl::refine_vsetvls): Ditto.
19730 (pass_vsetvl::commit_vsetvls): Ditto.
19731 (pass_vsetvl::propagate_avl): New function.
19732 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
19733 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
19735 2023-01-27 Jakub Jelinek <jakub@redhat.com>
19738 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
19739 from size_t to int.
19741 2023-01-27 Jakub Jelinek <jakub@redhat.com>
19744 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
19745 redirection of calls to __builtin_trap in addition to redirection
19746 to __builtin_unreachable.
19748 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19750 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
19752 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19754 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
19755 (emit_vsetvl_insn): Ditto.
19757 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19759 * config/riscv/vector.md: Fix constraints.
19761 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19763 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
19765 2023-01-27 Patrick Palka <ppalka@redhat.com>
19766 Jakub Jelinek <jakub@redhat.com>
19768 * tree-core.h (tree_code_type, tree_code_length): For
19769 C++17 and later, add inline keyword, otherwise don't define
19770 the arrays, but declare extern arrays.
19771 * tree.cc (tree_code_type, tree_code_length): Define these
19772 arrays for C++14 and older.
19774 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19776 * config/riscv/riscv-vsetvl.h: Change it into public.
19778 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19780 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
19783 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19785 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
19787 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19789 * config/riscv/vector.md: Fix incorrect attributes.
19791 2023-01-27 Richard Biener <rguenther@suse.de>
19794 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
19795 Don't add crtfastmath.o for -shared.
19797 2023-01-27 Alexandre Oliva <oliva@gnu.org>
19799 * doc/options.texi (option, RejectNegative): Mention that
19800 -g-started options are also implicitly negatable.
19802 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
19804 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
19805 Use get_typenode_from_name to get fixed-width integer type
19807 * config/riscv/riscv-vector-builtins.def: Update define with
19808 fixed-width integer type nodes.
19810 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19812 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
19813 (real_insn_and_same_bb_p): New function.
19814 (same_bb_and_after_or_equal_p): Remove it.
19815 (before_p): New function.
19816 (reg_killed_by_bb_p): Ditto.
19817 (has_vsetvl_killed_avl_p): Ditto.
19818 (get_vl): Move location so that we can call it.
19819 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
19820 (available_occurrence_p): Ditto.
19821 (dominate_probability_p): Remove it.
19822 (can_backward_propagate_p): Remove it.
19823 (get_all_nonphi_defs): New function.
19824 (get_all_predecessors): Ditto.
19825 (any_insn_in_bb_p): Ditto.
19826 (insert_vsetvl): Adjust AVL REG.
19827 (source_equal_p): New function.
19828 (extract_single_source): Ditto.
19829 (avl_info::single_source_equal_p): Ditto.
19830 (avl_info::operator==): Adjust for AVL=REG.
19831 (vl_vtype_info::same_avl_p): Ditto.
19832 (vector_insn_info::set_demand_info): Remove it.
19833 (vector_insn_info::compatible_p): Adjust for AVL=REG.
19834 (vector_insn_info::compatible_avl_p): New function.
19835 (vector_insn_info::merge): Adjust AVL=REG.
19836 (vector_insn_info::dump): Ditto.
19837 (pass_vsetvl::merge_successors): Remove it.
19838 (enum fusion_type): New enum.
19839 (pass_vsetvl::get_backward_fusion_type): New function.
19840 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
19841 (pass_vsetvl::forward_demand_fusion): Ditto.
19842 (pass_vsetvl::demand_fusion): Ditto.
19843 (pass_vsetvl::prune_expressions): Ditto.
19844 (pass_vsetvl::compute_local_properties): Ditto.
19845 (pass_vsetvl::cleanup_vsetvls): Ditto.
19846 (pass_vsetvl::commit_vsetvls): Ditto.
19847 (pass_vsetvl::init): Ditto.
19848 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
19849 (enum merge_type): New enum.
19851 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19853 * config/riscv/riscv-vsetvl.cc
19854 (vector_infos_manager::vector_infos_manager): Add probability.
19855 (vector_infos_manager::dump): Ditto.
19856 (pass_vsetvl::compute_probabilities): Ditto.
19857 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
19859 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19861 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
19862 (vector_insn_info::merge): Ditto.
19863 (vector_insn_info::dump): Ditto.
19864 (pass_vsetvl::merge_successors): Ditto.
19865 (pass_vsetvl::backward_demand_fusion): Ditto.
19866 (pass_vsetvl::forward_demand_fusion): Ditto.
19867 (pass_vsetvl::commit_vsetvls): Ditto.
19868 * config/riscv/riscv-vsetvl.h: Ditto.
19870 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19872 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
19875 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19877 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
19879 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19881 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
19882 Add pre-check for redundant flow.
19884 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19886 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
19887 (vector_infos_manager::free_bitmap_vectors): Ditto.
19888 (pass_vsetvl::pre_vsetvl): Adjust codes.
19889 * config/riscv/riscv-vsetvl.h: New function declaration.
19891 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19893 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
19894 (vector_insn_info::set_demand_info): New function.
19895 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
19896 (pass_vsetvl::merge_successors): Ditto.
19897 (pass_vsetvl::compute_global_backward_infos): Ditto.
19898 (pass_vsetvl::backward_demand_fusion): Ditto.
19899 (pass_vsetvl::forward_demand_fusion): Ditto.
19900 (pass_vsetvl::demand_fusion): New function.
19901 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
19902 * config/riscv/riscv-vsetvl.h: New function declaration.
19904 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19906 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
19908 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19910 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
19911 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
19913 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19915 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
19916 (backward_propagate_worthwhile_p): Fix non-worthwhile.
19918 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19920 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
19922 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19924 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
19925 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
19926 (pass_vsetvl::commit_vsetvls): Ditto.
19927 * config/riscv/riscv-vsetvl.h: New function declaration.
19929 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19931 * config/riscv/vector.md:
19933 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19935 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
19936 pred_store for vse.
19937 * config/riscv/riscv-vector-builtins.cc
19938 (function_expander::add_mem_operand): Refine function.
19939 (function_expander::use_contiguous_load_insn): Adjust new
19941 (function_expander::use_contiguous_store_insn): Ditto.
19942 * config/riscv/riscv-vector-builtins.h: Refine function.
19943 * config/riscv/vector.md (@pred_store<mode>): New pattern.
19945 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19947 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
19949 2023-01-26 Marek Polacek <polacek@redhat.com>
19951 PR middle-end/108543
19952 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
19953 if it was previously set.
19955 2023-01-26 Jakub Jelinek <jakub@redhat.com>
19957 PR tree-optimization/108540
19958 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
19959 are singletons, use range_true even if op1 != op2
19960 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
19961 even if intersection of the ranges is empty and one has
19962 zero low bound and another zero high bound, use range_true_and_false
19963 rather than range_false.
19964 (foperator_not_equal::fold_range): If both op1 and op2
19965 are singletons, use range_false even if op1 != op2
19966 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
19967 even if intersection of the ranges is empty and one has
19968 zero low bound and another zero high bound, use range_true_and_false
19969 rather than range_true.
19971 2023-01-26 Jakub Jelinek <jakub@redhat.com>
19973 * value-relation.cc (kind_string): Add const.
19974 (rr_negate_table, rr_swap_table, rr_intersect_table,
19975 rr_union_table, rr_transitive_table): Add static const, change
19976 element type from relation_kind to unsigned char.
19977 (relation_negate, relation_swap, relation_intersect, relation_union,
19978 relation_transitive): Cast rr_*_table element to relation_kind.
19979 (relation_to_code): Add static const.
19980 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
19982 2023-01-26 Richard Biener <rguenther@suse.de>
19984 PR tree-optimization/108547
19985 * gimple-predicate-analysis.cc (value_sat_pred_p):
19988 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
19990 PR tree-optimization/108522
19991 * tree-object-size.cc (compute_object_offset): Make EXPR
19992 argument non-const. Call component_ref_field_offset.
19994 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19996 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
19997 FEATURE_STRING field.
19999 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
20001 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
20003 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
20007 * gcc.cc: Provide default specs for Modula-2 so that when the
20008 language is not built-in better diagnostics are emitted for
20009 attempts to use .mod or .m2i file extensions.
20011 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20013 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
20015 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20017 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
20019 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20021 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
20024 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20026 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
20028 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20030 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
20032 2023-01-25 Richard Biener <rguenther@suse.de>
20034 PR tree-optimization/108523
20035 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
20036 backedge value for the result when using predication to
20039 2023-01-25 Richard Biener <rguenther@suse.de>
20041 * doc/lto.texi (Command line options): Reword and update reference
20042 to removed lto_read_all_file_options.
20044 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
20046 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
20049 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
20051 * doc/contrib.texi: Add Jose E. Marchesi.
20053 2023-01-25 Jakub Jelinek <jakub@redhat.com>
20055 PR tree-optimization/108498
20056 * gimple-ssa-store-merging.cc (class store_operand_info):
20057 End coment with full stop rather than comma.
20058 (split_group): Likewise.
20059 (merged_store_group::apply_stores): Clear string_concatenation if
20060 start or end aren't on a byte boundary.
20062 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
20063 Jakub Jelinek <jakub@redhat.com>
20065 PR tree-optimization/108522
20066 * tree-object-size.cc (compute_object_offset): Use
20067 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
20069 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20071 * config/xtensa/xtensa.md:
20072 Fix exit from loops detecting references before overwriting in the
20075 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
20077 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
20078 do elimination but only for hard register.
20079 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
20080 calls of get_hard_regno.
20082 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20084 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
20087 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
20090 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
20091 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
20094 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20096 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
20097 and only include 'csky/t-csky-linux' when enable multilib.
20098 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
20099 define it when disable multilib.
20101 2023-01-24 Richard Biener <rguenther@suse.de>
20103 PR tree-optimization/108500
20104 * dominance.h (calculate_dominance_info): Add parameter
20105 to indicate fast-query compute, defaulted to true.
20106 * dominance.cc (calculate_dominance_info): Honor
20107 fast-query compute parameter.
20108 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
20109 not compute the dominator fast-query DFS numbers.
20111 2023-01-24 Eric Biggers <ebiggers@google.com>
20114 * optc-save-gen.awk: Fix copy-and-paste error.
20116 2023-01-24 Jakub Jelinek <jakub@redhat.com>
20119 * cgraphbuild.cc: Include gimplify.h.
20120 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
20121 their corresponding DECL_VALUE_EXPR expressions after unsharing.
20123 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20126 * config.gcc (tm_file): Move the variable out of loop.
20128 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
20129 Yang Yujie <yangyujie@loongson.cn>
20132 * config/loongarch/loongarch.cc (loongarch_classify_address):
20133 Add precessint for CONST_INT.
20134 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
20135 (loongarch_print_operand): Increase the processing of '%c'.
20136 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
20137 And port the public operand modifiers information to this document.
20139 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20141 * doc/invoke.texi (-mbranch-protection): Update documentation.
20143 2023-01-23 Richard Biener <rguenther@suse.de>
20146 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
20148 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
20149 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
20150 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
20151 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
20153 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20155 * config/arm/aout.h (ra_auth_code): Add entry in enum.
20156 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
20157 to dwarf frame expression.
20158 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
20159 (arm_expand_prologue): Update frame related information and reg notes
20160 for pac/pacbit insn.
20161 (arm_regno_class): Check for pac pseudo reigster.
20162 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
20163 (arm_init_machine_status): Set pacspval_needed to zero.
20164 (arm_debugger_regno): Check for PAC register.
20165 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
20167 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
20168 (arm_unwind_emit): Update REG_CFA_REGISTER case._
20169 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
20170 (DWARF_PAC_REGNUM): Define.
20171 (IS_PAC_REGNUM): Likewise.
20172 (enum reg_class): Add PAC_REG entry.
20173 (machine_function): Add pacbti_needed state to structure.
20174 * config/arm/arm.md (RA_AUTH_CODE): Define.
20176 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20178 * config.gcc ($tm_file): Update variable.
20179 * config/arm/arm-mlib.h: Create new header file.
20180 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
20181 multilib arch directory.
20182 (MULTILIB_REUSE): Add multilib reuse rules.
20183 (MULTILIB_MATCHES): Add multilib match rules.
20185 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20187 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
20188 * config/arm/arm-tables.opt: Regenerate.
20189 * config/arm/arm-tune.md: Likewise.
20190 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
20191 * (-mfix-cmse-cve-2021-35465): Likewise.
20193 2023-01-23 Richard Biener <rguenther@suse.de>
20195 PR tree-optimization/108482
20196 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
20197 .LOOP_DIST_ALIAS calls.
20199 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20201 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
20202 * config/arm/arm-protos.h: Update.
20203 * config/arm/aarch-common-protos.h: Declare
20204 'aarch_bti_arch_check'.
20205 * config/arm/arm.cc (aarch_bti_enabled) Update.
20206 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
20207 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
20208 * config/arm/arm.md (bti_nop): New insn.
20209 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
20210 (aarch-bti-insert.o): New target.
20211 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
20212 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
20214 (gate): Make use of 'aarch_bti_arch_check'.
20215 * config/arm/arm-passes.def: New file.
20216 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
20218 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20220 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
20221 'aarch-bti-insert.o'.
20222 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
20224 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
20225 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
20226 (aarch64_output_mi_thunk)
20227 (aarch64_print_patchable_function_entry)
20228 (aarch64_file_end_indicate_exec_stack): Update renamed function
20229 calls to renamed functions.
20230 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
20231 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
20233 * config/aarch64/aarch64-bti-insert.cc: Delete.
20234 * config/arm/aarch-bti-insert.cc: New file including and
20235 generalizing code from aarch64-bti-insert.cc.
20236 * config/arm/aarch-common-protos.h: Update.
20238 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20240 * config/arm/arm.h (arm_arch8m_main): Declare it.
20241 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
20243 * config/arm/arm.cc (arm_arch8m_main): Define it.
20244 (arm_option_reconfigure_globals): Set arm_arch8m_main.
20245 (arm_compute_frame_layout, arm_expand_prologue)
20246 (thumb2_expand_return, arm_expand_epilogue)
20247 (arm_conditional_register_usage): Update for pac codegen.
20248 (arm_current_function_pac_enabled_p): New function.
20249 (aarch_bti_enabled) New function.
20250 (use_return_insn): Return zero when pac is enabled.
20251 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
20253 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
20254 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
20256 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20258 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
20259 mbranch-protection.
20261 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20262 Tejas Belagod <tbelagod@arm.com>
20264 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
20265 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
20267 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20268 Tejas Belagod <tbelagod@arm.com>
20269 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20271 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
20272 new pseudo register class _UVRSC_PAC.
20274 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20275 Tejas Belagod <tbelagod@arm.com>
20277 * config/arm/arm-c.cc (arm_cpu_builtins): Define
20278 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
20279 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
20281 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20282 Tejas Belagod <tbelagod@arm.com>
20284 * doc/sourcebuild.texi: Document arm_pacbti_hw.
20286 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20287 Tejas Belagod <tbelagod@arm.com>
20288 Richard Earnshaw <Richard.Earnshaw@arm.com>
20290 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
20291 -mbranch-protection option and initialize appropriate data structures.
20292 * config/arm/arm.opt (-mbranch-protection): New option.
20293 * doc/invoke.texi (Arm Options): Document it.
20295 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20296 Tejas Belagod <tbelagod@arm.com>
20298 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
20299 * config/arm/arm-cpus.in (pacbti): New feature.
20300 * doc/invoke.texi (Arm Options): Document it.
20302 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20303 Tejas Belagod <tbelagod@arm.com>
20305 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
20306 (all_architectures): Fix comment.
20307 (aarch64_parse_extension): Rename return type, enum value names.
20308 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
20309 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
20310 Also rename corresponding enum values.
20311 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
20312 out aarch64_function_type and move it to common code as
20313 aarch_function_type in aarch-common.h.
20314 * config/aarch64/aarch64-protos.h: Include common types header,
20315 move out types aarch64_parse_opt_result and aarch64_key_type to
20317 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
20318 and functions out into aarch-common.h and aarch-common.cc. Fix up
20319 all the name changes resulting from the move.
20320 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
20322 * config/aarch64/aarch64.opt: Include aarch-common.h to import
20323 type move. Fix up name changes from factoring out common code and
20325 * config/arm/aarch-common-protos.h: Export factored out routines to both
20327 * config/arm/aarch-common.cc: Include newly factored out types.
20328 Move all mbranch-protection code and data structures from
20330 * config/arm/aarch-common.h: New header that declares types shared
20331 between aarch32 and aarch64 backends.
20332 * config/arm/arm-protos.h: Declare types and variables that are
20333 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
20334 aarch_ra_sign_scope and aarch_enable_bti.
20335 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
20336 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
20337 * config/arm/arm.cc: Add missing includes.
20339 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
20341 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
20343 2023-01-23 Richard Biener <rguenther@suse.de>
20345 PR tree-optimization/108449
20346 * cgraphunit.cc (check_global_declaration): Do not turn
20347 undefined statics into externs.
20349 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
20351 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
20352 and HI input modes.
20353 * config/pru/pru.md (clz): Fix generated code for QI and HI
20356 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
20358 * config/v850/v850.cc (v850_select_section): Put const volatile
20359 objects into read-only sections.
20361 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
20363 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
20364 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
20365 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
20367 2023-01-20 Jakub Jelinek <jakub@redhat.com>
20369 PR tree-optimization/108457
20370 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
20371 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
20372 argument instead of a temporary. Formatting fixes.
20374 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20376 PR tree-optimization/108447
20377 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
20378 (relation_tests): Add self-tests for relation_{intersect,union}
20380 * selftest.h (relation_tests): Declare.
20381 * function-tests.cc (test_ranges): Call it.
20383 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
20386 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
20387 invalid third argument to __builtin_ia32_prefetch.
20389 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20391 PR middle-end/108459
20392 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
20393 than fold_unary for NEGATE_EXPR.
20395 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
20398 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
20399 comment. Move assert about alignment a bit later.
20401 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20403 PR tree-optimization/108440
20404 * tree-ssa-forwprop.cc: Include gimple-range.h.
20405 (simplify_rotate): For the forms with T2 wider than T and shift counts of
20406 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
20407 to B. For the forms with T2 wider than T and shift counts of
20408 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
20409 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
20410 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
20411 pass specific ranger instead of get_global_range_query.
20412 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
20415 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20417 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
20418 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
20420 (aarch64_simd_vec_copy_lane<mode>): Likewise.
20421 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
20423 2023-01-19 Alexandre Oliva <oliva@adacore.com>
20426 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
20427 within debug insns.
20429 2023-01-18 Martin Jambor <mjambor@suse.cz>
20432 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
20433 lcone_of chain also do not need the body.
20435 2023-01-18 Richard Biener <rguenther@suse.de>
20438 2022-12-16 Richard Biener <rguenther@suse.de>
20440 PR middle-end/108086
20441 * tree-inline.cc (remap_ssa_name): Do not unshare the
20442 result from the decl_map.
20444 2023-01-18 Murray Steele <murray.steele@arm.com>
20447 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
20449 (__arm_vst1q_p_s8): Likewise.
20450 (__arm_vld1q_z_u8): Likewise.
20451 (__arm_vld1q_z_s8): Likewise.
20452 (__arm_vst1q_p_u16): Likewise.
20453 (__arm_vst1q_p_s16): Likewise.
20454 (__arm_vld1q_z_u16): Likewise.
20455 (__arm_vld1q_z_s16): Likewise.
20456 (__arm_vst1q_p_u32): Likewise.
20457 (__arm_vst1q_p_s32): Likewise.
20458 (__arm_vld1q_z_u32): Likewise.
20459 (__arm_vld1q_z_s32): Likewise.
20460 (__arm_vld1q_z_f16): Likewise.
20461 (__arm_vst1q_p_f16): Likewise.
20462 (__arm_vld1q_z_f32): Likewise.
20463 (__arm_vst1q_p_f32): Likewise.
20465 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20467 * config/xtensa/xtensa.md (xorsi3_internal):
20468 Rename from the original of "xorsi3".
20469 (xorsi3): New expansion pattern that emits addition rather than
20470 bitwise-XOR when the second source is a constant of -2147483648
20473 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
20474 Andrew Pinski <apinski@marvell.com>
20477 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
20478 vec_vsubcuqP with vec_vsubcuq.
20480 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
20483 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
20484 support for invalid uses of MMA opaque type in function arguments.
20486 2023-01-18 liuhongt <hongtao.liu@intel.com>
20489 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
20490 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
20491 -share or -mno-daz-ftz is specified.
20492 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
20493 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
20495 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
20497 * config/bpf/bpf.cc (bpf_option_override): Disable
20500 2023-01-17 Jakub Jelinek <jakub@redhat.com>
20502 PR tree-optimization/106523
20503 * tree-ssa-forwprop.cc (simplify_rotate): For the
20504 patterns with (-Y) & (B - 1) in one operand's shift
20505 count and Y in another, if T2 has wider precision than T,
20506 punt if Y could have a value in [B, B2 - 1] range.
20508 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
20511 * config/i386/i386.cc (x86_output_mi_thunk): Disable
20512 -mforce-indirect-call for PIC in 32-bit mode.
20514 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
20517 * ipa-modref.cc (modref_access_analysis::analyze): Use
20518 find_always_executed_bbs.
20519 * ipa-sra.cc (process_scan_results): Likewise.
20520 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
20521 (find_always_executed_bbs): New function.
20522 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
20523 (find_always_executed_bbs): Declare.
20525 2023-01-16 Jan Hubicka <jh@suse.cz>
20527 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
20528 by TARGET_USE_SCATTER.
20529 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
20530 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
20531 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
20532 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
20533 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
20534 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
20536 2023-01-16 Richard Biener <rguenther@suse.de>
20539 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
20541 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
20545 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
20546 (__ARM_mve_coerce3): Likewise.
20548 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20550 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
20552 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20554 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
20555 (number_of_iterations_bitcount): Add call to the above.
20556 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
20557 c[lt]z idiom recognition.
20559 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20561 * doc/sourcebuild.texi: Add missing target attributes.
20563 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20565 PR tree-optimization/94793
20566 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
20568 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
20569 (number_of_iterations_cltz_complement): New.
20570 (number_of_iterations_bitcount): Add call to the above.
20572 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
20574 * doc/extend.texi (Common Function Attributes): Fix grammar.
20576 2023-01-16 Jakub Jelinek <jakub@redhat.com>
20579 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
20580 * config/riscv/riscv-vsetvl.cc: Likewise.
20582 2023-01-16 Jakub Jelinek <jakub@redhat.com>
20585 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
20586 disable -Winit-self using pragma GCC diagnostic ignored.
20587 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
20589 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
20590 _mm256_undefined_si256): Likewise.
20591 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
20592 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
20593 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
20594 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
20596 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
20599 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
20600 support for invalid uses in inline asm, factor out the checking and
20601 erroring to lambda function check_and_error_invalid_use.
20603 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
20605 PR tree-optimization/107608
20606 * range-op-float.cc (range_operator_float::fold_range): Avoid
20607 folding into INF when flag_trapping_math.
20608 * value-range.h (frange::known_isinf): Return false for possible NANs.
20610 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20612 * config.gcc (csky-*-*): Support --with-float=softfp.
20614 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20616 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
20617 Rename to xtensa_adjust_reg_alloc_order.
20618 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
20619 Ditto. And also remove code to reorder register numbers for
20620 leaf functions, rename the tables, and adjust the allocation
20621 order for the call0 ABI to use register A0 more.
20622 (xtensa_leaf_regs): Remove.
20623 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
20624 (order_regs_for_local_alloc): Rename as the above.
20625 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
20627 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20629 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
20630 Change to define_insn_and_split to fold ldr+dup to ld1rq.
20631 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
20633 2023-01-14 Alexandre Oliva <oliva@adacore.com>
20635 * hash-table.h (is_deleted): Precheck !is_empty.
20636 (mark_deleted): Postcheck !is_empty.
20637 (copy constructor): Test is_empty before is_deleted.
20639 2023-01-14 Alexandre Oliva <oliva@adacore.com>
20642 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
20645 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
20647 PR rtl-optimization/108274
20648 * function.cc (thread_prologue_and_epilogue_insns): Also update the
20649 DF information for calls in a few more cases.
20651 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
20653 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
20654 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
20656 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
20657 (MAX_SYNC_LIBFUNC_SIZE): Define.
20658 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
20660 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
20661 libcall when sync libcalls are disabled.
20662 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
20663 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
20664 are disabled on 32-bit target.
20665 * config/pa/pa.opt (matomic-libcalls): New option.
20666 * doc/invoke.texi (HPPA Options): Update.
20668 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
20670 PR rtl-optimization/108117
20671 PR rtl-optimization/108132
20672 * sched-deps.cc (deps_analyze_insn): Do not schedule across
20673 calls before reload.
20675 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20677 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
20678 options for -mlibarch.
20679 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
20680 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
20682 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
20684 * attribs.cc (strict_flex_array_level_of): Move this function to ...
20685 * attribs.h (strict_flex_array_level_of): Remove the declaration.
20686 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
20687 replace the referece to strict_flex_array_level_of with
20688 DECL_NOT_FLEXARRAY.
20689 * tree.cc (component_ref_size): Likewise.
20691 2023-01-13 Richard Biener <rguenther@suse.de>
20694 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
20695 crtfastmath.o for -shared.
20696 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
20698 2023-01-13 Richard Biener <rguenther@suse.de>
20701 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
20702 crtfastmath.o for -shared.
20703 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
20705 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
20708 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
20710 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
20712 (TARGET_DWARF_FRAME_REG_MODE): Define.
20714 2023-01-13 Richard Biener <rguenther@suse.de>
20717 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
20718 update EH info on the fly.
20720 2023-01-13 Richard Biener <rguenther@suse.de>
20722 PR tree-optimization/108387
20723 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
20724 value before inserting expression into the tables.
20726 2023-01-12 Andrew Pinski <apinski@marvell.com>
20727 Roger Sayle <roger@nextmovesoftware.com>
20729 PR tree-optimization/92342
20730 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
20731 Use tcc_comparison and :c for the multiply.
20732 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
20734 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
20735 Richard Sandiford <richard.sandiford@arm.com>
20738 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
20739 Check DECL_PACKED for bitfield.
20740 (aarch64_layout_arg): Warn when parameter passing ABI changes.
20741 (aarch64_function_arg_boundary): Do not warn here.
20742 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
20745 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
20746 Richard Sandiford <richard.sandiford@arm.com>
20748 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
20750 (aarch64_layout_arg): Factorize warning conditions.
20751 (aarch64_function_arg_boundary): Fix typo.
20752 * function.cc (currently_expanding_function_start): New variable.
20753 (expand_function_start): Handle
20754 currently_expanding_function_start.
20755 * function.h (currently_expanding_function_start): Declare.
20757 2023-01-12 Richard Biener <rguenther@suse.de>
20759 PR tree-optimization/99412
20760 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
20761 (swap_ops_for_binary_stmt): Remove reduction handling.
20762 (rewrite_expr_tree_parallel): Adjust.
20763 (reassociate_bb): Likewise.
20764 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
20766 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20768 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
20769 Rearrange the emitting codes.
20771 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20773 * config/xtensa/xtensa.md (*btrue):
20774 Correct value of the attribute "length" that depends on
20775 TARGET_DENSITY and operands, and add '?' character to the register
20776 constraint of the compared operand.
20778 2023-01-12 Alexandre Oliva <oliva@adacore.com>
20780 * hash-table.h (expand): Check elements and deleted counts.
20781 (verify): Likewise.
20783 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
20785 PR tree-optimization/71343
20786 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
20787 the value number of the expression X << C the same as the value
20788 number for the multiplication X * (1<<C).
20790 2023-01-11 David Faust <david.faust@oracle.com>
20793 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
20794 floating point modes.
20796 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
20798 PR tree-optimization/108199
20799 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
20800 for bit-field references.
20802 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
20804 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
20805 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
20806 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
20807 OPTION_MASK_P10_FUSION.
20809 2023-01-11 Richard Biener <rguenther@suse.de>
20811 PR tree-optimization/107767
20812 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
20813 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
20814 * tree-switch-conversion.cc (switch_conversion::collect):
20815 Count unique non-default targets accounting for later
20816 merging opportunities.
20818 2023-01-11 Martin Liska <mliska@suse.cz>
20820 PR middle-end/107976
20821 * params.opt: Limit JT params.
20822 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
20824 2023-01-11 Richard Biener <rguenther@suse.de>
20826 PR tree-optimization/108352
20827 * tree-ssa-threadbackward.cc
20828 (back_threader_profitability::profitable_path_p): Adjust
20829 heuristic that allows non-multi-way branch threads creating
20831 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
20832 (--param fsm-scale-path-stmts): Adjust.
20833 * params.opt (--param=fsm-scale-path-blocks=): Remove.
20834 (-param=fsm-scale-path-stmts=): Adjust description.
20836 2023-01-11 Richard Biener <rguenther@suse.de>
20838 PR tree-optimization/108353
20839 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
20841 (add_ssa_edge): Simplify.
20842 (add_control_edge): Likewise.
20843 (ssa_prop_init): Likewise.
20844 (ssa_prop_fini): Likewise.
20845 (ssa_propagation_engine::ssa_propagate): Likewise.
20847 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
20849 * config/s390/s390.md (*not<mode>): New pattern.
20851 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20853 * config/xtensa/xtensa.cc (xtensa_insn_cost):
20854 Let insn cost for size be obtained by applying COSTS_N_INSNS()
20855 to instruction length and then dividing by 3.
20857 2023-01-10 Richard Biener <rguenther@suse.de>
20859 PR tree-optimization/106293
20860 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
20861 process degenerate PHI defs.
20863 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
20865 PR rtl-optimization/106421
20866 * cprop.cc (bypass_block): Check that DEST is local to this
20867 function (non-NULL) before calling find_edge.
20869 2023-01-10 Martin Jambor <mjambor@suse.cz>
20872 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
20873 sort_replacements, lookup_first_base_replacement and
20874 m_sorted_replacements_p.
20875 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
20876 (ipa_param_body_adjustments::register_replacement): Set
20877 m_sorted_replacements_p to false.
20878 (compare_param_body_replacement): New function.
20879 (ipa_param_body_adjustments::sort_replacements): Likewise.
20880 (ipa_param_body_adjustments::common_initialization): Call
20882 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
20883 m_sorted_replacements_p.
20884 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
20886 (ipa_param_body_adjustments::lookup_first_base_replacement): New
20888 (ipa_param_body_adjustments::modify_call_stmt): Use
20889 lookup_first_base_replacement.
20890 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
20891 adjustments->sort_replacements.
20893 2023-01-10 Richard Biener <rguenther@suse.de>
20895 PR tree-optimization/108314
20896 * tree-vect-stmts.cc (vectorizable_condition): Do not
20897 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
20899 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20901 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
20903 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20905 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
20907 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20909 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
20910 defines for soft float abi.
20912 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20914 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
20915 (smart_bclri): Likewise.
20916 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
20917 (fast_bclri): Likewise.
20918 (fast_cmpnesi_i): Likewise.
20919 (*fast_cmpltsi_i): Likewise.
20920 (*fast_cmpgeusi_i): Likewise.
20922 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20924 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
20925 flag_fp_int_builtin_inexact || !flag_trapping_math.
20926 (<frm_pattern><mode>2): Likewise.
20928 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
20930 * config/s390/s390.cc (s390_register_info): Check call_used_regs
20931 instead of hard-coding the register numbers for call saved
20933 (s390_optimize_register_info): Likewise.
20935 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
20937 * doc/gm2.texi (Overview): Fix @node markers.
20938 (Using): Likewise. Remove subsections that were moved to Overview
20939 from the menu and move others around.
20941 2023-01-09 Richard Biener <rguenther@suse.de>
20943 PR middle-end/108209
20944 * genmatch.cc (commutative_op): Fix return value for
20945 user-id with non-commutative first replacement.
20947 2023-01-09 Jakub Jelinek <jakub@redhat.com>
20950 * calls.cc (expand_call): For calls with
20951 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
20954 2023-01-09 Richard Biener <rguenther@suse.de>
20956 PR middle-end/69482
20957 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
20958 qualified accesses also force objects to memory.
20960 2023-01-09 Martin Liska <mliska@suse.cz>
20963 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
20964 NULL (deleleted value) to a hash_set.
20966 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20968 * config/xtensa/xtensa.md (*splice_bits):
20969 New insn_and_split pattern.
20971 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20973 * config/xtensa/xtensa.cc
20974 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
20975 New helper functions.
20976 (xtensa_set_return_address, xtensa_output_mi_thunk):
20977 Change to use the helper function.
20978 (xtensa_emit_adjust_stack_ptr): Ditto.
20979 And also change to try reusing the content of scratch register
20980 A9 if the register is not modified in the function body.
20982 2023-01-07 LIU Hao <lh_mouse@126.com>
20984 PR middle-end/108300
20985 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
20986 before <windows.h>.
20987 * diagnostic-color.cc: Likewise.
20988 * plugin.cc: Likewise.
20989 * prefix.cc: Likewise.
20991 2023-01-06 Joseph Myers <joseph@codesourcery.com>
20993 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
20994 for handling real integer types.
20996 2023-01-06 Tamar Christina <tamar.christina@arm.com>
20999 2022-12-12 Tamar Christina <tamar.christina@arm.com>
21001 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
21002 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
21003 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
21004 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
21005 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
21006 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
21007 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
21008 (aarch64_simd_dupv2hf): New.
21009 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
21011 * config/aarch64/iterators.md (VHSDF_P): New.
21012 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
21013 Vel, q, vp): Add V2HF.
21014 * config/arm/types.md (neon_fp_reduc_add_h): New.
21016 2023-01-06 Martin Liska <mliska@suse.cz>
21018 PR middle-end/107966
21019 * doc/options.texi: Fix Var documentation in internal manual.
21021 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
21024 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21026 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
21027 RTL expansion to allow condition (mask) to be shared/reused,
21028 by avoiding overwriting pseudos and adding REG_EQUAL notes.
21030 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
21032 * common.opt: Add -static-libgm2.
21033 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
21034 * doc/gm2.texi: Document static-libgm2.
21035 * gcc.cc (driver_handle_option): Allow static-libgm2.
21037 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
21039 * common/config/i386/i386-common.cc (processor_alias_table):
21040 Use CPU_ZNVER4 for znver4.
21041 * config/i386/i386.md: Add znver4.md.
21042 * config/i386/znver4.md: New.
21044 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21046 PR tree-optimization/108253
21047 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
21050 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21052 PR middle-end/108237
21053 * generic-match-head.cc: Include tree-pass.h.
21054 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
21055 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
21056 resp. PROP_gimple_lvec property set.
21058 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21060 PR sanitizer/108256
21061 * convert.cc (do_narrow): Punt for MULT_EXPR if original
21062 type doesn't wrap around and -fsanitize=signed-integer-overflow
21064 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
21066 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
21068 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
21069 * common/config/i386/i386-common.cc: Add Emeraldrapids.
21071 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
21073 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
21076 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
21078 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
21079 default constructor to initialize it.
21080 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
21081 for last and iterate to handle recursive calls. Delete leftover
21082 candidates at the end.
21083 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
21085 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
21086 gc_candidate bit when a clone is used.
21088 2023-01-03 Florian Weimer <fweimer@redhat.com>
21091 2023-01-02 Florian Weimer <fweimer@redhat.com>
21093 * dwarf2cfi.cc (init_return_column_size): Remove.
21094 (init_one_dwarf_reg_size): Adjust.
21095 (generate_dwarf_reg_sizes): New function. Extracted
21096 from expand_builtin_init_dwarf_reg_sizes.
21097 (expand_builtin_init_dwarf_reg_sizes): Call
21098 generate_dwarf_reg_sizes.
21099 * target.def (init_dwarf_reg_sizes_extra): Adjust
21101 * config/msp430/msp430.cc
21102 (msp430_init_dwarf_reg_sizes_extra): Adjust.
21103 * config/rs6000/rs6000.cc
21104 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
21105 * doc/tm.texi: Update.
21107 2023-01-03 Florian Weimer <fweimer@redhat.com>
21110 2023-01-02 Florian Weimer <fweimer@redhat.com>
21112 * debug.h (dwarf_reg_sizes_constant): Declare.
21113 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
21115 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
21117 PR tree-optimization/105043
21118 * doc/extend.texi (Object Size Checking): Split out into two
21119 subsections and mention _FORTIFY_SOURCE.
21121 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21123 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
21124 RTL expansion to allow condition (mask) to be shared/reused,
21125 by avoiding overwriting pseudos and adding REG_EQUAL notes.
21127 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21130 * config/i386/i386-features.cc
21131 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
21132 the gain/cost of converting a MEM operand.
21134 2023-01-03 Jakub Jelinek <jakub@redhat.com>
21136 PR middle-end/108264
21137 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
21138 from source which doesn't have scalar integral mode first convert
21141 2023-01-03 Jakub Jelinek <jakub@redhat.com>
21143 PR rtl-optimization/108263
21144 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
21147 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
21150 * config/i386/lujiazui.md (lujiazui_div): New automaton.
21151 (lua_div): New unit.
21152 (lua_idiv_qi): Correct unit in the reservation.
21153 (lua_idiv_qi_load): Ditto.
21154 (lua_idiv_hi): Ditto.
21155 (lua_idiv_hi_load): Ditto.
21156 (lua_idiv_si): Ditto.
21157 (lua_idiv_si_load): Ditto.
21158 (lua_idiv_di): Ditto.
21159 (lua_idiv_di_load): Ditto.
21160 (lua_fdiv_SF): Ditto.
21161 (lua_fdiv_SF_load): Ditto.
21162 (lua_fdiv_DF): Ditto.
21163 (lua_fdiv_DF_load): Ditto.
21164 (lua_fdiv_XF): Ditto.
21165 (lua_fdiv_XF_load): Ditto.
21166 (lua_ssediv_SF): Ditto.
21167 (lua_ssediv_load_SF): Ditto.
21168 (lua_ssediv_V4SF): Ditto.
21169 (lua_ssediv_load_V4SF): Ditto.
21170 (lua_ssediv_V8SF): Ditto.
21171 (lua_ssediv_load_V8SF): Ditto.
21172 (lua_ssediv_SD): Ditto.
21173 (lua_ssediv_load_SD): Ditto.
21174 (lua_ssediv_V2DF): Ditto.
21175 (lua_ssediv_load_V2DF): Ditto.
21176 (lua_ssediv_V4DF): Ditto.
21177 (lua_ssediv_load_V4DF): Ditto.
21179 2023-01-02 Florian Weimer <fweimer@redhat.com>
21181 * debug.h (dwarf_reg_sizes_constant): Declare.
21182 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
21184 2023-01-02 Florian Weimer <fweimer@redhat.com>
21186 * dwarf2cfi.cc (init_return_column_size): Remove.
21187 (init_one_dwarf_reg_size): Adjust.
21188 (generate_dwarf_reg_sizes): New function. Extracted
21189 from expand_builtin_init_dwarf_reg_sizes.
21190 (expand_builtin_init_dwarf_reg_sizes): Call
21191 generate_dwarf_reg_sizes.
21192 * target.def (init_dwarf_reg_sizes_extra): Adjust
21194 * config/msp430/msp430.cc
21195 (msp430_init_dwarf_reg_sizes_extra): Adjust.
21196 * config/rs6000/rs6000.cc
21197 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
21198 * doc/tm.texi: Update.
21200 2023-01-02 Jakub Jelinek <jakub@redhat.com>
21202 * gcc.cc (process_command): Update copyright notice dates.
21203 * gcov-dump.cc (print_version): Ditto.
21204 * gcov.cc (print_version): Ditto.
21205 * gcov-tool.cc (print_version): Ditto.
21206 * gengtype.cc (create_file): Ditto.
21207 * doc/cpp.texi: Bump @copying's copyright year.
21208 * doc/cppinternals.texi: Ditto.
21209 * doc/gcc.texi: Ditto.
21210 * doc/gccint.texi: Ditto.
21211 * doc/gcov.texi: Ditto.
21212 * doc/install.texi: Ditto.
21213 * doc/invoke.texi: Ditto.
21215 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
21216 Uroš Bizjak <ubizjak@gmail.com>
21218 * config/i386/i386.md (extendditi2): New define_insn.
21219 (define_split): Use DWIH mode iterator to treat new extendditi2
21220 identically to existing extendsidi2_1.
21221 (define_peephole2): Likewise.
21222 (define_peephole2): Likewise.
21223 (define_Split): Likewise.
21226 Copyright (C) 2023 Free Software Foundation, Inc.
21228 Copying and distribution of this file, with or without modification,
21229 are permitted in any medium without royalty provided the copyright
21230 notice and this notice are preserved.