1 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
3 PR rtl-optimization/101188
4 * postreload.cc (reload_cse_move2add_invalidate): New function,
6 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
8 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
10 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
11 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
12 and if maxv == 1, use constant element for duplicating into register.
14 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
16 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
17 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
18 (gimplify_adjust_omp_clauses): Change
19 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
20 GOMP_MAP_FORCE_PRESENT.
21 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
22 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
23 to/from clauses with present modifier.
25 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
27 PR tree-optimization/110205
28 * range-op-float.cc (range_operator::fold_range): Add default FII
30 * range-op-mixed.h (class operator_gt): Add missing final overrides.
31 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
32 (operator_lshift ::update_bitmask): Add final override.
33 (operator_rshift ::update_bitmask): Add final override.
34 * range-op.h (range_operator::fold_range): Add FII prototype.
36 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
38 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
39 Use range_op_handler directly.
40 * range-op.cc (range_op_handler::range_op_handler): Unsigned
41 param instead of tree-code.
42 (ptr_op_widen_plus_signed): Delete.
43 (ptr_op_widen_plus_unsigned): Delete.
44 (ptr_op_widen_mult_signed): Delete.
45 (ptr_op_widen_mult_unsigned): Delete.
46 (range_op_table::initialize_integral_ops): Add new opcodes.
47 * range-op.h (range_op_handler): Use unsigned.
48 (OP_WIDEN_MULT_SIGNED): New.
49 (OP_WIDEN_MULT_UNSIGNED): New.
50 (OP_WIDEN_PLUS_SIGNED): New.
51 (OP_WIDEN_PLUS_UNSIGNED): New.
52 (RANGE_OP_TABLE_SIZE): New.
53 (range_op_table::operator []): Use unsigned.
54 (range_op_table::set): Use unsigned.
55 (m_range_tree): Make unsigned.
56 (ptr_op_widen_mult_signed): Remove.
57 (ptr_op_widen_mult_unsigned): Remove.
58 (ptr_op_widen_plus_signed): Remove.
59 (ptr_op_widen_plus_unsigned): Remove.
61 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
63 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
64 manually as there is no access to the default operator.
65 (cfn_copysign::fold_range): Don't check for validity.
66 (cfn_ubsan::fold_range): Ditto.
67 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
68 * range-op.cc (default_operator): New.
69 (range_op_handler::range_op_handler): Use default_operator
71 (range_op_handler::operator bool): Move from header, compare
72 against default operator.
73 (range_op_handler::range_op): New.
74 * range-op.h (range_op_handler::operator bool): Move.
76 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
78 * range-op.cc (unified_table): Delete.
79 (range_op_table operator_table): Instantiate.
80 (range_op_table::range_op_table): Rename from unified_table.
81 (range_op_handler::range_op_handler): Use range_op_table.
82 * range-op.h (range_op_table::operator []): Inline.
83 (range_op_table::set): Inline.
85 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
87 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
89 * gimple-range-op.cc (get_code): Rename from get_code_and_type
91 (gimple_range_op_handler::supported_p): No need for type.
92 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
93 (cfn_copysign::fold_range): Ditto.
94 (cfn_ubsan::fold_range): Ditto.
95 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
96 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
97 * range-op-float.cc (operator_plus::op1_range): Ditto.
98 (operator_mult::op1_range): Ditto.
99 (range_op_float_tests): Ditto.
100 * range-op.cc (get_op_handler): Remove.
101 (range_op_handler::set_op_handler): Remove.
102 (operator_plus::op1_range): No need for type.
103 (operator_minus::op1_range): Ditto.
104 (operator_mult::op1_range): Ditto.
105 (operator_exact_divide::op1_range): Ditto.
106 (operator_cast::op1_range): Ditto.
107 (perator_bitwise_not::fold_range): Ditto.
108 (operator_negate::fold_range): Ditto.
109 * range-op.h (range_op_handler::range_op_handler): Remove type param.
110 (range_cast): No need for type.
111 (range_op_table::operator[]): Check for enum_code >= 0.
112 * tree-data-ref.cc (compute_distributive_range): No need for type.
113 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
114 * value-query.cc (range_query::get_tree_range): Ditto.
115 * value-relation.cc (relation_oracle::validate_relation): Ditto.
116 * vr-values.cc (range_of_var_in_loop): Ditto.
117 (simplify_using_ranges::fold_cond_with_ops): Ditto.
119 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
121 * range-op-mixed.h (operator_max): Remove final.
122 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
123 (pointer_table::pointer_table): Remove.
124 (class hybrid_max_operator): New.
125 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
126 * range-op.cc (pointer_tree_table): Remove.
127 (unified_table::unified_table): Comment out MAX_EXPR.
128 (get_op_handler): Remove check of pointer table.
129 * range-op.h (class pointer_table): Remove.
131 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
133 * range-op-mixed.h (operator_min): Remove final.
134 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
135 (class hybrid_min_operator): New.
136 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
137 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
139 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
141 * range-op-mixed.h (operator_bitwise_or): Remove final.
142 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
143 (class hybrid_or_operator): New.
144 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
145 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
147 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
149 * range-op-mixed.h (operator_bitwise_and): Remove final.
150 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
151 (class hybrid_and_operator): New.
152 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
153 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
155 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
157 * Makefile.in (OBJS): Add range-op-ptr.o.
158 * range-op-mixed.h (update_known_bitmask): Move prototype here.
159 (minus_op1_op2_relation_effect): Move prototype here.
160 (wi_includes_zero_p): Move function to here.
162 * range-op.cc (update_known_bitmask): Remove static.
163 (wi_includes_zero_p): Move to header.
164 (wi_zero_p): Move to header.
165 (minus_op1_op2_relation_effect): Remove static.
166 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
167 (pointer_plus_operator): Ditto.
168 (pointer_min_max_operator): Ditto.
169 (pointer_and_operator): Ditto.
170 (pointer_or_operator): Ditto.
171 (pointer_table): Ditto.
172 (range_op_table::initialize_pointer_ops): Ditto.
173 * range-op-ptr.cc: New.
175 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
177 * range-op-mixed.h (class operator_max): Move from...
178 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
179 (get_op_handler): Remove the integral table.
180 (class operator_max): Move from here.
181 (integral_table::integral_table): Delete.
182 * range-op.h (class integral_table): Delete.
184 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
186 * range-op-mixed.h (class operator_min): Move from...
187 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
188 (class operator_min): Move from here.
189 (integral_table::integral_table): Remove MIN_EXPR.
191 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
193 * range-op-mixed.h (class operator_bitwise_or): Move from...
194 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
195 (class operator_bitwise_or): Move from here.
196 (integral_table::integral_table): Remove BIT_IOR_EXPR.
198 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
200 * range-op-mixed.h (class operator_bitwise_and): Move from...
201 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
202 (get_op_handler): Check for a pointer table entry first.
203 (class operator_bitwise_and): Move from here.
204 (integral_table::integral_table): Remove BIT_AND_EXPR.
206 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
208 * range-op-mixed.h (class operator_bitwise_xor): Move from...
209 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
210 (class operator_bitwise_xor): Move from here.
211 (integral_table::integral_table): Remove BIT_XOR_EXPR.
212 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
214 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
216 * range-op-mixed.h (class operator_bitwise_not): Move from...
217 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
218 (class operator_bitwise_not): Move from here.
219 (integral_table::integral_table): Remove BIT_NOT_EXPR.
220 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
222 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
224 * range-op-mixed.h (class operator_addr_expr): Move from...
225 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
226 (class operator_addr_expr): Move from here.
227 (integral_table::integral_table): Remove ADDR_EXPR.
228 (pointer_table::pointer_table): Remove ADDR_EXPR.
230 2023-06-12 Pan Li <pan2.li@intel.com>
232 * config/riscv/riscv-vector-builtins-types.def
233 (vfloat16m1_t): Add type to lmul1 ops.
234 (vfloat16m2_t): Likewise.
235 (vfloat16m4_t): Likewise.
237 2023-06-12 Richard Biener <rguenther@suse.de>
239 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
240 .MASK_STORE and friend set the size of the access to
243 2023-06-12 Tamar Christina <tamar.christina@arm.com>
245 * config.in: Regenerate.
246 * configure: Regenerate.
247 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
249 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
251 * config/riscv/autovec-opt.md
252 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
253 (*<any_shiftrt:optab>trunc<mode>): Ditto.
254 * config/riscv/autovec.md (<optab><mode>3): Change to
255 define_insn_and_split.
256 (v<optab><mode>3): Ditto.
257 (trunc<mode><v_double_trunc>2): Ditto.
259 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
261 * simplify-rtx.cc (simplify_const_unary_operation):
262 Handle US_TRUNCATE, SS_TRUNCATE.
264 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
267 * doc/gm2.texi (Standard procedures): Fix Next link.
269 2023-06-12 Tamar Christina <tamar.christina@arm.com>
271 * config.in: Regenerate.
273 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
276 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
277 subtype to vect_widened_op_tree and remove subtype parameter, also
278 remove superfluous overloaded function definition.
279 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
280 to call to vect_recog_widen_op_pattern.
281 (vect_recog_widen_minus_pattern): Likewise.
283 2023-06-12 liuhongt <hongtao.liu@intel.com>
285 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
286 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
287 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
288 (vec_unpacks_lo_<mode>): Ditto.
289 (vec_unpacks_hi_<mode>): Ditto.
290 (sse_movlhps_<mode>): New define_insn.
291 (ssse3_palignr<mode>_perm): Extend to V_128H.
292 (V_128H): New mode iterator.
293 (ssepackPHmode): New mode attribute.
294 (vunpck_extract_mode): Ditto.
295 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
296 (vpckfloat_temp_mode): Ditto.
297 (vpckfloat_op_mode): Ditto.
298 (vunpckfixt_mode): Extend to VxHF.
299 (vunpckfixt_model): Ditto.
300 (vunpckfixt_extract_mode): Ditto.
302 2023-06-12 Richard Biener <rguenther@suse.de>
305 * genmatch.cc (expr::gen_transform): Put braces around
306 the if arm for the (convert ...) short-cut.
308 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
311 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
312 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
314 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
317 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
318 floating constant itself for real_to_target call.
320 2023-06-12 Pan Li <pan2.li@intel.com>
322 * config/riscv/riscv-vector-builtins-types.def
323 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
324 (vfloat16mf2_t): Ditto.
325 (vfloat16m1_t): Ditto.
326 (vfloat16m2_t): Ditto.
327 (vfloat16m4_t): Ditto.
329 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
331 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
332 Do not require a stack frame when debugging is enabled for AIX.
334 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
336 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
337 Remove attribute values.
338 (insv_notbit): New post-reload insn.
339 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
340 (*insv.not-bit.0_split, *insv.not-bit.7_split)
341 (*insv.xor-extract_split): Split to insv_notbit.
342 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
343 (*insv.xor-extract): Remove post-reload insns.
344 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
345 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
346 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
347 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
349 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
352 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
353 (MSB, SIZE): New mode attributes.
354 (any_shift): New code iterator.
355 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
356 (*lshr<mode>3_const_split): Add constraint alternative for
357 the case of shift-offset = MSB. Ditch "length" attribute.
358 (extzv<mode): New. replaces extzv. Adjust following patterns.
359 Use avr_out_extr, avr_out_extr_not to print asm.
360 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
361 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
362 * config/avr/constraints.md (C15, C23, C31, Yil): New
363 * config/avr/predicates.md (reg_or_low_io_operand)
364 (const7_operand, reg_or_low_io_operand)
365 (const15_operand, const_0_to_15_operand)
366 (const23_operand, const_0_to_23_operand)
367 (const31_operand, const_0_to_31_operand): New.
368 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
369 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
370 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
371 MSB case to new insn constraint "r" for operands[1].
372 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
374 (avr_rtx_costs_1): Adjust cost for a new pattern.
376 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
378 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
379 (vector_insn_info::parse_insn): Add rtx_insn parse.
380 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
381 (get_first_vsetvl): New function.
382 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
383 (pass_vsetvl::cleanup_insns): Remove it.
384 (pass_vsetvl::ssa_post_optimization): New function.
385 (has_no_uses): Ditto.
386 (pass_vsetvl::propagate_avl): Remove it.
387 (pass_vsetvl::df_post_optimization): New function.
388 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
389 * config/riscv/riscv-vsetvl.h: Adapt declaration.
391 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
393 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
394 (ipcp_vr_lattice::print): Call dump method.
395 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
397 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
398 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
400 (initialize_node_lattices): Pass type when appropriate.
401 (ipa_vr_operation_and_type_effects): Make type agnostic.
402 (ipa_value_range_from_jfunc): Same.
403 (propagate_vr_across_jump_function): Same.
404 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
405 (evaluate_properties_for_edge): Same.
406 * ipa-prop.cc (ipa_vr::get_vrange): Same.
407 (ipcp_update_vr): Same.
408 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
409 (ipa_range_set_and_normalize): Same.
411 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
415 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
416 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
417 (avr_pass_data_ifelse): New pass_data for it.
418 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
419 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
420 (avr_out_cmp_ext): New functions.
421 (compare_condtition): Make sure REG_CC dies in the branch insn.
422 (avr_rtx_costs_1): Add computation of cbranch costs.
423 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
424 [ADJUST_LEN_CMP_SEXT]Handle them.
425 (TARGET_CANONICALIZE_COMPARISON): New define.
426 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
427 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
428 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
429 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
430 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
431 (avr_out_cmp_zext): New Protos
432 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
433 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
434 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
435 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
436 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
437 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
438 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
439 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
440 (adjust_len) [add_set_ZN, cmp_zext]: New.
441 (QIPSI): New mode iterator.
442 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
443 (gelt): New code iterator.
444 (gelt_eqne): New code attribute.
445 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
446 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
447 (*cmpqi_sign_extend): Remove insns.
448 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
449 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
450 * config/avr/predicates.md (scratch_or_d_register_operand): New.
451 * config/avr/constraints.md (Yxx): New constraint.
453 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
455 * config/riscv/autovec.md (select_vl<mode>): New pattern.
456 * config/riscv/riscv-protos.h (expand_select_vl): New function.
457 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
459 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
461 * range-op-float.cc (foperator_mult_div_base): Delete.
462 (foperator_mult_div_base::find_range): Make static local function.
463 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
464 (operator_mult::op1_range): Rename from foperator_mult.
465 (operator_mult::op2_range): Ditto.
466 (operator_mult::rv_fold): Ditto.
467 (float_table::float_table): Remove MULT_EXPR.
468 (class foperator_div): Inherit from range_operator.
469 (float_table::float_table): Delete.
470 * range-op-mixed.h (class operator_mult): Combined from integer
472 * range-op.cc (float_tree_table): Delete.
473 (op_mult): New object.
474 (unified_table::unified_table): Add MULT_EXPR.
475 (get_op_handler): Do not check float table any longer.
476 (class cross_product_operator): Move to range-op-mixed.h.
477 (class operator_mult): Move to range-op-mixed.h.
478 (integral_table::integral_table): Remove MULT_EXPR.
479 (pointer_table::pointer_table): Remove MULT_EXPR.
480 * range-op.h (float_table): Remove.
482 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
484 * range-op-float.cc (foperator_negate): Remove. Move prototypes
486 (operator_negate::fold_range): Rename from foperator_negate.
487 (operator_negate::op1_range): Ditto.
488 (float_table::float_table): Remove NEGATE_EXPR.
489 * range-op-mixed.h (class operator_negate): Combined from integer
491 * range-op.cc (op_negate): New object.
492 (unified_table::unified_table): Add NEGATE_EXPR.
493 (class operator_negate): Move to range-op-mixed.h.
494 (integral_table::integral_table): Remove NEGATE_EXPR.
495 (pointer_table::pointer_table): Remove NEGATE_EXPR.
497 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
499 * range-op-float.cc (foperator_minus): Remove. Move prototypes
501 (operator_minus::fold_range): Rename from foperator_minus.
502 (operator_minus::op1_range): Ditto.
503 (operator_minus::op2_range): Ditto.
504 (operator_minus::rv_fold): Ditto.
505 (float_table::float_table): Remove MINUS_EXPR.
506 * range-op-mixed.h (class operator_minus): Combined from integer
508 * range-op.cc (op_minus): New object.
509 (unified_table::unified_table): Add MINUS_EXPR.
510 (class operator_minus): Move to range-op-mixed.h.
511 (integral_table::integral_table): Remove MINUS_EXPR.
512 (pointer_table::pointer_table): Remove MINUS_EXPR.
514 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
516 * range-op-float.cc (foperator_abs): Remove. Move prototypes
518 (operator_abs::fold_range): Rename from foperator_abs.
519 (operator_abs::op1_range): Ditto.
520 (float_table::float_table): Remove ABS_EXPR.
521 * range-op-mixed.h (class operator_abs): Combined from integer
523 * range-op.cc (op_abs): New object.
524 (unified_table::unified_table): Add ABS_EXPR.
525 (class operator_abs): Move to range-op-mixed.h.
526 (integral_table::integral_table): Remove ABS_EXPR.
527 (pointer_table::pointer_table): Remove ABS_EXPR.
529 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
531 * range-op-float.cc (foperator_plus): Remove. Move prototypes
533 (operator_plus::fold_range): Rename from foperator_plus.
534 (operator_plus::op1_range): Ditto.
535 (operator_plus::op2_range): Ditto.
536 (operator_plus::rv_fold): Ditto.
537 (float_table::float_table): Remove PLUS_EXPR.
538 * range-op-mixed.h (class operator_plus): Combined from integer
540 * range-op.cc (op_plus): New object.
541 (unified_table::unified_table): Add PLUS_EXPR.
542 (class operator_plus): Move to range-op-mixed.h.
543 (integral_table::integral_table): Remove PLUS_EXPR.
544 (pointer_table::pointer_table): Remove PLUS_EXPR.
546 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
548 * range-op-mixed.h (class operator_cast): Combined from integer
550 * range-op.cc (op_cast): New object.
551 (unified_table::unified_table): Add op_cast
552 (class operator_cast): Move to range-op-mixed.h.
553 (integral_table::integral_table): Remove op_cast
554 (pointer_table::pointer_table): Remove op_cast.
556 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
558 * range-op-float.cc (operator_cst::fold_range): New.
559 * range-op-mixed.h (class operator_cst): Move from integer file.
560 * range-op.cc (op_cst): New object.
561 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
562 (class operator_cst): Move to range-op-mixed.h.
563 (integral_table::integral_table): Remove op_cst.
564 (pointer_table::pointer_table): Remove op_cst.
566 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
568 * range-op-float.cc (foperator_identity): Remove. Move prototypes
570 (operator_identity::fold_range): Rename from foperator_identity.
571 (operator_identity::op1_range): Ditto.
572 (float_table::float_table): Remove fop_identity.
573 * range-op-mixed.h (class operator_identity): Combined from integer
575 * range-op.cc (op_identity): New object.
576 (unified_table::unified_table): Add op_identity.
577 (class operator_identity): Move to range-op-mixed.h.
578 (integral_table::integral_table): Remove identity.
579 (pointer_table::pointer_table): Remove identity.
581 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
583 * range-op-float.cc (foperator_ge): Remove. Move prototypes
585 (operator_ge::fold_range): Rename from foperator_ge.
586 (operator_ge::op1_range): Ditto.
587 (float_table::float_table): Remove GE_EXPR.
588 * range-op-mixed.h (class operator_ge): Combined from integer
590 * range-op.cc (op_ge): New object.
591 (unified_table::unified_table): Add GE_EXPR.
592 (class operator_ge): Move to range-op-mixed.h.
593 (ge_op1_op2_relation): Fold into
594 operator_ge::op1_op2_relation.
595 (integral_table::integral_table): Remove GE_EXPR.
596 (pointer_table::pointer_table): Remove GE_EXPR.
597 * range-op.h (ge_op1_op2_relation): Delete.
599 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
601 * range-op-float.cc (foperator_gt): Remove. Move prototypes
603 (operator_gt::fold_range): Rename from foperator_gt.
604 (operator_gt::op1_range): Ditto.
605 (float_table::float_table): Remove GT_EXPR.
606 * range-op-mixed.h (class operator_gt): Combined from integer
608 * range-op.cc (op_gt): New object.
609 (unified_table::unified_table): Add GT_EXPR.
610 (class operator_gt): Move to range-op-mixed.h.
611 (gt_op1_op2_relation): Fold into
612 operator_gt::op1_op2_relation.
613 (integral_table::integral_table): Remove GT_EXPR.
614 (pointer_table::pointer_table): Remove GT_EXPR.
615 * range-op.h (gt_op1_op2_relation): Delete.
617 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
619 * range-op-float.cc (foperator_le): Remove. Move prototypes
621 (operator_le::fold_range): Rename from foperator_le.
622 (operator_le::op1_range): Ditto.
623 (float_table::float_table): Remove LE_EXPR.
624 * range-op-mixed.h (class operator_le): Combined from integer
626 * range-op.cc (op_le): New object.
627 (unified_table::unified_table): Add LE_EXPR.
628 (class operator_le): Move to range-op-mixed.h.
629 (le_op1_op2_relation): Fold into
630 operator_le::op1_op2_relation.
631 (integral_table::integral_table): Remove LE_EXPR.
632 (pointer_table::pointer_table): Remove LE_EXPR.
633 * range-op.h (le_op1_op2_relation): Delete.
635 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
637 * range-op-float.cc (foperator_lt): Remove. Move prototypes
639 (operator_lt::fold_range): Rename from foperator_lt.
640 (operator_lt::op1_range): Ditto.
641 (float_table::float_table): Remove LT_EXPR.
642 * range-op-mixed.h (class operator_lt): Combined from integer
644 * range-op.cc (op_lt): New object.
645 (unified_table::unified_table): Add LT_EXPR.
646 (class operator_lt): Move to range-op-mixed.h.
647 (lt_op1_op2_relation): Fold into
648 operator_lt::op1_op2_relation.
649 (integral_table::integral_table): Remove LT_EXPR.
650 (pointer_table::pointer_table): Remove LT_EXPR.
651 * range-op.h (lt_op1_op2_relation): Delete.
653 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
655 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
657 (operator_equal::fold_range): Rename from foperator_not_equal.
658 (operator_equal::op1_range): Ditto.
659 (float_table::float_table): Remove NE_EXPR.
660 * range-op-mixed.h (class operator_not_equal): Combined from integer
662 * range-op.cc (op_equal): New object.
663 (unified_table::unified_table): Add NE_EXPR.
664 (class operator_not_equal): Move to range-op-mixed.h.
665 (not_equal_op1_op2_relation): Fold into
666 operator_not_equal::op1_op2_relation.
667 (integral_table::integral_table): Remove NE_EXPR.
668 (pointer_table::pointer_table): Remove NE_EXPR.
669 * range-op.h (not_equal_op1_op2_relation): Delete.
671 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
673 * range-op-float.cc (foperator_equal): Remove. Move prototypes
675 (operator_equal::fold_range): Rename from foperator_equal.
676 (operator_equal::op1_range): Ditto.
677 (float_table::float_table): Remove EQ_EXPR.
678 * range-op-mixed.h (class operator_equal): Combined from integer
680 * range-op.cc (op_equal): New object.
681 (unified_table::unified_table): Add EQ_EXPR.
682 (class operator_equal): Move to range-op-mixed.h.
683 (equal_op1_op2_relation): Fold into
684 operator_equal::op1_op2_relation.
685 (integral_table::integral_table): Remove EQ_EXPR.
686 (pointer_table::pointer_table): Remove EQ_EXPR.
687 * range-op.h (equal_op1_op2_relation): Delete.
689 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
691 * range-op-float.cc (class float_table): Move to header.
692 (float_table::float_table): Move float only operators to...
693 (range_op_table::initialize_float_ops): Here.
694 * range-op-mixed.h: New.
695 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
697 (float_tree_table): Moved from range-op-float.cc.
698 (unified_tree_table): New.
699 (unified_table::unified_table): New. Call initialize routines.
700 (get_op_handler): Check unified table first.
701 (range_op_handler::range_op_handler): Handle no type constructor.
702 (integral_table::integral_table): Move integral only operators to...
703 (range_op_table::initialize_integral_ops): Here.
704 (pointer_table::pointer_table): Move pointer only operators to...
705 (range_op_table::initialize_pointer_ops): Here.
706 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
707 (get_bool_state): Ditto.
708 (empty_range_varying): Ditto.
709 (relop_early_resolve): Ditto.
710 (class range_op_table): Add new init methods for range types.
711 (class integral_table): Move declaration to here.
712 (class pointer_table): Move declaration to here.
713 (class float_table): Move declaration to here.
715 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
716 Richard Sandiford <richard.sandiford@arm.com>
717 Richard Biener <rguenther@suse.de>
719 * doc/md.texi: Add SELECT_VL support.
720 * internal-fn.def (SELECT_VL): Ditto.
721 * optabs.def (OPTAB_D): Ditto.
722 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
723 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
724 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
725 (vectorizable_store): Ditto.
726 (vectorizable_load): Ditto.
727 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
729 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
732 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
735 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
737 * range-op.cc (range_cast): Move to...
738 * range-op.h (range_cast): Here and add generic a version.
740 2023-06-09 Marek Polacek <polacek@redhat.com>
744 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
745 warn about designated initializers in C only.
747 2023-06-09 Andrew Pinski <apinski@marvell.com>
749 PR tree-optimization/97711
750 PR tree-optimization/110155
751 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
752 ((zero_one != 0) ? z <op> y : y): Likewise.
754 2023-06-09 Andrew Pinski <apinski@marvell.com>
756 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
757 multiply rather than negation/bit_and.
759 2023-06-09 Andrew Pinski <apinski@marvell.com>
761 * match.pd (`X & -Y -> X * Y`): Allow for truncation
762 and the same type for unsigned types.
764 2023-06-09 Andrew Pinski <apinski@marvell.com>
766 PR tree-optimization/110165
767 PR tree-optimization/110166
768 * match.pd (zero_one_valued_p): Don't accept
769 signed 1-bit integers.
771 2023-06-09 Richard Biener <rguenther@suse.de>
773 * match.pd (two conversions in a row): Use element_precision
774 to DTRT for VECTOR_TYPE.
776 2023-06-09 Pan Li <pan2.li@intel.com>
778 * config/riscv/riscv.md (enabled): Move to another place, and
779 add fp_vector_disabled to the cond.
780 (fp_vector_disabled): New attr defined for disabling fp.
781 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
783 2023-06-09 Pan Li <pan2.li@intel.com>
785 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
788 2023-06-09 liuhongt <hongtao.liu@intel.com>
791 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
792 view_convert_expr mask to signed type when folding pblendvb
795 2023-06-09 liuhongt <hongtao.liu@intel.com>
798 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
799 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
800 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
802 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
803 real codename for __builtin_ia32_pabs{b,w,d}.
805 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
808 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
809 (gimple_range_op_handler::maybe_builtin_call): Adjust.
810 * gimple-range-op.h (operand1, operand2): Use m_operator.
811 * range-op.cc (integral_table, pointer_table): Relocate.
812 (get_op_handler): Rename from get_handler and handle all types.
813 (range_op_handler::range_op_handler): Relocate.
814 (range_op_handler::set_op_handler): Relocate and adjust.
815 (range_op_handler::range_op_handler): Relocate.
816 (dispatch_trio): New.
817 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
818 (range_op_handler::dispatch_kind): New.
819 (range_op_handler::fold_range): Relocate and Use new dispatch value.
820 (range_op_handler::op1_range): Ditto.
821 (range_op_handler::op2_range): Ditto.
822 (range_op_handler::lhs_op1_relation): Ditto.
823 (range_op_handler::lhs_op2_relation): Ditto.
824 (range_op_handler::op1_op2_relation): Ditto.
825 (range_op_handler::set_op_handler): Use m_operator member.
826 * range-op.h (range_op_handler::operator bool): Use m_operator.
827 (range_op_handler::dispatch_kind): New.
828 (range_op_handler::m_valid): Delete.
829 (range_op_handler::m_int): Delete
830 (range_op_handler::m_float): Delete
831 (range_op_handler::m_operator): New.
832 (range_op_table::operator[]): Relocate from .cc file.
833 (range_op_table::set): Ditto.
834 * value-range.h (class vrange): Make range_op_handler a friend.
836 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
838 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
839 (cfn_pass_through_arg1): Adjust using statemenmt.
840 (cfn_signbit): Change base class, adjust using statement.
841 (cfn_copysign): Ditto.
844 * range-op-float.cc (fold_range): Change class to range_operator.
848 (lhs_op1_relation): Ditto.
849 (lhs_op2_relation): Ditto.
850 (op1_op2_relation): Ditto.
851 (foperator_*): Ditto.
852 (class float_table): New. Inherit from range_op_table.
853 (floating_tree_table) Change to range_op_table pointer.
854 (class floating_op_table): Delete.
855 * range-op.cc (operator_equal): Adjust using statement.
856 (operator_not_equal): Ditto.
857 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
858 (operator_minus, operator_cast): Ditto.
859 (operator_bitwise_and, pointer_plus_operator): Ditto.
860 (get_float_handle): Change return type.
861 * range-op.h (range_operator_float): Delete. Relocate all methods
862 into class range_operator.
863 (range_op_handler::m_float): Change type to range_operator.
864 (floating_op_table): Delete.
865 (floating_tree_table): Change type.
867 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
869 * range-op.cc (range_operator::fold_range): Call virtual routine.
870 (range_operator::update_bitmask): New.
871 (operator_equal::update_bitmask): New.
872 (operator_not_equal::update_bitmask): New.
873 (operator_lt::update_bitmask): New.
874 (operator_le::update_bitmask): New.
875 (operator_gt::update_bitmask): New.
876 (operator_ge::update_bitmask): New.
877 (operator_ge::update_bitmask): New.
878 (operator_plus::update_bitmask): New.
879 (operator_minus::update_bitmask): New.
880 (operator_pointer_diff::update_bitmask): New.
881 (operator_min::update_bitmask): New.
882 (operator_max::update_bitmask): New.
883 (operator_mult::update_bitmask): New.
884 (operator_div:operator_div):New.
885 (operator_div::update_bitmask): New.
886 (operator_div::m_code): New member.
887 (operator_exact_divide::operator_exact_divide): New constructor.
888 (operator_lshift::update_bitmask): New.
889 (operator_rshift::update_bitmask): New.
890 (operator_bitwise_and::update_bitmask): New.
891 (operator_bitwise_or::update_bitmask): New.
892 (operator_bitwise_xor::update_bitmask): New.
893 (operator_trunc_mod::update_bitmask): New.
894 (op_ident, op_unknown, op_ptr_min_max): New.
895 (op_nop, op_convert): Delete.
896 (op_ssa, op_paren, op_obj_type): Delete.
897 (op_realpart, op_imagpart): Delete.
898 (op_ptr_min, op_ptr_max): Delete.
899 (pointer_plus_operator:update_bitmask): New.
900 (range_op_table::set): Do not use m_code.
901 (integral_table::integral_table): Adjust to single instances.
902 * range-op.h (range_operator::range_operator): Delete.
903 (range_operator::m_code): Delete.
904 (range_operator::update_bitmask): New.
906 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
908 * range-op-float.cc (range_operator_float::fold_range): Return
909 NAN of the result type.
911 2023-06-08 Jakub Jelinek <jakub@redhat.com>
913 * optabs.cc (expand_ffs): Add forward declaration.
914 (expand_doubleword_clz): Rename to ...
915 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
916 handle also doubleword CTZ and FFS in addition to CLZ.
917 (expand_unop): Adjust caller. Also call it for doubleword
918 ctz_optab and ffs_optab.
920 2023-06-08 Jakub Jelinek <jakub@redhat.com>
923 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
924 n_words == 2 recurse with mmx_ok as first argument rather than false.
926 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
928 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
929 avoid sign extension/undefined behaviour when setting each bit.
931 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
932 Uros Bizjak <ubizjak@gmail.com>
934 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
935 Use new x86_stc instruction when the carry flag must be set.
936 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
937 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
938 * config/i386/i386.h (TARGET_SLOW_STC): New define.
939 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
940 (x86_stc): New define_insn.
941 (define_peephole2): Convert x86_stc into alternate implementation
942 on pentium4 without -Os when a QImode register is available.
943 (*x86_cmc): New define_insn.
944 (define_peephole2): Convert *x86_cmc into alternate implementation
945 on pentium4 without -Os when a QImode register is available.
946 (*setccc): New define_insn_and_split for a no-op CCCmode move.
947 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
948 recognize (and eliminate) the carry flag being copied to itself.
949 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
950 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
952 2023-06-07 Andrew Pinski <apinski@marvell.com>
954 * match.pd: Fix comment for the
955 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
957 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
958 Jeff Law <jlaw@ventanamicro.com>
960 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
961 (rotrsi3_sext): Expose generator.
962 (rotlsi3 pattern): Hide generator.
963 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
965 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
966 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
967 (mulsi3, <optab>si3): Likewise.
968 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
969 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
970 (<u>mulsidi3): Likewise.
971 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
972 (mulsi3_extended, <optab>si3_extended): Likewise.
973 (splitter for shadd feeding divison): Update RTL pattern to account
974 for changes in how 32 bit ops are expanded for TARGET_64BIT.
975 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
977 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
980 * config/riscv/riscv.cc (riscv_print_operand): Calculate
981 memmodel only when it is valid.
983 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
985 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
986 for constant element of a vector.
988 2023-06-07 Jakub Jelinek <jakub@redhat.com>
990 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
991 instead compare tree_nonzero_bits <= 1U rather than just == 1.
993 2023-06-07 Alex Coplan <alex.coplan@arm.com>
996 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
998 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
1000 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
1001 setup if in_lto_p, just like we do for SVE.
1002 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
1003 (__arm_st64b): Delete.
1004 (__arm_st64bv): Delete.
1005 (__arm_st64bv0): Delete.
1007 2023-06-07 Alex Coplan <alex.coplan@arm.com>
1010 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
1011 Use input operand for the destination address.
1012 * config/aarch64/aarch64.md (st64b): Fix constraint on address
1015 2023-06-07 Alex Coplan <alex.coplan@arm.com>
1018 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
1019 Replace eight consecutive spaces with tabs.
1020 (aarch64_init_ls64_builtins): Likewise.
1021 (aarch64_expand_builtin_ls64): Likewise.
1022 * config/aarch64/aarch64.md (ld64b): Likewise.
1025 (st64bv0): Likewise.
1027 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
1029 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
1030 offset table pseudo to a general reg subset.
1032 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1034 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
1036 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
1038 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
1039 (aarch64_sqxtun2<mode>_le): Likewise.
1040 (aarch64_sqxtun2<mode>_be): Likewise.
1041 (aarch64_sqxtun2<mode>): Adjust for the above.
1042 (aarch64_sqmovun<mode>): New define_expand.
1043 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
1044 (half_mask): New mode attribute.
1045 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
1048 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1050 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
1052 (aarch64_addp<mode>_insn): ... This...
1053 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
1054 (aarch64_addp<mode>): New define_expand.
1056 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1058 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
1059 * config/riscv/riscv-v.cc
1060 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
1062 (rvv_builder::single_step_npatterns_p): New function.
1063 (rvv_builder::npatterns_all_equal_p): Ditto.
1064 (const_vec_all_in_range_p): Support POLY handling.
1065 (gen_const_vector_dup): Ditto.
1066 (emit_vlmax_gather_insn): Add vrgatherei16.
1067 (emit_vlmax_masked_gather_mu_insn): Ditto.
1068 (expand_const_vector): Add VLA SLP const vector support.
1069 (expand_vec_perm): Support POLY.
1070 (struct expand_vec_perm_d): New struct.
1071 (shuffle_generic_patterns): New function.
1072 (expand_vec_perm_const_1): Ditto.
1073 (expand_vec_perm_const): Ditto.
1074 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
1075 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
1077 2023-06-07 Andrew Pinski <apinski@marvell.com>
1079 PR middle-end/110117
1080 * expr.cc (expand_single_bit_test): Handle
1081 const_int from expand_expr.
1083 2023-06-07 Andrew Pinski <apinski@marvell.com>
1085 * expr.cc (do_store_flag): Rearrange the
1086 TER code so that it overrides the nonzero bits
1087 info if we had `a & POW2`.
1089 2023-06-07 Andrew Pinski <apinski@marvell.com>
1091 PR tree-optimization/110134
1092 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
1094 (-A CMP CST -> B CMP (-CST)): Likewise.
1096 2023-06-07 Andrew Pinski <apinski@marvell.com>
1098 PR tree-optimization/89263
1099 PR tree-optimization/99069
1100 PR tree-optimization/20083
1101 PR tree-optimization/94898
1102 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
1103 one of the operands are constant.
1105 2023-06-07 Andrew Pinski <apinski@marvell.com>
1107 * match.pd (zero_one_valued_p): Match 0 integer constant
1110 2023-06-07 Pan Li <pan2.li@intel.com>
1112 * config/riscv/riscv-vector-builtins-types.def
1113 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
1114 (vfloat32m1_t): Ditto.
1115 (vfloat32m2_t): Ditto.
1116 (vfloat32m4_t): Ditto.
1117 (vfloat32m8_t): Ditto.
1118 (vint16mf4_t): Ditto.
1119 (vint16mf2_t): Ditto.
1120 (vint16m1_t): Ditto.
1121 (vint16m2_t): Ditto.
1122 (vint16m4_t): Ditto.
1123 (vint16m8_t): Ditto.
1124 (vuint16mf4_t): Ditto.
1125 (vuint16mf2_t): Ditto.
1126 (vuint16m1_t): Ditto.
1127 (vuint16m2_t): Ditto.
1128 (vuint16m4_t): Ditto.
1129 (vuint16m8_t): Ditto.
1130 (vint32mf2_t): Ditto.
1131 (vint32m1_t): Ditto.
1132 (vint32m2_t): Ditto.
1133 (vint32m4_t): Ditto.
1134 (vint32m8_t): Ditto.
1135 (vuint32mf2_t): Ditto.
1136 (vuint32m1_t): Ditto.
1137 (vuint32m2_t): Ditto.
1138 (vuint32m4_t): Ditto.
1139 (vuint32m8_t): Ditto.
1141 2023-06-07 Jason Merrill <jason@redhat.com>
1144 * doc/invoke.texi: Document it.
1146 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
1148 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
1149 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
1150 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
1151 NOT (BITREVERSE x) as BITREVERSE (NOT x).
1152 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
1153 Optimize PARITY (BITREVERSE x) as PARITY x.
1154 Optimize BITREVERSE (BITREVERSE x) as x.
1155 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
1156 BITREVERSE of a constant integer at compile-time.
1157 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
1158 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
1159 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
1160 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
1161 Optimize COPYSIGN (x, ABS y) as ABS x.
1162 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
1163 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
1164 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
1165 arguments at compile-time.
1167 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
1169 * rtl.h (function_invariant_p): Change return type from int to bool.
1170 * reload1.cc (function_invariant_p): Change return type from
1171 int to bool and adjust function body accordingly.
1173 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1175 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
1176 (*single_<optab>mult_plus<mode>): Ditto.
1177 (*double_<optab>mult_plus<mode>): Ditto.
1178 (*sign_zero_extend_fma): Ditto.
1179 (*zero_sign_extend_fma): Ditto.
1180 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1182 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
1183 Tobias Burnus <tobias@codesourcery.com>
1185 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
1186 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
1188 (omp_get_attachment): Handle map clauses with 'present' modifier.
1189 (omp_group_base): Likewise.
1190 (gimplify_scan_omp_clauses): Reorder present maps to come first.
1191 Set GOVD flags for present defaultmaps.
1192 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
1193 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
1195 (lower_omp_target): Handle map clauses with 'present' modifier.
1196 Handle 'to' and 'from' clauses with 'present'.
1197 * tree-core.h (enum omp_clause_defaultmap_kind): Add
1198 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
1199 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
1200 'from' clauses with 'present' modifier. Handle present defaultmap.
1201 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
1203 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
1205 * config/rs6000/genfusion.pl: Delete some dead code.
1207 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
1209 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
1211 (gen_ld_cmpi_p10): ... this.
1213 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
1216 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
1217 duplicate expression.
1219 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1221 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
1222 Handle unsigned reduc_plus_scal_ builtins.
1223 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
1224 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
1225 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
1226 __builtin_aarch64_reduc_plus_scal_v2di.
1227 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
1229 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1231 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
1232 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
1233 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
1235 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1237 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
1238 (aarch64_shrn<mode>_insn_be): Delete.
1239 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
1240 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
1241 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
1242 (aarch64_rshrn<mode>_insn_le): Delete.
1243 (aarch64_rshrn<mode>_insn_be): Delete.
1244 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
1245 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
1247 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1249 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
1251 (aarch64_pars_overlap_p): Likewise.
1252 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
1253 Express in terms of UNSPEC_ADDV.
1254 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
1255 (*aarch64_<su>addlv<mode>_reduction): Define.
1256 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
1257 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
1258 (aarch64_pars_overlap_p): Likewise.
1259 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
1260 (VQUADW): New mode attribute.
1261 (VWIDE2X_S): Likewise.
1263 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
1264 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
1266 2023-06-06 Richard Biener <rguenther@suse.de>
1268 PR middle-end/110055
1269 * gimplify.cc (gimplify_target_expr): Do not emit
1270 CLOBBERs for variables which have static storage duration
1271 after gimplifying their initializers.
1273 2023-06-06 Richard Biener <rguenther@suse.de>
1275 PR tree-optimization/109143
1276 * tree-ssa-structalias.cc (solution_set_expand): Avoid
1277 one bitmap iteration and optimize bit range setting.
1279 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
1282 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
1283 XVECEXP, not XEXP, to access first item of a PARALLEL.
1285 2023-06-06 Pan Li <pan2.li@intel.com>
1287 * config/riscv/riscv-vector-builtins-types.def
1288 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
1289 (vfloat16mf2_t): Likewise.
1290 (vfloat16m1_t): Likewise.
1291 (vfloat16m2_t): Likewise.
1292 (vfloat16m4_t): Likewise.
1293 (vfloat16m8_t): Likewise.
1294 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
1295 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
1297 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
1299 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
1300 for cfi reg/mem machmode
1301 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
1303 2023-06-06 Li Xu <xuli1@eswincomputing.com>
1305 * config/riscv/vector-iterators.md:
1306 Fix 'REQUIREMENT' for machine_mode 'MODE'.
1307 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
1308 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
1309 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
1311 2023-06-06 Pan Li <pan2.li@intel.com>
1313 * config/riscv/vector-iterators.md: Fix typo in mode attr.
1315 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
1316 Joel Hutton <joel.hutton@arm.com>
1318 * doc/generic.texi: Remove old tree codes.
1319 * expr.cc (expand_expr_real_2): Remove old tree code cases.
1320 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
1321 * optabs-tree.cc (optab_for_tree_code): Likewise.
1322 (supportable_half_widening_operation): Likewise.
1323 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
1324 * tree-inline.cc (estimate_operator_cost): Likewise.
1325 (op_symbol_code): Likewise.
1326 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
1327 (vect_analyze_data_ref_accesses): Likewise.
1328 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
1329 * cfgexpand.cc (expand_debug_expr): Likewise.
1330 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
1331 (supportable_widening_operation): Likewise.
1332 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
1334 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
1335 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
1336 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
1337 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
1338 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
1339 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
1340 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
1341 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
1343 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
1344 Joel Hutton <joel.hutton@arm.com>
1345 Tamar Christina <tamar.christina@arm.com>
1347 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
1349 (vec_widen_<su>add_lo_<mode>): ... to this.
1350 (vec_widen_<su>addl_hi_<mode>): Rename this ...
1351 (vec_widen_<su>add_hi_<mode>): ... to this.
1352 (vec_widen_<su>subl_lo_<mode>): Rename this ...
1353 (vec_widen_<su>sub_lo_<mode>): ... to this.
1354 (vec_widen_<su>subl_hi_<mode>): Rename this ...
1355 (vec_widen_<su>sub_hi_<mode>): ...to this.
1356 * doc/generic.texi: Document new IFN codes.
1357 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
1358 (commutative_binary_fn_p): Add widen_plus fn's.
1359 (widening_fn_p): New function.
1360 (narrowing_fn_p): New function.
1361 (direct_internal_fn_optab): Change visibility.
1362 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
1363 internal_fn that expands into multiple internal_fns for widening.
1364 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
1365 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
1366 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
1367 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
1368 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
1369 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
1370 (lookup_hilo_internal_fn): Likewise.
1371 (widening_fn_p): Likewise.
1372 (Narrowing_fn_p): Likewise.
1373 * optabs.cc (commutative_optab_p): Add widening plus optabs.
1374 * optabs.def (OPTAB_D): Define widen add, sub optabs.
1375 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
1376 patterns with a hi/lo or even/odd split.
1377 (vect_recog_sad_pattern): Refactor to use new IFN codes.
1378 (vect_recog_widen_plus_pattern): Likewise.
1379 (vect_recog_widen_minus_pattern): Likewise.
1380 (vect_recog_average_pattern): Likewise.
1381 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
1383 (supportable_widening_operation): Likewise.
1384 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
1386 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
1387 Joel Hutton <joel.hutton@arm.com>
1389 * tree-vect-patterns.cc: Add include for gimple-iterator.
1390 (vect_recog_widen_op_pattern): Refactor to use code_helper.
1391 (vect_gimple_build): New function.
1392 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
1394 (vectorizable_call): Likewise.
1395 (vect_gen_widened_results_half): Likewise.
1396 (vect_create_vectorized_demotion_stmts): Likewise.
1397 (vect_create_vectorized_promotion_stmts): Likewise.
1398 (vect_create_half_widening_stmts): Likewise.
1399 (vectorizable_conversion): Likewise.
1400 (supportable_widening_operation): Likewise.
1401 (supportable_narrowing_operation): Likewise.
1402 * tree-vectorizer.h (supportable_widening_operation): Change
1403 prototype to use code_helper.
1404 (supportable_narrowing_operation): Likewise.
1405 (vect_gimple_build): New function prototype.
1406 * tree.h (code_helper::safe_as_tree_code): New function.
1407 (code_helper::safe_as_fn_code): New function.
1409 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
1411 * wide-int.cc (wi::bitreverse_large): New function implementing
1412 bit reversal of an integer.
1413 * wide-int.h (wi::bitreverse): New (template) function prototype.
1414 (bitreverse_large): Prototype helper function/implementation.
1415 (wi::bitreverse): New template wrapper around bitreverse_large.
1417 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
1419 * rtl.h (print_rtl_single): Change return type from int to void.
1420 (print_rtl_single_with_indent): Ditto.
1421 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
1422 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
1423 (rtx_writer::print_rtx_operand_code_0): Ditto.
1424 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
1425 (rtx_writer::print_rtx_operand_code_i): Ditto.
1426 (rtx_writer::print_rtx_operand_code_u): Ditto.
1427 (rtx_writer::print_rtx_operand): Ditto.
1428 (rtx_writer::print_rtx): Ditto.
1429 (rtx_writer::finish_directive): Ditto.
1430 (print_rtl_single): Change return type from int to void
1431 and adjust function body accordingly.
1432 (rtx_writer::print_rtl_single_with_indent): Ditto.
1434 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
1436 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
1437 (reg_class_subset_p): Ditto.
1438 * reginfo.cc (reg_classes_intersect_p): Ditto.
1439 (reg_class_subset_p): Ditto.
1441 2023-06-05 Pan Li <pan2.li@intel.com>
1443 * config/riscv/riscv-vector-builtins-types.def
1444 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
1445 (vfloat32m1_t): Ditto.
1446 (vfloat32m2_t): Ditto.
1447 (vfloat32m4_t): Ditto.
1448 (vfloat32m8_t): Ditto.
1449 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
1450 (vint16mf2_t): Ditto.
1451 (vint16m1_t): Ditto.
1452 (vint16m2_t): Ditto.
1453 (vint16m4_t): Ditto.
1454 (vint16m8_t): Ditto.
1455 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
1456 (vuint16mf2_t): Ditto.
1457 (vuint16m1_t): Ditto.
1458 (vuint16m2_t): Ditto.
1459 (vuint16m4_t): Ditto.
1460 (vuint16m8_t): Ditto.
1461 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
1462 (vint32m1_t): Ditto.
1463 (vint32m2_t): Ditto.
1464 (vint32m4_t): Ditto.
1465 (vint32m8_t): Ditto.
1466 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
1467 (vuint32m1_t): Ditto.
1468 (vuint32m2_t): Ditto.
1469 (vuint32m4_t): Ditto.
1470 (vuint32m8_t): Ditto.
1471 * config/riscv/vector-iterators.md: Add FP=16 support for V,
1472 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
1474 2023-06-05 Andrew Pinski <apinski@marvell.com>
1477 * Makefile.in (clean): Remove the removing of
1478 MULTILIB_DIR/MULTILIB_OPTIONS directories.
1480 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
1482 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
1484 * config/mips/mips.cc (speculation_barrier_libfunc): New static
1486 (mips_init_libfuncs): Initialize it.
1487 (mips_emit_speculation_barrier): New function.
1488 * config/mips/mips.md (speculation_barrier): Call
1489 mips_emit_speculation_barrier.
1491 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1493 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
1494 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
1495 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
1496 (rvv_builder::get_merged_repeating_sequence): Ditto.
1497 (rvv_builder::get_merge_scalar_mask): Ditto.
1498 (emit_scalar_move_insn): Ditto.
1499 (emit_vlmax_integer_move_insn): Ditto.
1500 (emit_nonvlmax_integer_move_insn): Ditto.
1501 (emit_vlmax_gather_insn): Ditto.
1502 (emit_vlmax_masked_gather_mu_insn): Ditto.
1503 (get_repeating_sequence_dup_machine_mode): Ditto.
1505 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1507 * config/riscv/autovec.md: Split arguments.
1508 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
1509 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
1511 2023-06-04 Andrew Pinski <apinski@marvell.com>
1513 * expr.cc (do_store_flag): Improve for single bit testing
1514 not against zero but against that single bit.
1516 2023-06-04 Andrew Pinski <apinski@marvell.com>
1518 * expr.cc (do_store_flag): Extend the one bit checking case
1519 to handle the case where we don't have an and but rather still
1520 one bit is known to be non-zero.
1522 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
1524 * config/h8300/constraints.md (Zz): Make this a normal
1526 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
1527 * config/h8300/logical.md (H8/SX bit patterns): Remove.
1529 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1531 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
1532 New insn_and_split patterns.
1534 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1537 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
1538 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
1539 (@vlmul_extx4<mode>): Ditto.
1540 (@vlmul_extx8<mode>): Ditto.
1541 (@vlmul_extx16<mode>): Ditto.
1542 (@vlmul_extx32<mode>): Ditto.
1543 (@vlmul_extx64<mode>): Ditto.
1544 (*vlmul_extx2<mode>): Ditto.
1545 (*vlmul_extx4<mode>): Ditto.
1546 (*vlmul_extx8<mode>): Ditto.
1547 (*vlmul_extx16<mode>): Ditto.
1548 (*vlmul_extx32<mode>): Ditto.
1549 (*vlmul_extx64<mode>): Ditto.
1551 2023-06-04 Pan Li <pan2.li@intel.com>
1553 * config/riscv/riscv-vector-builtins-types.def
1554 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
1555 (vfloat32m1_t): Likewise.
1556 (vfloat32m2_t): Likewise.
1557 (vfloat32m4_t): Likewise.
1558 (vfloat32m8_t): Likewise.
1559 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
1560 * config/riscv/vector-iterators.md: Add single to half machine
1563 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1565 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
1566 (*n<optab><mode>): Ditto.
1567 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
1568 (*n<optab><mode>): Ditto.
1569 * config/riscv/vector.md: Ditto.
1571 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
1574 * config/i386/i386-features.cc (scalar_chain::convert_compare):
1575 Update or delete REG_EQUAL notes, converting CONST_INT and
1576 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
1578 2023-06-04 Jason Merrill <jason@redhat.com>
1581 * tree-eh.cc (lower_resx): Pass the exception pointer to the
1583 * except.h: Tweak comment.
1585 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
1587 * postreload.cc (move2add_use_add2_insn): Handle
1588 trivial single_sets. Rename variable PAT to SET.
1589 (move2add_use_add3_insn, reload_cse_move2add): Similar.
1591 2023-06-04 Pan Li <pan2.li@intel.com>
1593 * config/riscv/riscv-vector-builtins-types.def
1594 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
1595 (vfloat16mf2_t): Likewise.
1596 (vfloat16m1_t): Likewise.
1597 (vfloat16m2_t): Likewise.
1598 (vfloat16m4_t): Likewise.
1599 (vfloat16m8_t): Likewise.
1600 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
1601 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
1602 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
1603 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
1606 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
1608 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
1611 2023-06-03 Die Li <lidie@eswincomputing.com>
1613 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
1615 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1617 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
1619 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1621 * config/riscv/vector.md: Add vector-opt.md.
1622 * config/riscv/autovec-opt.md: New file.
1624 2023-06-03 liuhongt <hongtao.liu@intel.com>
1626 PR tree-optimization/110067
1627 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
1628 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
1630 2023-06-03 liuhongt <hongtao.liu@intel.com>
1633 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
1634 (truncv2si<mode>2): Ditto.
1636 2023-06-02 Andrew Pinski <apinski@marvell.com>
1638 PR rtl-optimization/102733
1639 * dse.cc (store_info): Add addrspace field.
1640 (record_store): Record the address space
1641 and check to make sure they are the same.
1643 2023-06-02 Andrew Pinski <apinski@marvell.com>
1645 PR rtl-optimization/110042
1646 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
1647 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
1649 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
1652 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
1653 Make sure that we do not have a cap on field alignment before altering
1654 the struct layout based on the type alignment of the first entry.
1656 2023-06-02 David Faust <david.faust@oracle.com>
1659 * btfout.cc (btf_absolute_func_id): New function.
1660 (btf_asm_func_type): Call it here. Change index parameter from
1661 size_t to ctf_id_t. Use PRIu64 formatter.
1663 2023-06-02 Alex Coplan <alex.coplan@arm.com>
1665 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
1666 (btf_asm_datasec_type): Likewise.
1668 2023-06-02 Carl Love <cel@us.ibm.com>
1670 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
1671 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
1673 2023-06-02 Jason Merrill <jason@redhat.com>
1677 * tree.h (DECL_MERGEABLE): New.
1678 * tree-core.h (struct tree_decl_common): Mention it.
1679 * gimplify.cc (gimplify_init_constructor): Check it.
1680 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
1681 * varasm.cc (categorize_decl_for_section): Likewise.
1683 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
1685 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
1686 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
1687 (stack_regs_mentioned_p): Change return type from int to bool
1688 and adjust function body accordingly.
1689 (stack_regs_mentioned): Ditto.
1690 (check_asm_stack_operands): Ditto. Change "malformed_asm"
1692 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
1693 (swap_rtx_condition_1): Change return type from int to bool
1694 and adjust function body accordingly. Change "r" variable to bool.
1695 (swap_rtx_condition): Change return type from int to bool
1696 and adjust function body accordingly.
1697 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
1698 (subst_stack_regs): Ditto.
1699 (convert_regs_entry): Change return type from int to bool and adjust
1700 function body accordingly. Change "inserted" variable to bool.
1701 (convert_regs_1): Recode handling of control_flow_insn_deleted.
1702 (convert_regs_2): Recode handling of cfg_altered.
1703 (convert_regs): Ditto. Change "inserted" variable to bool.
1705 2023-06-02 Jason Merrill <jason@redhat.com>
1708 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
1709 (initializer_constant_valid_p_1): Compare float precision.
1711 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
1713 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
1716 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1718 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
1719 (vect_set_loop_condition_partial_vectors): Ditto.
1721 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
1724 * config/avr/avr.md: Add an RTL peephole to optimize operations on
1725 non-LD_REGS after a move from LD_REGS.
1726 (piaop): New code iterator.
1728 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
1731 * doc/install.texi: Document (optional) Perl usage for parallel
1734 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
1737 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
1740 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1741 KuanLin Chen <best124612@gmail.com>
1743 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
1744 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
1746 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1748 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
1750 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1752 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
1754 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1756 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
1758 (DEF_RVV_FRM_ENUM): Ditto.
1760 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1762 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
1763 intrinsic API expander
1764 * config/riscv/vector.md
1765 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
1766 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
1767 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
1769 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1771 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
1772 * config/riscv/predicates.md (vector_perm_operand): New predicate.
1773 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1774 (expand_vec_perm): New function.
1775 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
1776 (gen_const_vector_dup): Ditto.
1777 (emit_vlmax_gather_insn): Ditto.
1778 (emit_vlmax_masked_gather_mu_insn): Ditto.
1779 (expand_vec_perm): Ditto.
1781 2023-06-01 Jason Merrill <jason@redhat.com>
1783 * doc/invoke.texi (-Wpedantic): Improve clarity.
1785 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
1787 * rtl.h (exp_equiv_p): Change return type from int to bool.
1788 * cse.cc (mention_regs): Change return type from int to bool
1789 and adjust function body accordingly.
1790 (exp_equiv_p): Ditto.
1791 (insert_regs): Ditto. Change "modified" function argument to bool
1792 and update usage accordingly.
1793 (record_jump_cond): Remove always zero "reversed_nonequality"
1794 function argument and update usage accordingly.
1795 (fold_rtx): Change "changed" variable to bool.
1796 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
1797 (is_dead_reg): Change return type from int to bool.
1799 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1801 * config/xtensa/xtensa.md (adddi3, subdi3):
1802 New RTL generation patterns implemented according to the instruc-
1803 tion idioms described in the Xtensa ISA reference manual (p. 600).
1805 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
1806 Uros Bizjak <ubizjak@gmail.com>
1809 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
1810 CODE_for_sse4_1_ptestzv2di.
1811 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
1812 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
1813 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
1814 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
1815 when expanding UNSPEC_PTEST to compare against zero.
1816 * config/i386/i386-features.cc (scalar_chain::convert_compare):
1817 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
1818 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
1819 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
1820 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
1821 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
1822 check for suitable matching modes for the UNSPEC_PTEST pattern.
1823 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
1824 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
1825 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
1826 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
1827 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
1828 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
1829 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
1831 (*ptest<mode>_and): Specify CCZ to only perform this optimization
1832 when only the Z flag is required.
1834 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
1837 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
1839 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1841 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
1842 Add =r,m and =r,m alternatives.
1843 (load_pair<DREG:mode><DREG2:mode>): Likewise.
1844 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
1846 2023-06-01 Pan Li <pan2.li@intel.com>
1848 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
1850 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
1851 (main): Disable FP16 tuple.
1852 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
1853 (TARGET_VECTOR_ELEN_FP_16): Ditto.
1854 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
1856 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
1857 (vfloat16mf2_t): Ditto.
1858 (vfloat16m1_t): Ditto.
1859 (vfloat16m2_t): Ditto.
1860 (vfloat16m4_t): Ditto.
1861 (vfloat16m8_t): Ditto.
1862 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
1864 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
1865 machine mode based on TARGET_VECTOR_ELEN_FP_16.
1867 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1869 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
1870 (DEF_RVV_FRM_ENUM): New macro.
1871 (handle_pragma_vector): Add FRM enum
1872 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
1879 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
1880 Richard Sandiford <richard.sandiford@arm.com>
1882 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
1883 Update call to wi::bswap.
1884 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
1885 Update call to wi::bswap.
1886 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
1887 Update calls to wi::bswap.
1888 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
1889 (wi::bswap_large): New function, with revised API.
1890 * wide-int.h (wi::bswap): New (template) function prototype.
1891 (wide_int_storage::bswap): Remove method.
1892 (sext_large, zext_large): Consistent indentation/line wrapping.
1893 (bswap_large): Prototype helper function containing implementation.
1894 (wi::bswap): New template wrapper around bswap_large.
1896 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1899 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
1900 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
1901 (usdot_prod<vsi2qi>): Rename to...
1902 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
1903 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
1904 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
1905 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
1906 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
1907 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
1908 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
1911 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1914 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
1915 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
1916 (aarch64_sq<r>dmulh_n<mode>): Rename to...
1917 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
1918 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
1919 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
1920 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
1921 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
1922 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
1923 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
1924 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
1925 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
1926 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
1927 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
1929 2023-05-31 David Faust <david.faust@oracle.com>
1931 * btfout.cc (btf_kind_names): New.
1932 (btf_kind_name): New.
1933 (btf_absolute_var_id): New utility function.
1934 (btf_relative_var_id): Likewise.
1935 (btf_relative_func_id): Likewise.
1936 (btf_absolute_datasec_id): Likewise.
1937 (btf_asm_type_ref): New.
1938 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
1939 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
1940 (btf_asm_varent): Likewise.
1941 (btf_asm_func_arg): Likewise.
1942 (btf_asm_datasec_entry): Likewise.
1943 (btf_asm_datasec_type): Likewise.
1944 (btf_asm_func_type): Likewise. Add index parameter.
1945 (btf_asm_enum_const): Likewise.
1946 (btf_asm_sou_member): Likewise.
1947 (output_btf_vars): Update btf_asm_* call accordingly.
1948 (output_asm_btf_sou_fields): Likewise.
1949 (output_asm_btf_enum_list): Likewise.
1950 (output_asm_btf_func_args_list): Likewise.
1951 (output_asm_btf_vlen_bytes): Likewise.
1952 (output_btf_func_types): Add ctf_container_ref parameter.
1953 Pass it to btf_asm_func_type.
1954 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
1955 (btf_output): Update output_btf_func_types call similarly.
1957 2023-05-31 David Faust <david.faust@oracle.com>
1959 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
1960 and BTF_KIND_FWD which do not use the size/type field at all.
1962 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
1964 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
1965 (active_insn_p): Ditto.
1966 (in_sequence_p): Ditto.
1967 (unshare_all_rtl): Change return type from int to void.
1968 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
1969 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
1970 and adjust function body accordingly.
1971 (mem_expr_equal_p): Ditto.
1972 (unshare_all_rtl): Change return type from int to void
1973 and adjust function body accordingly.
1974 (verify_rtx_sharing): Remove unneeded return.
1975 (active_insn_p): Change return type from int to bool
1976 and adjust function body accordingly.
1977 (in_sequence_p): Ditto.
1979 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
1981 * rtl.h (true_dependence): Change return type from int to bool.
1982 (canon_true_dependence): Ditto.
1983 (read_dependence): Ditto.
1984 (anti_dependence): Ditto.
1985 (canon_anti_dependence): Ditto.
1986 (output_dependence): Ditto.
1987 (canon_output_dependence): Ditto.
1988 (may_alias_p): Ditto.
1989 * alias.h (alias_sets_conflict_p): Ditto.
1990 (alias_sets_must_conflict_p): Ditto.
1991 (objects_must_conflict_p): Ditto.
1992 (nonoverlapping_memrefs_p): Ditto.
1993 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
1994 (record_set): Ditto.
1995 (base_alias_check): Ditto.
1996 (find_base_value): Ditto.
1997 (mems_in_disjoint_alias_sets_p): Ditto.
1998 (get_alias_set_entry): Ditto.
1999 (decl_for_component_ref): Ditto.
2000 (write_dependence_p): Ditto.
2001 (memory_modified_1): Ditto.
2002 (mems_in_disjoint_alias_set_p): Change return type from int to bool
2003 and adjust function body accordingly.
2004 (alias_sets_conflict_p): Ditto.
2005 (alias_sets_must_conflict_p): Ditto.
2006 (objects_must_conflict_p): Ditto.
2007 (rtx_equal_for_memref_p): Ditto.
2008 (base_alias_check): Ditto.
2009 (read_dependence): Ditto.
2010 (nonoverlapping_memrefs_p): Ditto.
2011 (true_dependence_1): Ditto.
2012 (true_dependence): Ditto.
2013 (canon_true_dependence): Ditto.
2014 (write_dependence_p): Ditto.
2015 (anti_dependence): Ditto.
2016 (canon_anti_dependence): Ditto.
2017 (output_dependence): Ditto.
2018 (canon_output_dependence): Ditto.
2019 (may_alias_p): Ditto.
2020 (init_alias_analysis): Change "changed" variable to bool.
2022 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2024 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
2025 expand into define_insn_and_split.
2027 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2029 * config/riscv/vector.md: Remove FRM.
2031 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2033 * config/riscv/vector.md: Remove FRM.
2035 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2037 * config/riscv/vector.md: Remove FRM.
2039 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
2042 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
2045 2023-05-31 Richard Biener <rguenther@suse.de>
2048 PR tree-optimization/109143
2049 * tree-ssa-structalias.cc (struct topo_info): Remove.
2050 (init_topo_info): Likewise.
2051 (free_topo_info): Likewise.
2052 (compute_topo_order): Simplify API, put the component
2053 with ESCAPED last so it's processed first.
2054 (topo_visit): Adjust.
2055 (solve_graph): Likewise.
2057 2023-05-31 Richard Biener <rguenther@suse.de>
2059 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
2061 (add_graph_edge): Count redundant edges we avoid to create.
2062 (dump_sa_stats): Dump them.
2063 (ipa_pta_execute): Do not dump generating constraints when
2064 we are not dumping them.
2066 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2068 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
2069 output template to avoid explicit switch on which_alternative.
2070 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
2071 (and<mode>3): Likewise.
2072 (ior<mode>3): Likewise.
2073 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
2075 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2077 * config/xtensa/predicates.md (xtensa_bit_join_operator):
2079 * config/xtensa/xtensa.md (ior_op): Remove.
2080 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
2081 insn_and_split pattern of the same name to express and capture
2082 the bit-combining operation with both sides swapped.
2083 In addition, replace use of code iterator with new operator
2085 (*shlrd_const, *shlrd_per_byte):
2086 Likewise regarding the code iterator.
2088 2023-05-31 Cui, Lili <lili.cui@intel.com>
2090 PR tree-optimization/110038
2091 * params.opt: Add a limit on tree-reassoc-width.
2092 * tree-ssa-reassoc.cc
2093 (rewrite_expr_tree_parallel): Add width limit.
2095 2023-05-31 Pan Li <pan2.li@intel.com>
2097 * common/config/riscv/riscv-common.cc:
2098 (riscv_implied_info): Add zvfh item.
2099 (riscv_ext_version_table): Ditto.
2100 (riscv_ext_flag_table): Ditto.
2101 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
2102 (TARGET_ZVFH): Ditto.
2104 2023-05-30 liuhongt <hongtao.liu@intel.com>
2106 PR tree-optimization/108804
2107 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
2108 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
2109 Add new parameter narrow_src_p.
2110 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
2111 vectorization by truncating to lower precision.
2112 * tree-vectorizer.h (vect_get_range_info): New declare.
2114 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
2116 * lra-int.h (lra_update_sp_offset): Add the prototype.
2117 * lra.cc (setup_sp_offset): Change the return type. Use
2118 lra_update_sp_offset.
2119 * lra-eliminations.cc (lra_update_sp_offset): New function.
2120 (lra_process_new_insns): Push the current insn to reprocess if the
2121 input reload changes sp offset.
2123 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
2126 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
2127 Fix misleading identation.
2129 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
2131 * rtl.h (comparison_dominates_p): Change return type from int to bool.
2132 (condjump_p): Ditto.
2133 (any_condjump_p): Ditto.
2134 (any_uncondjump_p): Ditto.
2135 (simplejump_p): Ditto.
2136 (returnjump_p): Ditto.
2137 (eh_returnjump_p): Ditto.
2138 (onlyjump_p): Ditto.
2139 (invert_jump_1): Ditto.
2140 (invert_jump): Ditto.
2141 (rtx_renumbered_equal_p): Ditto.
2142 (redirect_jump_1): Ditto.
2143 (redirect_jump): Ditto.
2144 (condjump_in_parallel_p): Ditto.
2145 * jump.cc (invert_exp_1): Adjust forward declaration.
2146 (comparison_dominates_p): Change return type from int to bool
2147 and adjust function body accordingly.
2148 (simplejump_p): Ditto.
2149 (condjump_p): Ditto.
2150 (condjump_in_parallel_p): Ditto.
2151 (any_uncondjump_p): Ditto.
2152 (any_condjump_p): Ditto.
2153 (returnjump_p): Ditto.
2154 (eh_returnjump_p): Ditto.
2155 (onlyjump_p): Ditto.
2156 (redirect_jump_1): Ditto.
2157 (redirect_jump): Ditto.
2158 (invert_exp_1): Ditto.
2159 (invert_jump_1): Ditto.
2160 (invert_jump): Ditto.
2161 (rtx_renumbered_equal_p): Ditto.
2163 2023-05-30 Andrew Pinski <apinski@marvell.com>
2165 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
2166 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
2167 Add ne as a possible cmp.
2168 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
2170 2023-05-30 Andrew Pinski <apinski@marvell.com>
2172 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
2175 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
2177 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
2178 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
2179 (and (extend X) C) as (zero_extend (and X C)), to also optimize
2180 modes wider than HOST_WIDE_INT.
2182 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
2185 * simplify-rtx.cc (simplify_const_relational_operation): Return
2186 early if we have a MODE_CC comparison that isn't a COMPARE against
2189 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
2191 * config/riscv/riscv.cc (riscv_const_insns): Allow
2192 const_vec_duplicates.
2194 2023-05-30 liuhongt <hongtao.liu@intel.com>
2196 PR middle-end/108938
2197 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
2198 function, cut from original find_bswap_or_nop function.
2199 (find_bswap_or_nop): Add a new parameter, detect bswap +
2200 rotate and save rotate result in the new parameter.
2201 (bswap_replace): Add a new parameter to indicate rotate and
2202 generate rotate stmt if needed.
2203 (maybe_optimize_vector_constructor): Adjust for new rotate
2204 parameter in the upper 2 functions.
2205 (pass_optimize_bswap::execute): Ditto.
2206 (imm_store_chain_info::output_merged_store): Ditto.
2208 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2210 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
2211 (aarch64_<su>adalp<mode>): New define_expand.
2212 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
2213 (aarch64_<su>addlp<mode>): Convert to define_expand.
2214 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
2215 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
2217 (USADDLP): Likewise.
2218 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
2220 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2222 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
2223 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
2224 srhadd, urhadd builtin codes for standard optab ones.
2225 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
2226 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
2228 (<u>avg<mode>3_ceil): Rename to...
2229 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
2231 (aarch64_<su>hsub<mode>): New define_expand.
2232 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
2233 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
2234 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
2236 2023-05-30 Andreas Schwab <schwab@suse.de>
2239 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
2242 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2244 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
2245 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
2247 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
2248 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
2249 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
2250 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
2251 (aarch64_<sra_op>sra_n<mode>): New define_expand.
2252 (aarch64_<sra_op>rsra_n<mode>): Likewise.
2253 (aarch64_<sur>sra_n<mode>): Rename to...
2254 (aarch64_<sur>sra_ndi): ... This.
2255 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
2256 any_target_p argument.
2257 (aarch64_extract_vec_duplicate_wide_int): Define.
2258 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
2259 (aarch64_const_vec_rnd_cst_p): Likewise.
2260 (aarch64_vector_mode_supported_any_target_p): Likewise.
2261 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
2262 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
2263 (VSRA): Adjust for the above.
2265 (V2XWIDE): New mode_attr.
2266 (vec_or_offset): Likewise.
2267 (SHIFTEXTEND): Likewise.
2268 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
2270 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
2271 clarify that it applies to current target options.
2272 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
2273 * doc/tm.texi.in: Regenerate.
2274 * stor-layout.cc (mode_for_vector): Check
2275 vector_mode_supported_any_target_p when iterating through vector modes.
2276 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
2277 clarify that it applies to current target options.
2278 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
2280 2023-05-30 Lili Cui <lili.cui@intel.com>
2282 PR tree-optimization/98350
2283 * tree-ssa-reassoc.cc
2284 (rewrite_expr_tree_parallel): Rewrite this function.
2285 (rank_ops_for_fma): New.
2286 (reassociate_bb): Handle new function.
2288 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
2290 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
2291 (rtx_unstable_p): Ditto.
2292 (reg_mentioned_p): Ditto.
2293 (reg_referenced_p): Ditto.
2294 (reg_used_between_p): Ditto.
2295 (reg_set_between_p): Ditto.
2296 (modified_between_p): Ditto.
2297 (no_labels_between_p): Ditto.
2298 (modified_in_p): Ditto.
2300 (multiple_sets): Ditto.
2301 (set_noop_p): Ditto.
2302 (noop_move_p): Ditto.
2303 (reg_overlap_mentioned_p): Ditto.
2304 (dead_or_set_p): Ditto.
2305 (dead_or_set_regno_p): Ditto.
2306 (find_reg_fusage): Ditto.
2307 (find_regno_fusage): Ditto.
2308 (side_effects_p): Ditto.
2309 (volatile_refs_p): Ditto.
2310 (volatile_insn_p): Ditto.
2311 (may_trap_p_1): Ditto.
2312 (may_trap_p): Ditto.
2313 (may_trap_or_fault_p): Ditto.
2314 (computed_jump_p): Ditto.
2315 (auto_inc_p): Ditto.
2316 (loc_mentioned_in_p): Ditto.
2317 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
2318 (rtx_unstable_p): Change return type from int to bool
2319 and adjust function body accordingly.
2320 (rtx_addr_can_trap_p): Ditto.
2321 (reg_mentioned_p): Ditto.
2322 (no_labels_between_p): Ditto.
2323 (reg_used_between_p): Ditto.
2324 (reg_referenced_p): Ditto.
2325 (reg_set_between_p): Ditto.
2327 (modified_between_p): Ditto.
2328 (modified_in_p): Ditto.
2329 (multiple_sets): Ditto.
2330 (set_noop_p): Ditto.
2331 (noop_move_p): Ditto.
2332 (reg_overlap_mentioned_p): Ditto.
2333 (dead_or_set_p): Ditto.
2334 (dead_or_set_regno_p): Ditto.
2335 (find_reg_fusage): Ditto.
2336 (find_regno_fusage): Ditto.
2337 (remove_node_from_insn_list): Ditto.
2338 (volatile_insn_p): Ditto.
2339 (volatile_refs_p): Ditto.
2340 (side_effects_p): Ditto.
2341 (may_trap_p_1): Ditto.
2342 (may_trap_p): Ditto.
2343 (may_trap_or_fault_p): Ditto.
2344 (computed_jump_p): Ditto.
2345 (auto_inc_p): Ditto.
2346 (loc_mentioned_in_p): Ditto.
2347 * combine.cc (can_combine_p): Update indirect function.
2349 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2351 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
2352 * config/riscv/iterators.md: New attribute.
2353 * config/riscv/vector-iterators.md: New attribute.
2355 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
2357 * config/riscv/riscv.md: Fix signed and unsigned comparison
2360 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2362 * config/riscv/autovec.md (fnma<mode>4): New pattern.
2363 (*fnma<mode>): Ditto.
2365 2023-05-29 Die Li <lidie@eswincomputing.com>
2367 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
2369 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
2370 process for TARGET_XTHEADCONDMOV
2372 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
2375 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
2376 TARGET_AVX512BW to generate truncv16hiv16qi2.
2378 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
2380 * config/riscv/riscv.md (and<mode>3): New expander.
2381 (*and<mode>3) New pattern.
2382 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
2385 2023-05-29 Pan Li <pan2.li@intel.com>
2387 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
2388 comments and rename local variables.
2389 (emit_nonvlmax_insn): Diito.
2390 (emit_vlmax_merge_insn): Ditto.
2391 (emit_vlmax_cmp_insn): Ditto.
2392 (emit_vlmax_cmp_mu_insn): Ditto.
2393 (emit_scalar_move_insn): Ditto.
2395 2023-05-29 Pan Li <pan2.li@intel.com>
2397 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
2399 (emit_nonvlmax_insn): Ditto.
2400 (emit_vlmax_merge_insn): Ditto.
2401 (emit_vlmax_cmp_insn): Ditto.
2402 (emit_vlmax_cmp_mu_insn): Ditto.
2403 (expand_vec_series): Ditto.
2405 2023-05-29 Pan Li <pan2.li@intel.com>
2407 * config/riscv/riscv-protos.h (enum insn_type): New type.
2408 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
2409 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
2411 (rvv_builder::get_merged_repeating_sequence): Ditto.
2412 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
2413 to evaluate the optimization cost.
2414 (rvv_builder::get_merge_scalar_mask): New function to get the merge
2416 (emit_scalar_move_insn): New function to emit vmv.s.x.
2417 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
2418 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
2420 (get_repeating_sequence_dup_machine_mode): New function to get the dup
2422 (expand_vector_init_merge_repeating_sequence): New function to perform
2424 (expand_vec_init): Add this vector init optimization.
2425 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
2427 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
2429 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
2430 put onto the increment when it is inserted after the position.
2432 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
2434 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
2437 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2439 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
2441 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2443 * config/riscv/autovec.md (fma<mode>4): New pattern.
2444 (*fma<mode>): Ditto.
2445 * config/riscv/riscv-protos.h (enum insn_type): New enum.
2446 (emit_vlmax_ternary_insn): New function.
2447 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
2449 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2451 * config/riscv/vector.md: Fix vimuladd instruction bug.
2453 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2455 * config/riscv/riscv.cc (global_state_unknown_p): New function.
2456 (riscv_mode_after): Fix incorrect VXM.
2458 2023-05-29 Pan Li <pan2.li@intel.com>
2460 * common/config/riscv/riscv-common.cc:
2461 (riscv_implied_info): Add zvfhmin item.
2462 (riscv_ext_version_table): Ditto.
2463 (riscv_ext_flag_table): Ditto.
2464 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
2465 (TARGET_ZFHMIN): Align indent.
2466 (TARGET_ZFH): Ditto.
2467 (TARGET_ZVFHMIN): New macro.
2469 2023-05-27 liuhongt <hongtao.liu@intel.com>
2472 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
2473 to VI_AVX2 to cover more modes.
2475 2023-05-27 liuhongt <hongtao.liu@intel.com>
2477 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
2478 Remove ATOM and ICELAKE(and later) core processors.
2480 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
2482 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
2484 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
2486 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
2489 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
2490 Juzhe Zhong <juzhe.zhong@rivai.ai>
2492 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
2494 (<optab><v_quad_trunc><mode>2): Dito.
2495 (<optab><v_oct_trunc><mode>2): Dito.
2496 (trunc<mode><v_double_trunc>2): Dito.
2497 (trunc<mode><v_quad_trunc>2): Dito.
2498 (trunc<mode><v_oct_trunc>2): Dito.
2499 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
2500 (autovectorize_vector_modes): Define.
2501 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
2503 (autovectorize_vector_modes): Implement hook.
2504 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
2505 Implement target hook.
2506 (riscv_vectorize_related_mode): Implement target hook.
2507 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
2508 (TARGET_VECTORIZE_RELATED_MODE): Define.
2509 * config/riscv/vector-iterators.md: Add lowercase versions of
2510 mode_attr iterators.
2512 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
2513 Tobias Burnus <tobias@codesourcery.com>
2515 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
2516 (ASM_SPEC): Use XNACKOPT.
2517 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
2518 (enum hsaco_attr_type): ... this, and generalize the names.
2519 (TARGET_XNACK): New macro.
2520 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
2522 (output_file_start): Update xnack handling.
2523 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
2524 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
2525 (sram_ecc_type): Rename to ...
2526 (hsaco_attr_type: ... this.)
2527 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
2528 (TEST_XNACK): Delete.
2529 (TEST_XNACK_ANY): New macro.
2530 (TEST_XNACK_ON): New macro.
2531 (main): Support the new -mxnack=on/off/any syntax.
2532 * doc/invoke.texi (-mxnack): Update for new syntax.
2534 2023-05-26 Andrew Pinski <apinski@marvell.com>
2536 * genmatch.cc (emit_debug_printf): New function.
2537 (dt_simplify::gen_1): Emit printf into the code
2538 before the `return true` or returning the folded result
2539 instead of emitting it always.
2541 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2543 * config/xtensa/xtensa-protos.h
2544 (xtensa_expand_block_set_unrolled_loop,
2545 xtensa_expand_block_set_small_loop): Remove.
2546 (xtensa_expand_block_set): New prototype.
2547 * config/xtensa/xtensa.cc
2548 (xtensa_expand_block_set_libcall): New subfunction.
2549 (xtensa_expand_block_set_unrolled_loop,
2550 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
2551 (xtensa_expand_block_set): New function that calls the above
2553 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
2554 xtensa_expand_block_set().
2556 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2558 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
2560 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
2562 * config/xtensa/constraints.md (O):
2563 Change to use the above function.
2564 * config/xtensa/xtensa.md (*subsi3_from_const):
2565 New insn_and_split pattern.
2567 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2569 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
2570 Retract excessive line folding, and correct the value of
2571 the "length" insn attribute related to TARGET_DENSITY.
2572 (*extzvsi-1bit_addsubx): Ditto.
2574 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
2576 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
2577 Do not disable call to ix86_expand_vecop_qihi2.
2579 2023-05-26 liuhongt <hongtao.liu@intel.com>
2583 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
2584 calculation when !hard_regno_mode_ok for GENERAL_REGS and
2585 mode, otherwise still use GENERAL_REGS.
2587 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2589 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
2590 explict VL and drop VL in ops.
2592 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
2594 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
2595 in different BB blocks.
2597 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
2599 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
2600 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
2601 instructions when available. Emulate truncation via
2602 ix86_expand_vec_perm_const_1 when native truncate insn
2604 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
2605 when available. Trivially rename some variables.
2606 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
2607 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
2608 calculation of V*QImode emulations to account for generation of
2609 2x-wider mode instructions.
2610 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
2611 emulations to account for generation of 2x-wider mode instructions.
2613 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
2616 * config/avr/avr.cc (avr_can_inline_p): New static function.
2617 (TARGET_CAN_INLINE_P): Define to that function.
2619 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
2622 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
2623 Handle any bit position and use mode QISI.
2624 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
2625 of 2 insns for bit-transfer of respective style.
2627 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
2629 * config/arm/iterators.md (MVE_6): Remove.
2630 * config/arm/mve.md: Replace MVE_6 with MVE_5.
2632 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2633 Richard Sandiford <richard.sandiford@arm.com>
2635 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
2637 (vect_set_loop_controls_directly): Add decrement IV support.
2638 (vect_set_loop_condition_partial_vectors): Ditto.
2639 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
2641 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
2644 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2647 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
2648 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
2649 Fix canonicalization of PLUS operands.
2650 (aarch64_fcmla<rot><mode>): Rename to...
2651 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
2652 Fix canonicalization of PLUS operands.
2653 (aarch64_fcmla_lane<rot><mode>): Rename to...
2654 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
2655 Fix canonicalization of PLUS operands.
2656 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
2657 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
2658 Fix canonicalization of PLUS operands.
2659 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
2661 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
2663 * config/arm/arm.md (rbitsi2): Rename to...
2664 (arm_rbit): ... This.
2665 (ctzsi2): Adjust for the above.
2666 (arm_rev16si2): Convert to define_expand.
2667 (arm_rev16si2_alt1): New pattern.
2668 (arm_rev16si2_alt): Rename to...
2669 (*arm_rev16si2_alt2): ... This.
2670 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
2671 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
2672 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
2673 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
2675 2023-05-25 Alex Coplan <alex.coplan@arm.com>
2678 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
2680 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
2681 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
2682 DFmode as an rvalue.
2684 2023-05-25 Richard Biener <rguenther@suse.de>
2687 * tree-vect-stmts.cc (vectorizable_condition): For
2688 embedded comparisons also handle the case when the target
2689 only provides vec_cmp and vcond_mask.
2691 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
2693 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
2696 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2698 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
2699 (seq_cost_ignoring_scalar_moves): Likewise.
2700 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
2702 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2704 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
2705 (vcage_f32): Likewise.
2706 (vcages_f32): Likewise.
2707 (vcageq_f32): Likewise.
2708 (vcaged_f64): Likewise.
2709 (vcageq_f64): Likewise.
2710 (vcagts_f32): Likewise.
2711 (vcagt_f32): Likewise.
2712 (vcagt_f64): Likewise.
2713 (vcagtq_f32): Likewise.
2714 (vcagtd_f64): Likewise.
2715 (vcagtq_f64): Likewise.
2716 (vcale_f32): Likewise.
2717 (vcale_f64): Likewise.
2718 (vcaled_f64): Likewise.
2719 (vcales_f32): Likewise.
2720 (vcaleq_f32): Likewise.
2721 (vcaleq_f64): Likewise.
2722 (vcalt_f32): Likewise.
2723 (vcalt_f64): Likewise.
2724 (vcaltd_f64): Likewise.
2725 (vcaltq_f32): Likewise.
2726 (vcaltq_f64): Likewise.
2727 (vcalts_f32): Likewise.
2729 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
2733 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
2734 int to const int or const int to const unsigned int.
2735 (_mm512_mask_srli_epi16): Ditto.
2736 (_mm512_slli_epi16): Ditto.
2737 (_mm512_mask_slli_epi16): Ditto.
2738 (_mm512_maskz_slli_epi16): Ditto.
2739 (_mm512_srai_epi16): Ditto.
2740 (_mm512_mask_srai_epi16): Ditto.
2741 (_mm512_maskz_srai_epi16): Ditto.
2742 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
2743 (_mm512_mask_slli_epi64): Ditto.
2744 (_mm512_maskz_slli_epi64): Ditto.
2745 (_mm512_srli_epi64): Ditto.
2746 (_mm512_mask_srli_epi64): Ditto.
2747 (_mm512_maskz_srli_epi64): Ditto.
2748 (_mm512_srai_epi64): Ditto.
2749 (_mm512_mask_srai_epi64): Ditto.
2750 (_mm512_maskz_srai_epi64): Ditto.
2751 (_mm512_slli_epi32): Ditto.
2752 (_mm512_mask_slli_epi32): Ditto.
2753 (_mm512_maskz_slli_epi32): Ditto.
2754 (_mm512_srli_epi32): Ditto.
2755 (_mm512_mask_srli_epi32): Ditto.
2756 (_mm512_maskz_srli_epi32): Ditto.
2757 (_mm512_srai_epi32): Ditto.
2758 (_mm512_mask_srai_epi32): Ditto.
2759 (_mm512_maskz_srai_epi32): Ditto.
2760 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
2761 (_mm256_maskz_srai_epi16): Ditto.
2762 (_mm_mask_srai_epi16): Ditto.
2763 (_mm_maskz_srai_epi16): Ditto.
2764 (_mm256_mask_slli_epi16): Ditto.
2765 (_mm256_maskz_slli_epi16): Ditto.
2766 (_mm_mask_slli_epi16): Ditto.
2767 (_mm_maskz_slli_epi16): Ditto.
2768 (_mm_maskz_srli_epi16): Ditto.
2769 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
2770 (_mm256_maskz_srli_epi32): Ditto.
2771 (_mm_mask_srli_epi32): Ditto.
2772 (_mm_maskz_srli_epi32): Ditto.
2773 (_mm256_mask_srli_epi64): Ditto.
2774 (_mm256_maskz_srli_epi64): Ditto.
2775 (_mm_mask_srli_epi64): Ditto.
2776 (_mm_maskz_srli_epi64): Ditto.
2777 (_mm256_mask_srai_epi32): Ditto.
2778 (_mm256_maskz_srai_epi32): Ditto.
2779 (_mm_mask_srai_epi32): Ditto.
2780 (_mm_maskz_srai_epi32): Ditto.
2781 (_mm256_srai_epi64): Ditto.
2782 (_mm256_mask_srai_epi64): Ditto.
2783 (_mm256_maskz_srai_epi64): Ditto.
2784 (_mm_srai_epi64): Ditto.
2785 (_mm_mask_srai_epi64): Ditto.
2786 (_mm_maskz_srai_epi64): Ditto.
2787 (_mm_mask_slli_epi32): Ditto.
2788 (_mm_maskz_slli_epi32): Ditto.
2789 (_mm_mask_slli_epi64): Ditto.
2790 (_mm_maskz_slli_epi64): Ditto.
2791 (_mm256_mask_slli_epi32): Ditto.
2792 (_mm256_maskz_slli_epi32): Ditto.
2793 (_mm256_mask_slli_epi64): Ditto.
2794 (_mm256_maskz_slli_epi64): Ditto.
2796 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2798 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
2801 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
2803 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
2804 * data-streamer-out.cc (streamer_write_vrange): Same.
2805 * value-range.h (class vrange): Make streamer_write_vrange a friend.
2807 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
2809 * value-query.cc (range_query::get_tree_range): Set NAN directly
2811 * value-range.cc (frange::set): Assert that bounds are not NAN.
2813 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
2815 * value-range.cc (add_vrange): Handle known NANs.
2817 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
2819 * value-range.h (frange::set_nan): New.
2821 2023-05-25 Alexandre Oliva <oliva@adacore.com>
2824 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
2825 requires stricter alignment than MEM's.
2827 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2829 PR tree-optimization/107822
2830 PR tree-optimization/107986
2831 * Makefile.in (OBJS): Add gimple-range-phi.o.
2832 * gimple-range-cache.h (ranger_cache::m_estimate): New
2833 phi_analyzer pointer member.
2834 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
2835 phi_analyzer if no loop info is available.
2836 * gimple-range-phi.cc: New file.
2837 * gimple-range-phi.h: New file.
2838 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
2840 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2842 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
2844 (fold_range): Add range_query parameter.
2845 (fur_relation::fur_relation): New.
2846 (fur_relation::trio): New.
2847 (fur_relation::register_relation): New.
2848 (fold_relations): New.
2849 * gimple-range-fold.h (fold_range): Adjust prototypes.
2850 (fold_relations): New.
2852 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2854 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
2855 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
2856 (ranger_cache::const_query): New.
2857 * gimple-range.cc (gimple_ranger::const_query): New.
2858 * gimple-range.h (gimple_ranger::const_query): New prototype.
2860 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2862 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
2863 (ssa_cache::dump_range_query): Delete.
2864 (ssa_lazy_cache::dump_range_query): Delete.
2865 (ssa_lazy_cache::get_range): Move from header file.
2866 (ssa_lazy_cache::clear_range): ditto.
2867 (ssa_lazy_cache::clear): Ditto.
2868 * gimple-range-cache.h (class ssa_cache): Virtualize.
2869 (class ssa_lazy_cache): Inherit and virtualize.
2871 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
2873 * value-range.h (vrange::kind): Remove.
2875 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
2877 PR middle-end/109840
2878 * match.pd <popcount optimizations>: Preserve zero-extension when
2879 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
2880 popcount((T)x), so the popcount's argument keeps the same type.
2881 <parity optimizations>: Likewise preserve extensions when
2882 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
2883 parity((T)x), so that the parity's argument type is the same.
2885 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
2887 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
2888 (ipcp_store_vr_results): Same.
2889 * ipa-prop.cc (ipa_vr::ipa_vr): New.
2890 (ipa_vr::get_vrange): New.
2891 (ipa_vr::set_unknown): New.
2892 (ipa_vr::streamer_read): New.
2893 (ipa_vr::streamer_write): New.
2894 (write_ipcp_transformation_info): Use new ipa_vr API.
2895 (read_ipcp_transformation_info): Same.
2896 (ipa_vr::nonzero_p): Delete.
2897 (ipcp_update_vr): Use new ipa_vr API.
2898 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
2899 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
2901 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
2903 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
2904 silence overflow warnings later on.
2906 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
2908 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
2909 Remove handling of V8QImode.
2910 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
2911 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
2912 (v<insn>v4qi3): Ditto.
2913 * config/i386/sse.md (v<insn>v8qi3): Remove.
2915 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2918 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
2919 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
2920 (aarch64_simd_ashr<mode>): Rename to...
2921 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
2922 (aarch64_simd_imm_shl<mode>): Rename to...
2923 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
2924 (aarch64_simd_reg_sshl<mode>): Rename to...
2925 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
2926 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
2927 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
2928 (aarch64_simd_reg_shl<mode>_signed): Rename to...
2929 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
2930 (vec_shr_<mode>): Rename to...
2931 (vec_shr_<mode><vczle><vczbe>): ... This.
2932 (aarch64_<sur>shl<mode>): Rename to...
2933 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
2934 (aarch64_<sur>q<r>shl<mode>): Rename to...
2935 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
2937 2023-05-24 Richard Biener <rguenther@suse.de>
2940 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
2941 Perform final vector composition using
2942 ix86_expand_vector_init_general instead of setting
2943 the highpart and lowpart which causes spilling.
2945 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2947 PR tree-optimization/109695
2948 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
2950 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
2951 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
2952 flag to set_global_range.
2953 (gimple_ranger::prefill_stmt_dependencies): Ditto.
2955 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2957 PR tree-optimization/109695
2958 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
2960 (temporal_cache::current_p): Check always_current method.
2961 (temporal_cache::set_always_current): Add param and set value
2963 (temporal_cache::always_current_p): New.
2964 (ranger_cache::get_global_range): Adjust.
2965 (ranger_cache::set_global_range): set always current first.
2967 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2969 PR tree-optimization/109695
2970 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
2971 fold_range with global query to choose an initial value.
2973 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2975 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
2978 2023-05-24 Richard Biener <rguenther@suse.de>
2980 PR tree-optimization/109849
2981 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
2982 expressions but take the first sets.
2984 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
2987 * doc/gm2.texi (High procedure function): New node.
2988 (Using): New menu entry for High procedure function.
2990 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
2992 PR rtl-optimization/109940
2993 * early-remat.cc (postorder_index): Rename to...
2994 (rpo_index): ...this.
2995 (compare_candidates): Sort by decreasing rpo_index rather than
2996 increasing postorder_index.
2997 (early_remat::sort_candidates): Calculate the forward RPO from
2999 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
3000 rather than DF_BACKWARD in reverse.
3002 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3005 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
3006 qualifier_none for the return operand.
3008 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3010 * config/riscv/autovec.md (<optab><mode>3): New pattern.
3011 (one_cmpl<mode>2): Ditto.
3012 (*<optab>not<mode>): Ditto.
3013 (*n<optab><mode>): Ditto.
3014 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
3017 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
3019 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
3020 calculation on n_perms by considering nvectors_per_build.
3022 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3023 Richard Sandiford <richard.sandiford@arm.com>
3025 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
3026 (vec_cmp<mode><vm>): New pattern.
3027 (vec_cmpu<mode><vm>): New pattern.
3028 (vcond<V:mode><VI:mode>): New pattern.
3029 (vcondu<V:mode><VI:mode>): New pattern.
3030 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
3031 (emit_vlmax_merge_insn): New function.
3032 (emit_vlmax_cmp_insn): Ditto.
3033 (emit_vlmax_cmp_mu_insn): Ditto.
3034 (expand_vec_cmp): Ditto.
3035 (expand_vec_cmp_float): Ditto.
3036 (expand_vcond): Ditto.
3037 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
3038 (emit_vlmax_cmp_insn): Ditto.
3039 (emit_vlmax_cmp_mu_insn): Ditto.
3040 (get_cmp_insn_code): Ditto.
3041 (expand_vec_cmp): Ditto.
3042 (expand_vec_cmp_float): Ditto.
3043 (expand_vcond): Ditto.
3045 2023-05-24 Pan Li <pan2.li@intel.com>
3047 * config/riscv/genrvv-type-indexer.cc (main): Add
3048 unsigned_eew*_lmul1_interpret for indexer.
3049 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
3050 Register vuint*m1_t interpret function.
3051 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
3052 New macro for vuint8m1_t.
3053 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3054 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3055 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3056 (vbool1_t): Add to unsigned_eew*_interpret_ops.
3057 (vbool2_t): Likewise.
3058 (vbool4_t): Likewise.
3059 (vbool8_t): Likewise.
3060 (vbool16_t): Likewise.
3061 (vbool32_t): Likewise.
3062 (vbool64_t): Likewise.
3063 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
3064 New macro for vuint*m1_t.
3065 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3066 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3067 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3068 (required_extensions_p): Add vuint*m1_t interpret case.
3069 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
3070 Add vuint*m1_t interpret to base type.
3071 (unsigned_eew16_lmul1_interpret): Likewise.
3072 (unsigned_eew32_lmul1_interpret): Likewise.
3073 (unsigned_eew64_lmul1_interpret): Likewise.
3075 2023-05-24 Pan Li <pan2.li@intel.com>
3077 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
3078 for the eew size list.
3079 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
3080 (main): Add signed_eew*_lmul1_interpret for indexer.
3081 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
3082 Register vint*m1_t interpret function.
3083 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
3084 New macro for vint8m1_t.
3085 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3086 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3087 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3088 (vbool1_t): Add to signed_eew*_interpret_ops.
3089 (vbool2_t): Likewise.
3090 (vbool4_t): Likewise.
3091 (vbool8_t): Likewise.
3092 (vbool16_t): Likewise.
3093 (vbool32_t): Likewise.
3094 (vbool64_t): Likewise.
3095 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
3096 New macro for vint*m1_t.
3097 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3098 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3099 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3100 (required_extensions_p): Add vint8m1_t interpret case.
3101 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
3102 Add vint*m1_t interpret to base type.
3103 (signed_eew16_lmul1_interpret): Likewise.
3104 (signed_eew32_lmul1_interpret): Likewise.
3105 (signed_eew64_lmul1_interpret): Likewise.
3107 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3109 * config/riscv/autovec.md: Adjust for new interface.
3110 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
3111 (emit_nonvlmax_insn): Add AVL operand.
3112 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
3113 (emit_nonvlmax_insn): Add AVL operand.
3114 (sew64_scalar_helper): Adjust for new interface.
3115 (expand_tuple_move): Ditto.
3116 * config/riscv/vector.md: Ditto.
3118 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3120 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
3121 (expand_const_vector): Ditto.
3122 (legitimize_move): Ditto.
3123 (sew64_scalar_helper): Ditto.
3124 (expand_tuple_move): Ditto.
3125 (expand_vector_init_insert_elems): Ditto.
3126 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
3128 2023-05-24 liuhongt <hongtao.liu@intel.com>
3131 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
3132 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
3133 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
3134 (ix86_masked_all_ones): Handle 64-bit mask.
3135 * config/i386/i386-builtin.def: Replace icode of related
3136 non-mask simd abs builtins with CODE_FOR_nothing.
3138 2023-05-23 Martin Uecker <uecker@tugraz.at>
3141 * function.cc (gimplify_parm_type): Remove function.
3142 (gimplify_parameters): Call gimplify_type_sizes.
3144 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3146 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
3147 and change to also accept '*subx' pattern.
3150 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3152 * config/xtensa/predicates.md (addsub_operator): New.
3153 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
3154 *extzvsi-1bit_addsubx): New insn_and_split patterns.
3155 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
3156 Add a special case about ifcvt 'noce_try_cmove()' to handle
3157 constant loads that do not fit into signed 12 bits in the
3158 patterns added above.
3160 2023-05-23 Richard Biener <rguenther@suse.de>
3162 PR tree-optimization/109747
3163 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
3164 the SLP node only once to the cost hook.
3166 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
3168 * config/avr/avr.cc (avr_insn_cost): New static function.
3169 (TARGET_INSN_COST): Define to that function.
3171 2023-05-23 Richard Biener <rguenther@suse.de>
3174 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
3175 For vector construction or splats apply GPR->XMM move
3176 costing. QImode memory can be handled directly only
3179 2023-05-23 Richard Biener <rguenther@suse.de>
3181 PR tree-optimization/108752
3182 * tree-vect-stmts.cc (vectorizable_operation): For bit
3183 operations with generic word_mode vectors do not cost
3184 an extra stmt. For plus, minus and negate also cost the
3185 constant materialization.
3187 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
3189 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
3190 Call ix86_expand_vec_shift_qihi_constant for shifts
3191 with constant count operand.
3192 * config/i386/i386.cc (ix86_shift_rotate_cost):
3193 Handle V4QImode and V8QImode.
3194 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
3195 (<insn>v4qi3): Ditto.
3197 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3199 * config/riscv/vector.md: Add mode.
3201 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
3203 PR tree-optimization/109934
3204 * value-range.cc (irange::invert): Remove buggy special case.
3206 2023-05-23 Richard Biener <rguenther@suse.de>
3208 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
3211 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
3214 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
3215 subregs between any scalars that are 64 bits or smaller.
3216 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
3217 (bits_etype): New int attribute.
3218 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
3219 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
3220 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
3222 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
3224 * doc/md.texi: Document that <FOO> can be used to refer to the
3225 numerical value of an int iterator FOO. Tweak other parts of
3226 the int iterator documentation.
3227 * read-rtl.cc (iterator_group::has_self_attr): New field.
3228 (map_attr_string): When has_self_attr is true, make <FOO>
3229 expand to the current value of iterator FOO.
3230 (initialize_iterators): Set has_self_attr for int iterators.
3232 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3234 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
3235 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
3236 (RVV_UNOP_NUM): New macro.
3237 (RVV_BINOP_NUM): Ditto.
3238 (legitimize_move): Refactor the framework of RVV auto-vectorization.
3239 (emit_vlmax_op): Ditto.
3240 (emit_vlmax_reg_op): Ditto.
3241 (emit_len_op): Ditto.
3242 (emit_len_binop): Ditto.
3243 (emit_vlmax_tany_many): Ditto.
3244 (emit_nonvlmax_tany_many): Ditto.
3245 (sew64_scalar_helper): Ditto.
3246 (expand_tuple_move): Ditto.
3247 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
3248 (emit_pred_binop): Ditto.
3249 (emit_vlmax_op): Ditto.
3250 (emit_vlmax_tany_many): New function.
3251 (emit_len_op): Remove.
3252 (emit_nonvlmax_tany_many): New function.
3253 (emit_vlmax_reg_op): Remove.
3254 (emit_len_binop): Ditto.
3255 (emit_index_op): Ditto.
3256 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
3257 (expand_const_vector): Ditto.
3258 (legitimize_move): Ditto.
3259 (sew64_scalar_helper): Ditto.
3260 (expand_tuple_move): Ditto.
3261 (expand_vector_init_insert_elems): Ditto.
3262 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
3263 * config/riscv/vector.md: Ditto.
3265 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3268 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
3269 and constraint for operand 0.
3270 (add_vec_concat_subst_be): Likewise.
3272 2023-05-23 Richard Biener <rguenther@suse.de>
3274 PR tree-optimization/109849
3275 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
3276 and use that to determine what to hoist.
3278 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
3280 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
3281 specific treatment for bit-fields only if they have an integral type
3282 and filter out non-integral bit-fields that do not start and end on
3285 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
3287 PR tree-optimization/109920
3288 * value-range.h (RESIZABLE>::~int_range): Use delete[].
3290 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
3292 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
3293 calcuation of integer vector mode costs to reflect generated
3294 instruction sequences of different integer vector modes and
3295 different target ABIs. Remove "speed" function argument.
3296 (ix86_rtx_costs): Update call for removed function argument.
3297 (ix86_vector_costs::add_stmt_cost): Ditto.
3299 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
3301 * value-range.h (class Value_Range): Implement set_zero,
3302 set_nonzero, and nonzero_p.
3304 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
3306 * config/i386/i386.cc (ix86_multiplication_cost): Add
3307 the cost of a memory read to the cost of V?QImode sequences.
3309 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3311 * config/riscv/riscv-v.cc: Add "m_" prefix.
3313 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3315 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
3316 multiple-rgroup of length.
3317 * tree-vect-stmts.cc (vectorizable_store): Ditto.
3318 (vectorizable_load): Ditto.
3319 * tree-vectorizer.h (vect_get_loop_len): Ditto.
3321 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3323 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
3326 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
3328 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
3329 handling for the case index == count.
3331 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
3334 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
3335 Don't fold to XOR / AND / XOR if just one bit is copied to the
3338 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
3340 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
3341 builtin for bit reversal using brev instruction.
3342 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
3343 NVPTX_BUILTIN_BREVLL.
3344 (nvptx_init_builtins): Define "brev" and "brevll".
3345 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
3346 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
3347 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
3348 section, document __builtin_nvptx_brev{,ll}.
3350 2023-05-21 Jakub Jelinek <jakub@redhat.com>
3352 PR tree-optimization/109505
3353 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
3354 Combine successive equal operations with constants,
3355 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
3356 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
3359 2023-05-21 Andrew Pinski <apinski@marvell.com>
3361 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
3363 2023-05-21 Pan Li <pan2.li@intel.com>
3365 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
3366 rest bool size, aka 2, 4, 8, 16, 32, 64.
3367 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
3368 Register vbool[2|4|8|16|32|64] interpret function.
3369 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
3370 New macro for vbool2_t.
3371 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
3372 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
3373 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
3374 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
3375 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
3376 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
3377 (vint16m1_t): Likewise.
3378 (vint32m1_t): Likewise.
3379 (vint64m1_t): Likewise.
3380 (vuint8m1_t): Likewise.
3381 (vuint16m1_t): Likewise.
3382 (vuint32m1_t): Likewise.
3383 (vuint64m1_t): Likewise.
3384 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
3385 New macro for vbool2_t.
3386 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
3387 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
3388 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
3389 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
3390 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
3391 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
3392 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
3393 vbool2_t interprect to base type.
3394 (bool4_interpret): Likewise.
3395 (bool8_interpret): Likewise.
3396 (bool16_interpret): Likewise.
3397 (bool32_interpret): Likewise.
3398 (bool64_interpret): Likewise.
3400 2023-05-21 Andrew Pinski <apinski@marvell.com>
3402 PR middle-end/109919
3403 * expr.cc (expand_single_bit_test): Don't use the
3404 target for expand_expr.
3406 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
3408 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
3411 2023-05-20 Pan Li <pan2.li@intel.com>
3413 * mode-switching.cc (entity_map): Initialize the array to zero.
3416 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
3419 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
3420 Remove superfluous "parallel" in insn pattern.
3421 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
3422 printing error text to assembly.
3424 2023-05-20 Andrew Pinski <apinski@marvell.com>
3426 * expr.cc (fold_single_bit_test): Rename to ...
3427 (expand_single_bit_test): This and expand directly.
3428 (do_store_flag): Update for the rename function.
3430 2023-05-20 Andrew Pinski <apinski@marvell.com>
3432 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
3433 instead of shift/and.
3435 2023-05-20 Andrew Pinski <apinski@marvell.com>
3437 * expr.cc (fold_single_bit_test): Add an assert
3438 and simplify based on code being NE_EXPR or EQ_EXPR.
3440 2023-05-20 Andrew Pinski <apinski@marvell.com>
3442 * expr.cc (fold_single_bit_test): Take inner and bitnum
3443 instead of arg0 and arg1. Update the code.
3444 (do_store_flag): Don't create a tree when calling
3445 fold_single_bit_test instead just call it with the bitnum
3448 2023-05-20 Andrew Pinski <apinski@marvell.com>
3450 * expr.cc (fold_single_bit_test): Use get_def_for_expr
3451 instead of checking the inner's code.
3453 2023-05-20 Andrew Pinski <apinski@marvell.com>
3455 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
3456 (fold_single_bit_test): This and simplify.
3458 2023-05-20 Andrew Pinski <apinski@marvell.com>
3460 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
3462 (fold_single_bit_test): Likewise.
3463 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
3464 (fold_single_bit_test): Likewise and make static.
3465 * fold-const.h (fold_single_bit_test): Remove declaration.
3467 2023-05-20 Die Li <lidie@eswincomputing.com>
3469 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
3472 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
3474 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
3476 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
3479 * config/riscv/bitmanip.md
3480 (<bitmanip_optab>disi2): Match with any_extend.
3481 (<bitmanip_optab>disi2_sext): New pattern to match
3482 with sign extend using an ANDI instruction.
3484 2023-05-19 Nathan Sidwell <nathan@acm.org>
3487 * opts.h (handle_deferred_dump_options): Declare.
3488 * opts-global.cc (handle_common_deferred_options): Do not handle
3490 (handle_deferred_dump_options): New.
3491 * toplev.cc (toplev::main): Call it after plugin init.
3493 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
3495 * config/riscv/constraints.md (DsS, DsD): Restore agreement
3496 with shiftm1 mode attribute.
3498 2023-05-19 Andrew Pinski <apinski@marvell.com>
3501 * gcc.cc (default_compilers["@c-header"]): Add %w
3502 after the --output-pch.
3504 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
3506 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
3507 to hival, ASHIFT the corresponding regs.
3509 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
3511 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
3513 2023-05-19 Jakub Jelinek <jakub@redhat.com>
3515 PR tree-optimization/105776
3516 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
3517 non-NULL, allow division statement to have a cast as single imm use
3518 rather than comparison/condition.
3519 (match_arith_overflow): In that case remove the cast stmt in addition
3520 to the division statement.
3522 2023-05-19 Jakub Jelinek <jakub@redhat.com>
3524 PR tree-optimization/101856
3525 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
3526 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
3527 support it but umul_highpart_optab does.
3529 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
3531 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
3532 of tree_to_shwi on array indices. Minor tweaks.
3534 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
3536 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
3537 * attribs.cc (diag_attr_exclusions): Ditto.
3538 (decl_attributes): Ditto.
3539 (build_type_attribute_qual_variant): Ditto.
3540 * builtins.cc (fold_builtin_carg): Ditto.
3541 (fold_builtin_next_arg): Ditto.
3542 (do_mpc_arg2): Ditto.
3543 * cfgexpand.cc (expand_return): Ditto.
3544 * cgraph.h (decl_in_symtab_p): Ditto.
3545 (symtab_node::get_create): Ditto.
3546 * dwarf2out.cc (base_type_die): Ditto.
3547 (implicit_ptr_descriptor): Ditto.
3548 (gen_array_type_die): Ditto.
3549 (gen_type_die_with_usage): Ditto.
3550 (optimize_location_into_implicit_ptr): Ditto.
3551 * expr.cc (do_store_flag): Ditto.
3552 * fold-const.cc (negate_expr_p): Ditto.
3553 (fold_negate_expr_1): Ditto.
3554 (fold_convert_const): Ditto.
3555 (fold_convert_loc): Ditto.
3556 (constant_boolean_node): Ditto.
3557 (fold_binary_op_with_conditional_arg): Ditto.
3558 (build_fold_addr_expr_with_type_loc): Ditto.
3559 (fold_comparison): Ditto.
3560 (fold_checksum_tree): Ditto.
3561 (tree_unary_nonnegative_warnv_p): Ditto.
3562 (integer_valued_real_unary_p): Ditto.
3563 (fold_read_from_constant_string): Ditto.
3564 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
3565 * gimple-expr.cc (useless_type_conversion_p): Ditto.
3566 (is_gimple_reg): Ditto.
3567 (is_gimple_asm_val): Ditto.
3568 (mark_addressable): Ditto.
3569 * gimple-expr.h (is_gimple_variable): Ditto.
3570 (virtual_operand_p): Ditto.
3571 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
3572 * gimplify.cc (gimplify_bind_expr): Ditto.
3573 (gimplify_return_expr): Ditto.
3574 (gimple_add_padding_init_for_auto_var): Ditto.
3575 (gimplify_addr_expr): Ditto.
3576 (omp_add_variable): Ditto.
3577 (omp_notice_variable): Ditto.
3578 (omp_get_base_pointer): Ditto.
3579 (omp_strip_components_and_deref): Ditto.
3580 (omp_strip_indirections): Ditto.
3581 (omp_accumulate_sibling_list): Ditto.
3582 (omp_build_struct_sibling_lists): Ditto.
3583 (gimplify_adjust_omp_clauses_1): Ditto.
3584 (gimplify_adjust_omp_clauses): Ditto.
3585 (gimplify_omp_for): Ditto.
3586 (goa_lhs_expr_p): Ditto.
3587 (gimplify_one_sizepos): Ditto.
3588 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
3589 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
3590 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
3591 (propagate_controlled_uses): Ditto.
3592 * ipa-sra.cc (type_prevails_p): Ditto.
3593 (scan_expr_access): Ditto.
3594 * optabs-tree.cc (optab_for_tree_code): Ditto.
3595 * toplev.cc (wrapup_global_declaration_1): Ditto.
3596 * trans-mem.cc (transaction_invariant_address_p): Ditto.
3597 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
3598 (verify_gimple_comparison): Ditto.
3599 (verify_gimple_assign_binary): Ditto.
3600 (verify_gimple_assign_single): Ditto.
3601 * tree-complex.cc (get_component_ssa_name): Ditto.
3602 * tree-emutls.cc (lower_emutls_2): Ditto.
3603 * tree-inline.cc (copy_tree_body_r): Ditto.
3604 (estimate_move_cost): Ditto.
3605 (copy_decl_for_dup_finish): Ditto.
3606 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
3607 (note_nonlocal_vla_type): Ditto.
3608 (convert_local_omp_clauses): Ditto.
3609 (remap_vla_decls): Ditto.
3610 (fixup_vla_decls): Ditto.
3611 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
3612 * tree-pretty-print.cc (print_declaration): Ditto.
3613 (print_call_name): Ditto.
3614 * tree-sra.cc (compare_access_positions): Ditto.
3615 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
3616 * tree-ssa-ccp.cc (get_default_value): Ditto.
3617 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
3618 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
3619 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
3620 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
3621 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
3622 * tree-ssa-sink.cc (statement_sink_location): Ditto.
3623 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
3624 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
3625 * tree-ssa-uninit.cc (warn_uninit): Ditto.
3626 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
3627 (non_rewritable_mem_ref_base): Ditto.
3628 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
3629 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
3630 * tree-vect-generic.cc (do_binop): Ditto.
3632 * tree-vect-stmts.cc (vect_init_vector): Ditto.
3633 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
3634 * tree.cc (sign_mask_for): Ditto.
3635 (verify_type_variant): Ditto.
3636 (gimple_canonical_types_compatible_p): Ditto.
3637 (verify_type): Ditto.
3638 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
3639 * var-tracking.cc (prepare_call_arguments): Ditto.
3640 (vt_add_function_parameters): Ditto.
3641 * varasm.cc (decode_addr_const): Ditto.
3643 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
3645 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
3646 (lower_reduction_clauses): Ditto.
3647 (lower_send_clauses): Ditto.
3648 (lower_omp_task_reductions): Ditto.
3649 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
3650 (worker_single_copy): Ditto.
3651 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
3652 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
3654 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
3656 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
3658 (lto_read_body_or_constructor): Ditto.
3659 * lto-streamer-out.cc (tree_is_indexable): Ditto.
3660 (lto_output_var_decl_ref): Ditto.
3661 (DFS::DFS_write_tree_body): Ditto.
3663 (write_symbol_extension_info): Ditto.
3665 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
3667 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
3668 defines from tree.h.
3669 (aarch64_mangle_type): Ditto.
3670 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
3671 (alpha_gimplify_va_arg_1): Ditto.
3672 * config/arc/arc.cc (arc_encode_section_info): Ditto.
3673 (arc_is_aux_reg_p): Ditto.
3674 (arc_is_uncached_mem_p): Ditto.
3675 (arc_handle_aux_attribute): Ditto.
3676 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
3677 (arm_handle_cmse_nonsecure_call): Ditto.
3678 (arm_set_default_type_attributes): Ditto.
3679 (arm_is_segment_info_known): Ditto.
3680 (arm_mangle_type): Ditto.
3681 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
3682 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
3683 (avr_decl_absdata_p): Ditto.
3684 (avr_insert_attributes): Ditto.
3685 (avr_section_type_flags): Ditto.
3686 (avr_encode_section_info): Ditto.
3687 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
3688 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
3689 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
3690 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
3691 (csky_mangle_type): Ditto.
3692 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
3693 * config/darwin.cc (is_objc_metadata): Ditto.
3694 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
3695 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
3696 * config/frv/frv.cc (frv_emit_movsi): Ditto.
3697 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
3698 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
3699 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
3700 * config/i386/i386-expand.cc: Ditto.
3701 * config/i386/i386.cc (type_natural_mode): Ditto.
3702 (ix86_function_arg): Ditto.
3703 (ix86_data_alignment): Ditto.
3704 (ix86_local_alignment): Ditto.
3705 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
3706 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
3707 (i386_pe_type_dllexport_p): Ditto.
3708 (i386_pe_adjust_class_at_definition): Ditto.
3709 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
3710 (i386_pe_binds_local_p): Ditto.
3711 (i386_pe_section_type_flags): Ditto.
3712 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
3713 (ia64_gimplify_va_arg): Ditto.
3714 (ia64_in_small_data_p): Ditto.
3715 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
3716 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
3717 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
3718 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
3719 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
3720 (mcore_encode_section_info): Ditto.
3721 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
3722 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
3723 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
3724 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
3725 (pass_in_memory): Ditto.
3726 (nvptx_generate_vector_shuffle): Ditto.
3727 (nvptx_lockless_update): Ditto.
3728 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
3729 (pa_function_value): Ditto.
3730 (pa_function_arg): Ditto.
3731 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
3732 (TEXT_SPACE_P): Ditto.
3733 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
3734 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
3735 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
3736 (riscv_mangle_type): Ditto.
3737 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
3738 (rl78_addsi3_internal): Ditto.
3739 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
3740 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
3741 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
3742 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
3743 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
3744 (rs6000_function_arg_advance_1): Ditto.
3745 (rs6000_function_arg): Ditto.
3746 (rs6000_pass_by_reference): Ditto.
3747 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
3748 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
3749 (rs6000_set_default_type_attributes): Ditto.
3750 (rs6000_elf_in_small_data_p): Ditto.
3751 (IN_NAMED_SECTION): Ditto.
3752 (rs6000_xcoff_encode_section_info): Ditto.
3753 (rs6000_function_value): Ditto.
3754 (invalid_arg_for_unprototyped_fn): Ditto.
3755 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
3756 (s390_vec_n_elem): Ditto.
3757 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
3758 (s390_function_arg_integer): Ditto.
3759 (s390_return_in_memory): Ditto.
3760 (s390_encode_section_info): Ditto.
3761 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
3762 (sh_function_value): Ditto.
3763 * config/sol2.cc (solaris_insert_attributes): Ditto.
3764 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
3765 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
3766 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
3767 (xstormy16_handle_below100_attribute): Ditto.
3768 * config/v850/v850.cc (v850_encode_section_info): Ditto.
3769 (v850_insert_attributes): Ditto.
3770 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
3771 (visium_return_in_memory): Ditto.
3772 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
3774 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
3776 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
3777 (ix86_expand_vecop_qihi): Add op2vec bool variable.
3778 Do not set REG_EQUAL note.
3779 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
3781 * config/i386/i386.cc (ix86_multiplication_cost): Handle
3782 V4QImode and V8QImode.
3783 * config/i386/mmx.md (mulv8qi3): New expander.
3785 * config/i386/sse.md (mulv8qi3): Remove.
3787 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
3789 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
3791 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
3794 * config.gcc: Use = operator instead of ==.
3796 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
3799 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
3800 * configure.ac: Likewise.
3801 * configure: Regenerate.
3803 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
3805 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
3806 (__ARM_mve_coerce1): Remove.
3807 (__ARM_mve_coerce2): Remove.
3808 (__ARM_mve_coerce3): Remove.
3809 (__ARM_mve_coerce_i_scalar): New.
3810 (__ARM_mve_coerce_s8_ptr): New.
3811 (__ARM_mve_coerce_u8_ptr): New.
3812 (__ARM_mve_coerce_s16_ptr): New.
3813 (__ARM_mve_coerce_u16_ptr): New.
3814 (__ARM_mve_coerce_s32_ptr): New.
3815 (__ARM_mve_coerce_u32_ptr): New.
3816 (__ARM_mve_coerce_s64_ptr): New.
3817 (__ARM_mve_coerce_u64_ptr): New.
3818 (__ARM_mve_coerce_f_scalar): New.
3819 (__ARM_mve_coerce_f16_ptr): New.
3820 (__ARM_mve_coerce_f32_ptr): New.
3821 (__arm_vst4q): Change _coerce_ overloads.
3822 (__arm_vbicq): Change _coerce_ overloads.
3823 (__arm_vld1q): Change _coerce_ overloads.
3824 (__arm_vld1q_z): Change _coerce_ overloads.
3825 (__arm_vld2q): Change _coerce_ overloads.
3826 (__arm_vld4q): Change _coerce_ overloads.
3827 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
3828 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
3829 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
3830 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
3831 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
3832 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
3833 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
3834 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
3835 (__arm_vst1q_p): Change _coerce_ overloads.
3836 (__arm_vst2q): Change _coerce_ overloads.
3837 (__arm_vst1q): Change _coerce_ overloads.
3838 (__arm_vstrhq): Change _coerce_ overloads.
3839 (__arm_vstrhq_p): Change _coerce_ overloads.
3840 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
3841 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
3842 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
3843 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
3844 (__arm_vstrwq_p): Change _coerce_ overloads.
3845 (__arm_vstrwq): Change _coerce_ overloads.
3846 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
3847 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
3848 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
3849 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
3850 (__arm_vsetq_lane): Change _coerce_ overloads.
3851 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
3852 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
3853 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
3854 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
3855 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
3856 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
3857 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
3858 (__arm_vidupq_x_u8): Change _coerce_ overloads.
3859 (__arm_vddupq_x_u8): Change _coerce_ overloads.
3860 (__arm_vidupq_x_u16): Change _coerce_ overloads.
3861 (__arm_vddupq_x_u16): Change _coerce_ overloads.
3862 (__arm_vidupq_x_u32): Change _coerce_ overloads.
3863 (__arm_vddupq_x_u32): Change _coerce_ overloads.
3864 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
3865 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
3866 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
3867 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
3868 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
3869 (__arm_vidupq_u16): Change _coerce_ overloads.
3870 (__arm_vidupq_u32): Change _coerce_ overloads.
3871 (__arm_vidupq_u8): Change _coerce_ overloads.
3872 (__arm_vddupq_u16): Change _coerce_ overloads.
3873 (__arm_vddupq_u32): Change _coerce_ overloads.
3874 (__arm_vddupq_u8): Change _coerce_ overloads.
3875 (__arm_viwdupq_m): Change _coerce_ overloads.
3876 (__arm_viwdupq_u16): Change _coerce_ overloads.
3877 (__arm_viwdupq_u32): Change _coerce_ overloads.
3878 (__arm_viwdupq_u8): Change _coerce_ overloads.
3879 (__arm_vdwdupq_m): Change _coerce_ overloads.
3880 (__arm_vdwdupq_u16): Change _coerce_ overloads.
3881 (__arm_vdwdupq_u32): Change _coerce_ overloads.
3882 (__arm_vdwdupq_u8): Change _coerce_ overloads.
3883 (__arm_vstrbq): Change _coerce_ overloads.
3884 (__arm_vstrbq_p): Change _coerce_ overloads.
3885 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
3886 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
3887 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
3888 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
3889 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
3891 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
3893 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
3896 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
3898 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
3899 (__arm_vadcq_u32): Likewise.
3900 (__arm_vadcq_m_s32): Likewise.
3901 (__arm_vadcq_m_u32): Likewise.
3902 (__arm_vsbcq_s32): Likewise.
3903 (__arm_vsbcq_u32): Likewise.
3904 (__arm_vsbcq_m_s32): Likewise.
3905 (__arm_vsbcq_m_u32): Likewise.
3906 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
3908 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
3910 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
3911 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
3912 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
3913 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
3914 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
3915 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
3916 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
3917 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
3918 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
3919 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
3920 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
3921 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
3922 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
3923 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
3924 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
3925 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
3926 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
3927 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
3928 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
3929 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
3930 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
3931 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
3932 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
3933 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
3934 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
3935 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
3936 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
3937 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
3938 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
3939 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
3940 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
3941 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
3942 (mve_vorrq_m_f<mode>)
3943 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
3944 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
3945 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
3946 capitalization in the emitted asm.
3948 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
3950 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
3952 (Ri): Move constraint definition from predicates.md.
3953 (Rl): Define new constraint.
3954 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
3956 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
3957 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
3958 op 2. Fix asm output spacing.
3959 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
3960 * config/arm/predicates.md (Ri) Move constraint to constraints.md
3961 (mve_vldrd_immediate): Move it from
3963 (mve_vstrw_immediate): New predicate.
3965 2023-05-18 Pan Li <pan2.li@intel.com>
3966 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3967 Kito Cheng <kito.cheng@sifive.com>
3968 Richard Biener <rguenther@suse.de>
3969 Richard Sandiford <richard.sandiford@arm.com>
3971 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
3972 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
3973 (struct table_elt): Extend machine_mode to 16 bits.
3974 (struct set): Ditto.
3975 * genmodes.cc (emit_mode_wider): Extend type from char to short.
3976 (emit_mode_complex): Ditto.
3977 (emit_mode_inner): Ditto.
3978 (emit_class_narrowest_mode): Ditto.
3979 * genopinit.cc (main): Extend the machine_mode limit.
3980 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
3981 re-ordered the struct fields for padding.
3982 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
3983 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
3984 (get_mode_alignment): Extend type from char to short.
3985 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
3986 removed the ATTRIBUTE_PACKED.
3987 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
3988 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
3989 m_kind to 2 bits and remove m_spare.
3990 * rtl.h (RTX_CODE_BITSIZE): New macro.
3991 (struct rtx_def): Swap both the bit size and location between the
3992 rtx_code and the machine_mode.
3993 (subreg_shape::unique_id): Extend the machine_mode limit.
3994 * rtlanal.h: Extend machine_mode to 16 bits.
3995 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
3996 bits and re-ordered the struct fields for padding.
3997 (struct tree_decl_common): Extend machine_mode to 16 bits.
3999 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
4001 * genrecog.cc (print_nonbool_test): Fix type error of
4002 switch (SUBREG_BYTE (op))'.
4004 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
4006 * common/config/riscv/riscv-common.cc: Remove
4007 trailing spaces on lines.
4008 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
4009 * config/riscv/riscv.h (enum reg_class): Likewise.
4010 * config/riscv/riscv.md: Likewise.
4012 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
4014 * config/pa/pa.md (clear_cache): New.
4016 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
4018 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
4019 parenthesis. Fix misnamed index entry.
4020 <concept>: Fix misnamed index entry.
4022 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
4024 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
4026 (*<optab>si3_mask, *<optab>di3_mask): Here.
4027 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
4028 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
4030 (*<bitmanip_optab>si3_sext_mask): Likewise.
4031 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
4032 and const_di_mask_operand.
4033 (bitmanip_rotate): New iterator.
4034 (bitmanip_optab): Add rotates.
4035 * config/riscv/predicates.md (const_si_mask_operand): Renamed
4036 from const31_operand. Generalize to handle more mask constants.
4037 (const_di_mask_operand): Similarly.
4039 2023-05-17 Jakub Jelinek <jakub@redhat.com>
4042 * config/i386/i386-builtin-types.def (FLOAT128): Use
4043 float128t_type_node rather than float128_type_node.
4045 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
4047 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
4048 FP_CONTRACT_FAST (no functional change).
4050 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
4052 * config/i386/i386.cc (ix86_multiplication_cost): Correct
4053 calcuation of integer vector mode costs to reflect generated
4054 instruction sequences of different integer vector modes and
4055 different target ABIs.
4057 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4059 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
4060 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
4061 (riscv_mode_needed): Ditto.
4062 (riscv_mode_after): Ditto.
4063 (riscv_mode_entry): Ditto.
4064 (riscv_mode_exit): Ditto.
4065 (riscv_mode_priority): Ditto.
4066 (TARGET_MODE_EMIT): New target hook.
4067 (TARGET_MODE_NEEDED): Ditto.
4068 (TARGET_MODE_AFTER): Ditto.
4069 (TARGET_MODE_ENTRY): Ditto.
4070 (TARGET_MODE_EXIT): Ditto.
4071 (TARGET_MODE_PRIORITY): Ditto.
4072 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
4073 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
4074 * config/riscv/riscv.md: Add csrwvxrm.
4075 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
4076 (vxrmsi): New pattern.
4078 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4080 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
4081 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
4082 (struct narrow_alu_def): Ditto.
4083 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
4084 (function_expander::use_exact_insn): Ditto.
4085 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
4086 (function_base::has_rounding_mode_operand_p): New function.
4088 2023-05-17 Andrew Pinski <apinski@marvell.com>
4090 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
4091 against 0 instead of calling integer_zerop.
4093 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4095 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
4096 (DEF_RVV_VXRM_ENUM): New macro.
4097 (handle_pragma_vector): Add vxrm enum register.
4098 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
4104 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
4106 * value-range.h (Value_Range::operator=): New.
4108 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
4110 * value-range.cc (vrange::operator=): Add a stub to copy
4112 * value-range.h (is_a <unsupported_range>): New.
4113 (Value_Range::operator=): Support copying unsupported ranges.
4115 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
4117 * data-streamer-in.cc (streamer_read_real_value): New.
4118 (streamer_read_value_range): New.
4119 * data-streamer-out.cc (streamer_write_real_value): New.
4120 (streamer_write_vrange): New.
4121 * data-streamer.h (streamer_write_vrange): New.
4122 (streamer_read_value_range): New.
4124 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
4127 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
4128 is ignored for a fixed underlying type.
4129 (C++ Dialect Options): Likewise for -fstrict-enums.
4131 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
4133 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
4136 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
4138 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
4140 (s390_atomic_align_for_mode): New.
4142 2023-05-17 Jakub Jelinek <jakub@redhat.com>
4144 * wide-int.cc (wi::from_array): Add missing closing paren in function
4147 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
4149 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
4150 suggested unroll factor once the previous analysis fails.
4152 2023-05-17 Pan Li <pan2.li@intel.com>
4154 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
4156 (main): Add bool1 to the type indexer.
4157 * config/riscv/riscv-vector-builtins-functions.def
4158 (vreinterpret): Register vbool1 interpret function.
4159 * config/riscv/riscv-vector-builtins-types.def
4160 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
4161 (vint8m1_t): Add the type to bool1_interpret_ops.
4162 (vint16m1_t): Ditto.
4163 (vint32m1_t): Ditto.
4164 (vint64m1_t): Ditto.
4165 (vuint8m1_t): Ditto.
4166 (vuint16m1_t): Ditto.
4167 (vuint32m1_t): Ditto.
4168 (vuint64m1_t): Ditto.
4169 * config/riscv/riscv-vector-builtins.cc
4170 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
4171 (required_extensions_p): Add bool1 interpret case.
4172 * config/riscv/riscv-vector-builtins.def
4173 (bool1_interpret): Add bool1 interpret to base type.
4174 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
4175 with VB dest for vreinterpret.
4177 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
4180 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
4181 constants through "lis; xoris".
4183 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
4185 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
4186 default rs6000 target pass for O2 and above.
4187 * doc/invoke.texi: Document -free
4189 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
4191 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
4192 Fix wrong select_kind...
4194 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
4196 * config/s390/s390-protos.h (s390_expand_setmem): Change
4198 * config/s390/s390.cc (s390_expand_setmem): For memset's less
4199 than or equal to 256 byte do not perform a libc call.
4200 * config/s390/s390.md: Change expander into a version which
4203 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
4205 * config/s390/s390-protos.h (s390_expand_movmem): New.
4206 * config/s390/s390.cc (s390_expand_movmem): New.
4207 * config/s390/s390.md (movmem<mode>): New.
4211 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
4213 * config/s390/s390-protos.h (s390_expand_cpymem): Change
4215 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
4216 than or equal to 256 byte do not perform a libc call.
4217 (s390_expand_insv): Adapt new function signature of
4219 * config/s390/s390.md: Change expander into a version which
4222 2023-05-16 Andrew Pinski <apinski@marvell.com>
4224 PR tree-optimization/109424
4225 * match.pd: Add patterns for min/max of zero_one_valued
4228 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4230 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
4231 * config/riscv/riscv-vector-builtins.cc
4232 (function_expander::use_ternop_insn): Add default rounding mode.
4233 (function_expander::use_widen_ternop_insn): Ditto.
4234 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
4235 (riscv_hard_regno_mode_ok): Ditto.
4236 (riscv_conditional_register_usage): Ditto.
4237 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
4239 (RISCV_DWARF_FRM): Ditto.
4240 * config/riscv/riscv.md: Ditto.
4241 * config/riscv/vector-iterators.md: split no frm and has frm operations.
4242 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
4243 (@pred_<optab><mode>): Ditto.
4245 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
4247 PR tree-optimization/109695
4248 * value-range.cc (irange::operator=): Resize range.
4249 (irange::union_): Same.
4250 (irange::intersect): Same.
4251 (irange::invert): Same.
4252 (int_range_max): Default to 3 sub-ranges and resize as needed.
4253 * value-range.h (irange::maybe_resize): New.
4255 (int_range::int_range): Adjust for resizing.
4256 (int_range::operator=): Same.
4258 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
4260 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
4262 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
4265 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4267 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
4268 * config/riscv/riscv-vector-builtins.cc
4269 (function_expander::use_exact_insn): Add default rounding mode operand.
4270 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
4271 (riscv_hard_regno_mode_ok): Ditto.
4272 (riscv_conditional_register_usage): Ditto.
4273 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
4274 (VXRM_REG_P): Ditto.
4275 (RISCV_DWARF_VXRM): Ditto.
4276 * config/riscv/riscv.md: Ditto.
4277 * config/riscv/vector.md: Ditto
4279 2023-05-15 Pan Li <pan2.li@intel.com>
4281 * optabs.cc (maybe_gen_insn): Add case to generate instruction
4282 that has 11 operands.
4284 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4286 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
4287 logic for vector modes.
4289 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4292 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
4293 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
4294 (aarch64_cmtst<mode>): Rename to...
4295 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
4296 (*aarch64_cmtst_same_<mode>): Rename to...
4297 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
4298 (*aarch64_cmtstdi): Rename to...
4299 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
4300 (aarch64_fac<optab><mode>): Rename to...
4301 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
4303 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4306 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
4307 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
4309 2023-05-15 Pan Li <pan2.li@intel.com>
4310 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4311 kito-cheng <kito.cheng@sifive.com>
4313 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
4314 deciding the mode is constant or not.
4315 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
4317 2023-05-15 Richard Biener <rguenther@suse.de>
4319 PR tree-optimization/109848
4320 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
4321 TARGET_MEM_REF address preparation before the store, not
4324 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4326 * config/riscv/riscv.cc
4327 (riscv_vectorize_preferred_vector_alignment): New function.
4328 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
4330 2023-05-14 Andrew Pinski <apinski@marvell.com>
4332 PR tree-optimization/109829
4333 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
4335 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
4338 * config/i386/i386.cc: Revert the 2023-05-11 change.
4339 (ix86_widen_mult_cost): Return high value instead of
4340 ICEing for unsupported modes.
4342 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
4344 * config/i386/i386.cc (x86_function_profiler): Take
4345 ix86_direct_extern_access into account when generating calls
4348 2023-05-14 Pan Li <pan2.li@intel.com>
4350 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
4351 Refactor the or pattern to switch cases.
4353 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
4355 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
4356 aarch64_expand_vector_init to this, and remove interleaving case.
4357 Recursively call aarch64_expand_vector_init_fallback, instead of
4358 aarch64_expand_vector_init.
4359 (aarch64_unzip_vector_init): New function.
4360 (aarch64_expand_vector_init): Likewise.
4362 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
4364 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
4365 Pull out function call from the gcc_assert.
4367 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
4369 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
4370 (policy_to_str): New.
4371 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
4373 2023-05-13 Andrew Pinski <apinski@marvell.com>
4375 PR tree-optimization/109834
4376 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
4377 (popcount(rotate(x,y))->popcount(x)): Likewise.
4379 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
4381 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
4382 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
4383 gen_extend_insn to generate zero/sign extension instructions.
4385 (ix86_expand_vecop_qihi): Initialize interleave functions
4386 for MULT code only. Fix comments.
4388 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
4391 * config/i386/mmx.md (mulv2si3): Remove expander.
4392 (mulv2si3): Rename insn pattern from *mulv2si.
4394 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
4397 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
4398 '!lto_stream_offload_p'.
4400 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
4401 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4404 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
4405 (local_avl_compatible_p): New.
4406 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
4407 for LCM, rewrite as a backward algorithm.
4408 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
4409 interface, handle a BB at once.
4411 2023-05-12 Richard Biener <rguenther@suse.de>
4413 PR tree-optimization/64731
4414 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
4415 handle TARGET_MEM_REF destinations of stores from vector
4418 2023-05-12 Richard Biener <rguenther@suse.de>
4420 PR tree-optimization/109791
4421 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
4423 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
4426 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4428 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
4429 * config/arm/arm-mve-builtins-base.def (vsriq): New.
4430 * config/arm/arm-mve-builtins-base.h (vsriq): New.
4431 * config/arm/arm-mve-builtins.cc
4432 (function_instance::has_inactive_argument): Handle vsriq.
4433 * config/arm/arm_mve.h (vsriq): Remove.
4435 (vsriq_n_u8): Remove.
4436 (vsriq_n_s8): Remove.
4437 (vsriq_n_u16): Remove.
4438 (vsriq_n_s16): Remove.
4439 (vsriq_n_u32): Remove.
4440 (vsriq_n_s32): Remove.
4441 (vsriq_m_n_s8): Remove.
4442 (vsriq_m_n_u8): Remove.
4443 (vsriq_m_n_s16): Remove.
4444 (vsriq_m_n_u16): Remove.
4445 (vsriq_m_n_s32): Remove.
4446 (vsriq_m_n_u32): Remove.
4447 (__arm_vsriq_n_u8): Remove.
4448 (__arm_vsriq_n_s8): Remove.
4449 (__arm_vsriq_n_u16): Remove.
4450 (__arm_vsriq_n_s16): Remove.
4451 (__arm_vsriq_n_u32): Remove.
4452 (__arm_vsriq_n_s32): Remove.
4453 (__arm_vsriq_m_n_s8): Remove.
4454 (__arm_vsriq_m_n_u8): Remove.
4455 (__arm_vsriq_m_n_s16): Remove.
4456 (__arm_vsriq_m_n_u16): Remove.
4457 (__arm_vsriq_m_n_s32): Remove.
4458 (__arm_vsriq_m_n_u32): Remove.
4459 (__arm_vsriq): Remove.
4460 (__arm_vsriq_m): Remove.
4462 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4464 * config/arm/iterators.md (mve_insn): Add vsri.
4465 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
4466 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
4467 (mve_vsriq_m_n_<supf><mode>): Rename into ...
4468 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4470 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4472 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
4473 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
4475 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4477 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
4478 * config/arm/arm-mve-builtins-base.def (vsliq): New.
4479 * config/arm/arm-mve-builtins-base.h (vsliq): New.
4480 * config/arm/arm-mve-builtins.cc
4481 (function_instance::has_inactive_argument): Handle vsliq.
4482 * config/arm/arm_mve.h (vsliq): Remove.
4484 (vsliq_n_u8): Remove.
4485 (vsliq_n_s8): Remove.
4486 (vsliq_n_u16): Remove.
4487 (vsliq_n_s16): Remove.
4488 (vsliq_n_u32): Remove.
4489 (vsliq_n_s32): Remove.
4490 (vsliq_m_n_s8): Remove.
4491 (vsliq_m_n_s32): Remove.
4492 (vsliq_m_n_s16): Remove.
4493 (vsliq_m_n_u8): Remove.
4494 (vsliq_m_n_u32): Remove.
4495 (vsliq_m_n_u16): Remove.
4496 (__arm_vsliq_n_u8): Remove.
4497 (__arm_vsliq_n_s8): Remove.
4498 (__arm_vsliq_n_u16): Remove.
4499 (__arm_vsliq_n_s16): Remove.
4500 (__arm_vsliq_n_u32): Remove.
4501 (__arm_vsliq_n_s32): Remove.
4502 (__arm_vsliq_m_n_s8): Remove.
4503 (__arm_vsliq_m_n_s32): Remove.
4504 (__arm_vsliq_m_n_s16): Remove.
4505 (__arm_vsliq_m_n_u8): Remove.
4506 (__arm_vsliq_m_n_u32): Remove.
4507 (__arm_vsliq_m_n_u16): Remove.
4508 (__arm_vsliq): Remove.
4509 (__arm_vsliq_m): Remove.
4511 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4513 * config/arm/iterators.md (mve_insn>): Add vsli.
4514 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
4515 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4516 (mve_vsliq_m_n_<supf><mode>): Rename into ...
4517 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4519 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4521 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
4522 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
4524 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4526 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
4527 * config/arm/arm-mve-builtins-base.def (vpselq): New.
4528 * config/arm/arm-mve-builtins-base.h (vpselq): New.
4529 * config/arm/arm_mve.h (vpselq): Remove.
4530 (vpselq_u8): Remove.
4531 (vpselq_s8): Remove.
4532 (vpselq_u16): Remove.
4533 (vpselq_s16): Remove.
4534 (vpselq_u32): Remove.
4535 (vpselq_s32): Remove.
4536 (vpselq_u64): Remove.
4537 (vpselq_s64): Remove.
4538 (vpselq_f16): Remove.
4539 (vpselq_f32): Remove.
4540 (__arm_vpselq_u8): Remove.
4541 (__arm_vpselq_s8): Remove.
4542 (__arm_vpselq_u16): Remove.
4543 (__arm_vpselq_s16): Remove.
4544 (__arm_vpselq_u32): Remove.
4545 (__arm_vpselq_s32): Remove.
4546 (__arm_vpselq_u64): Remove.
4547 (__arm_vpselq_s64): Remove.
4548 (__arm_vpselq_f16): Remove.
4549 (__arm_vpselq_f32): Remove.
4550 (__arm_vpselq): Remove.
4552 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4554 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
4555 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
4557 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4559 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
4561 * config/arm/iterators.md (MVE_VPSELQ_F): New.
4562 (mve_insn): Add vpsel.
4563 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
4564 (@mve_<mve_insn>q_<supf><mode>): ... this.
4565 (@mve_vpselq_f<mode>): Rename into ...
4566 (@mve_<mve_insn>q_f<mode>): ... this.
4568 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4570 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
4571 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
4572 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
4573 * config/arm/arm-mve-builtins.cc
4574 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
4576 * config/arm/arm_mve.h (vfmaq): Remove.
4582 (vfmaq_f16): Remove.
4583 (vfmaq_n_f16): Remove.
4584 (vfmasq_n_f16): Remove.
4585 (vfmsq_f16): Remove.
4586 (vfmaq_f32): Remove.
4587 (vfmaq_n_f32): Remove.
4588 (vfmasq_n_f32): Remove.
4589 (vfmsq_f32): Remove.
4590 (vfmaq_m_f32): Remove.
4591 (vfmaq_m_f16): Remove.
4592 (vfmaq_m_n_f32): Remove.
4593 (vfmaq_m_n_f16): Remove.
4594 (vfmasq_m_n_f32): Remove.
4595 (vfmasq_m_n_f16): Remove.
4596 (vfmsq_m_f32): Remove.
4597 (vfmsq_m_f16): Remove.
4598 (__arm_vfmaq_f16): Remove.
4599 (__arm_vfmaq_n_f16): Remove.
4600 (__arm_vfmasq_n_f16): Remove.
4601 (__arm_vfmsq_f16): Remove.
4602 (__arm_vfmaq_f32): Remove.
4603 (__arm_vfmaq_n_f32): Remove.
4604 (__arm_vfmasq_n_f32): Remove.
4605 (__arm_vfmsq_f32): Remove.
4606 (__arm_vfmaq_m_f32): Remove.
4607 (__arm_vfmaq_m_f16): Remove.
4608 (__arm_vfmaq_m_n_f32): Remove.
4609 (__arm_vfmaq_m_n_f16): Remove.
4610 (__arm_vfmasq_m_n_f32): Remove.
4611 (__arm_vfmasq_m_n_f16): Remove.
4612 (__arm_vfmsq_m_f32): Remove.
4613 (__arm_vfmsq_m_f16): Remove.
4614 (__arm_vfmaq): Remove.
4615 (__arm_vfmasq): Remove.
4616 (__arm_vfmsq): Remove.
4617 (__arm_vfmaq_m): Remove.
4618 (__arm_vfmasq_m): Remove.
4619 (__arm_vfmsq_m): Remove.
4621 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4623 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
4625 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
4626 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
4627 (mve_insn): Add vfma, vfmas, vfms.
4628 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
4630 (@mve_<mve_insn>q_f<mode>): ... this.
4631 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
4632 (@mve_<mve_insn>q_n_f<mode>): ... this.
4633 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
4634 @mve_<mve_insn>q_m_f<mode>.
4635 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
4636 @mve_<mve_insn>q_m_n_f<mode>.
4638 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4640 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
4641 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
4643 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4645 * config/arm/arm-mve-builtins-base.cc
4646 (FUNCTION_WITH_RTX_M_N_NO_F): New.
4648 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
4649 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
4650 * config/arm/arm_mve.h (vmvnq): Remove.
4654 (vmvnq_s16): Remove.
4655 (vmvnq_s32): Remove.
4656 (vmvnq_n_s16): Remove.
4657 (vmvnq_n_s32): Remove.
4659 (vmvnq_u16): Remove.
4660 (vmvnq_u32): Remove.
4661 (vmvnq_n_u16): Remove.
4662 (vmvnq_n_u32): Remove.
4663 (vmvnq_m_u8): Remove.
4664 (vmvnq_m_s8): Remove.
4665 (vmvnq_m_u16): Remove.
4666 (vmvnq_m_s16): Remove.
4667 (vmvnq_m_u32): Remove.
4668 (vmvnq_m_s32): Remove.
4669 (vmvnq_m_n_s16): Remove.
4670 (vmvnq_m_n_u16): Remove.
4671 (vmvnq_m_n_s32): Remove.
4672 (vmvnq_m_n_u32): Remove.
4673 (vmvnq_x_s8): Remove.
4674 (vmvnq_x_s16): Remove.
4675 (vmvnq_x_s32): Remove.
4676 (vmvnq_x_u8): Remove.
4677 (vmvnq_x_u16): Remove.
4678 (vmvnq_x_u32): Remove.
4679 (vmvnq_x_n_s16): Remove.
4680 (vmvnq_x_n_s32): Remove.
4681 (vmvnq_x_n_u16): Remove.
4682 (vmvnq_x_n_u32): Remove.
4683 (__arm_vmvnq_s8): Remove.
4684 (__arm_vmvnq_s16): Remove.
4685 (__arm_vmvnq_s32): Remove.
4686 (__arm_vmvnq_n_s16): Remove.
4687 (__arm_vmvnq_n_s32): Remove.
4688 (__arm_vmvnq_u8): Remove.
4689 (__arm_vmvnq_u16): Remove.
4690 (__arm_vmvnq_u32): Remove.
4691 (__arm_vmvnq_n_u16): Remove.
4692 (__arm_vmvnq_n_u32): Remove.
4693 (__arm_vmvnq_m_u8): Remove.
4694 (__arm_vmvnq_m_s8): Remove.
4695 (__arm_vmvnq_m_u16): Remove.
4696 (__arm_vmvnq_m_s16): Remove.
4697 (__arm_vmvnq_m_u32): Remove.
4698 (__arm_vmvnq_m_s32): Remove.
4699 (__arm_vmvnq_m_n_s16): Remove.
4700 (__arm_vmvnq_m_n_u16): Remove.
4701 (__arm_vmvnq_m_n_s32): Remove.
4702 (__arm_vmvnq_m_n_u32): Remove.
4703 (__arm_vmvnq_x_s8): Remove.
4704 (__arm_vmvnq_x_s16): Remove.
4705 (__arm_vmvnq_x_s32): Remove.
4706 (__arm_vmvnq_x_u8): Remove.
4707 (__arm_vmvnq_x_u16): Remove.
4708 (__arm_vmvnq_x_u32): Remove.
4709 (__arm_vmvnq_x_n_s16): Remove.
4710 (__arm_vmvnq_x_n_s32): Remove.
4711 (__arm_vmvnq_x_n_u16): Remove.
4712 (__arm_vmvnq_x_n_u32): Remove.
4713 (__arm_vmvnq): Remove.
4714 (__arm_vmvnq_m): Remove.
4715 (__arm_vmvnq_x): Remove.
4717 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4719 * config/arm/iterators.md (mve_insn): Add vmvn.
4720 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
4721 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4722 (mve_vmvnq_m_<supf><mode>): Rename into ...
4723 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4724 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
4725 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4727 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4729 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
4730 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
4732 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4734 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
4735 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
4736 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
4737 * config/arm/arm_mve.h (vbrsrq): Remove.
4740 (vbrsrq_n_f16): Remove.
4741 (vbrsrq_n_f32): Remove.
4742 (vbrsrq_n_u8): Remove.
4743 (vbrsrq_n_s8): Remove.
4744 (vbrsrq_n_u16): Remove.
4745 (vbrsrq_n_s16): Remove.
4746 (vbrsrq_n_u32): Remove.
4747 (vbrsrq_n_s32): Remove.
4748 (vbrsrq_m_n_s8): Remove.
4749 (vbrsrq_m_n_s32): Remove.
4750 (vbrsrq_m_n_s16): Remove.
4751 (vbrsrq_m_n_u8): Remove.
4752 (vbrsrq_m_n_u32): Remove.
4753 (vbrsrq_m_n_u16): Remove.
4754 (vbrsrq_m_n_f32): Remove.
4755 (vbrsrq_m_n_f16): Remove.
4756 (vbrsrq_x_n_s8): Remove.
4757 (vbrsrq_x_n_s16): Remove.
4758 (vbrsrq_x_n_s32): Remove.
4759 (vbrsrq_x_n_u8): Remove.
4760 (vbrsrq_x_n_u16): Remove.
4761 (vbrsrq_x_n_u32): Remove.
4762 (vbrsrq_x_n_f16): Remove.
4763 (vbrsrq_x_n_f32): Remove.
4764 (__arm_vbrsrq_n_u8): Remove.
4765 (__arm_vbrsrq_n_s8): Remove.
4766 (__arm_vbrsrq_n_u16): Remove.
4767 (__arm_vbrsrq_n_s16): Remove.
4768 (__arm_vbrsrq_n_u32): Remove.
4769 (__arm_vbrsrq_n_s32): Remove.
4770 (__arm_vbrsrq_m_n_s8): Remove.
4771 (__arm_vbrsrq_m_n_s32): Remove.
4772 (__arm_vbrsrq_m_n_s16): Remove.
4773 (__arm_vbrsrq_m_n_u8): Remove.
4774 (__arm_vbrsrq_m_n_u32): Remove.
4775 (__arm_vbrsrq_m_n_u16): Remove.
4776 (__arm_vbrsrq_x_n_s8): Remove.
4777 (__arm_vbrsrq_x_n_s16): Remove.
4778 (__arm_vbrsrq_x_n_s32): Remove.
4779 (__arm_vbrsrq_x_n_u8): Remove.
4780 (__arm_vbrsrq_x_n_u16): Remove.
4781 (__arm_vbrsrq_x_n_u32): Remove.
4782 (__arm_vbrsrq_n_f16): Remove.
4783 (__arm_vbrsrq_n_f32): Remove.
4784 (__arm_vbrsrq_m_n_f32): Remove.
4785 (__arm_vbrsrq_m_n_f16): Remove.
4786 (__arm_vbrsrq_x_n_f16): Remove.
4787 (__arm_vbrsrq_x_n_f32): Remove.
4788 (__arm_vbrsrq): Remove.
4789 (__arm_vbrsrq_m): Remove.
4790 (__arm_vbrsrq_x): Remove.
4792 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4794 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
4795 (mve_insn): Add vbrsr.
4796 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
4797 (@mve_<mve_insn>q_n_f<mode>): ... this.
4798 (mve_vbrsrq_n_<supf><mode>): Rename into ...
4799 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4800 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
4801 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4802 (mve_vbrsrq_m_n_f<mode>): Rename into ...
4803 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
4805 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4807 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
4808 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
4810 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4812 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
4813 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
4814 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
4815 * config/arm/arm_mve.h (vqshluq): Remove.
4816 (vqshluq_m): Remove.
4817 (vqshluq_n_s8): Remove.
4818 (vqshluq_n_s16): Remove.
4819 (vqshluq_n_s32): Remove.
4820 (vqshluq_m_n_s8): Remove.
4821 (vqshluq_m_n_s16): Remove.
4822 (vqshluq_m_n_s32): Remove.
4823 (__arm_vqshluq_n_s8): Remove.
4824 (__arm_vqshluq_n_s16): Remove.
4825 (__arm_vqshluq_n_s32): Remove.
4826 (__arm_vqshluq_m_n_s8): Remove.
4827 (__arm_vqshluq_m_n_s16): Remove.
4828 (__arm_vqshluq_m_n_s32): Remove.
4829 (__arm_vqshluq): Remove.
4830 (__arm_vqshluq_m): Remove.
4832 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4834 * config/arm/iterators.md (mve_insn): Add vqshlu.
4835 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
4836 (VQSHLUQ_M_N, VQSHLUQ_N): New.
4837 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
4838 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4839 (mve_vqshluq_m_n_s<mode>): Change name into ...
4840 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4842 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4844 * config/arm/arm-mve-builtins-shapes.cc
4845 (binary_lshift_unsigned): New.
4846 * config/arm/arm-mve-builtins-shapes.h
4847 (binary_lshift_unsigned): New.
4849 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4851 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
4852 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
4853 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
4854 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
4855 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
4856 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
4857 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
4858 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
4859 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
4860 (vrmlaldavhaxq): Remove.
4861 (vrmlsldavhaq): Remove.
4862 (vrmlsldavhaxq): Remove.
4863 (vrmlaldavhaq_p): Remove.
4864 (vrmlaldavhaxq_p): Remove.
4865 (vrmlsldavhaq_p): Remove.
4866 (vrmlsldavhaxq_p): Remove.
4867 (vrmlaldavhaq_s32): Remove.
4868 (vrmlaldavhaq_u32): Remove.
4869 (vrmlaldavhaxq_s32): Remove.
4870 (vrmlsldavhaq_s32): Remove.
4871 (vrmlsldavhaxq_s32): Remove.
4872 (vrmlaldavhaq_p_s32): Remove.
4873 (vrmlaldavhaq_p_u32): Remove.
4874 (vrmlaldavhaxq_p_s32): Remove.
4875 (vrmlsldavhaq_p_s32): Remove.
4876 (vrmlsldavhaxq_p_s32): Remove.
4877 (__arm_vrmlaldavhaq_s32): Remove.
4878 (__arm_vrmlaldavhaq_u32): Remove.
4879 (__arm_vrmlaldavhaxq_s32): Remove.
4880 (__arm_vrmlsldavhaq_s32): Remove.
4881 (__arm_vrmlsldavhaxq_s32): Remove.
4882 (__arm_vrmlaldavhaq_p_s32): Remove.
4883 (__arm_vrmlaldavhaq_p_u32): Remove.
4884 (__arm_vrmlaldavhaxq_p_s32): Remove.
4885 (__arm_vrmlsldavhaq_p_s32): Remove.
4886 (__arm_vrmlsldavhaxq_p_s32): Remove.
4887 (__arm_vrmlaldavhaq): Remove.
4888 (__arm_vrmlaldavhaxq): Remove.
4889 (__arm_vrmlsldavhaq): Remove.
4890 (__arm_vrmlsldavhaxq): Remove.
4891 (__arm_vrmlaldavhaq_p): Remove.
4892 (__arm_vrmlaldavhaxq_p): Remove.
4893 (__arm_vrmlsldavhaq_p): Remove.
4894 (__arm_vrmlsldavhaxq_p): Remove.
4896 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4898 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
4899 (MVE_VRMLxLDAVHAxQ_P): New.
4900 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
4902 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
4903 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
4905 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
4906 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
4907 (mve_vrmlsldavhaq_sv4si): Merge into ...
4908 (@mve_<mve_insn>q_<supf>v4si): ... this.
4909 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
4910 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
4911 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
4912 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4914 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4916 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
4917 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
4919 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
4920 * config/arm/arm_mve.h (vqdmulltq): Remove.
4921 (vqdmullbq): Remove.
4922 (vqdmullbq_m): Remove.
4923 (vqdmulltq_m): Remove.
4924 (vqdmulltq_s16): Remove.
4925 (vqdmulltq_n_s16): Remove.
4926 (vqdmullbq_s16): Remove.
4927 (vqdmullbq_n_s16): Remove.
4928 (vqdmulltq_s32): Remove.
4929 (vqdmulltq_n_s32): Remove.
4930 (vqdmullbq_s32): Remove.
4931 (vqdmullbq_n_s32): Remove.
4932 (vqdmullbq_m_n_s32): Remove.
4933 (vqdmullbq_m_n_s16): Remove.
4934 (vqdmullbq_m_s32): Remove.
4935 (vqdmullbq_m_s16): Remove.
4936 (vqdmulltq_m_n_s32): Remove.
4937 (vqdmulltq_m_n_s16): Remove.
4938 (vqdmulltq_m_s32): Remove.
4939 (vqdmulltq_m_s16): Remove.
4940 (__arm_vqdmulltq_s16): Remove.
4941 (__arm_vqdmulltq_n_s16): Remove.
4942 (__arm_vqdmullbq_s16): Remove.
4943 (__arm_vqdmullbq_n_s16): Remove.
4944 (__arm_vqdmulltq_s32): Remove.
4945 (__arm_vqdmulltq_n_s32): Remove.
4946 (__arm_vqdmullbq_s32): Remove.
4947 (__arm_vqdmullbq_n_s32): Remove.
4948 (__arm_vqdmullbq_m_n_s32): Remove.
4949 (__arm_vqdmullbq_m_n_s16): Remove.
4950 (__arm_vqdmullbq_m_s32): Remove.
4951 (__arm_vqdmullbq_m_s16): Remove.
4952 (__arm_vqdmulltq_m_n_s32): Remove.
4953 (__arm_vqdmulltq_m_n_s16): Remove.
4954 (__arm_vqdmulltq_m_s32): Remove.
4955 (__arm_vqdmulltq_m_s16): Remove.
4956 (__arm_vqdmulltq): Remove.
4957 (__arm_vqdmullbq): Remove.
4958 (__arm_vqdmullbq_m): Remove.
4959 (__arm_vqdmulltq_m): Remove.
4961 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4963 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
4964 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
4965 (mve_insn): Add vqdmullb, vqdmullt.
4966 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
4967 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
4969 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
4970 (mve_vqdmulltq_n_s<mode>): Merge into ...
4971 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4972 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
4973 (@mve_<mve_insn>q_<supf><mode>): ... this.
4974 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
4976 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4977 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
4978 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4980 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4982 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
4983 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
4985 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
4987 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
4988 Drop unused parameter.
4989 (riscv_select_multilib): Ditto.
4990 (riscv_compute_multilib): Update call site of
4991 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
4993 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
4995 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
4996 * config/riscv/riscv-protos.h (expand_vec_init): New function.
4997 * config/riscv/riscv-v.cc (class rvv_builder): New class.
4998 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
4999 (rvv_builder::get_merged_repeating_sequence): Ditto.
5000 (expand_vector_init_insert_elems): Ditto.
5001 (expand_vec_init): Ditto.
5002 * config/riscv/vector-iterators.md: New attribute.
5004 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
5006 * config/rs6000/rs6000-builtins.def
5007 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
5009 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
5010 xsiexpdpf to xsiexpdpf_di.
5011 * config/rs6000/vsx.md (xsiexpdp): Rename to...
5012 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
5013 replace TARGET_64BIT with TARGET_POWERPC64.
5014 (xsiexpdpf): Rename to...
5015 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
5016 replace TARGET_64BIT with TARGET_POWERPC64.
5018 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
5020 * config/rs6000/rs6000-builtins.def
5021 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
5023 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
5026 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
5028 * config/rs6000/rs6000-builtins.def
5029 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
5030 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
5032 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
5033 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
5035 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
5036 requirement when it has a 64-bit argument.
5038 2023-05-12 Pan Li <pan2.li@intel.com>
5039 Richard Sandiford <richard.sandiford@arm.com>
5040 Richard Biener <rguenther@suse.de>
5041 Jakub Jelinek <jakub@redhat.com>
5043 * mux-utils.h: Add overload operator == and != for pointer_mux.
5044 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
5045 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
5046 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
5047 (dv_as_decl): Ditto.
5048 (dv_as_opaque): Removed due to unnecessary.
5049 (struct variable_hasher): Take decl_or_value as compare_type.
5050 (variable_hasher::equal): Diito.
5051 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
5052 (dv_from_value): Ditto.
5053 (attrs_list_member): Ditto.
5055 (var_reg_decl_set): Ditto.
5056 (var_reg_delete_and_set): Ditto.
5057 (find_loc_in_1pdv): Ditto.
5058 (canonicalize_values_star): Ditto.
5059 (variable_post_merge_new_vals): Ditto.
5060 (dump_onepart_variable_differences): Ditto.
5061 (variable_different_p): Ditto.
5062 (set_slot_part): Ditto.
5063 (clobber_slot_part): Ditto.
5064 (clobber_variable_part): Ditto.
5066 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
5068 * match.pd: simplify vector shift + bit_and + multiply.
5070 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5072 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
5073 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
5074 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
5075 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
5076 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
5077 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
5078 * config/arm/arm-mve-builtins.cc
5079 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
5080 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
5081 * config/arm/arm_mve.h (vqrdmlashq): Remove.
5082 (vqrdmlahq): Remove.
5083 (vqdmlashq): Remove.
5089 (vqdmlashq_m): Remove.
5090 (vqdmlahq_m): Remove.
5091 (vqrdmlahq_m): Remove.
5092 (vqrdmlashq_m): Remove.
5093 (vmlasq_n_u8): Remove.
5094 (vmlaq_n_u8): Remove.
5095 (vqrdmlashq_n_s8): Remove.
5096 (vqrdmlahq_n_s8): Remove.
5097 (vqdmlahq_n_s8): Remove.
5098 (vqdmlashq_n_s8): Remove.
5099 (vmlasq_n_s8): Remove.
5100 (vmlaq_n_s8): Remove.
5101 (vmlasq_n_u16): Remove.
5102 (vmlaq_n_u16): Remove.
5103 (vqrdmlashq_n_s16): Remove.
5104 (vqrdmlahq_n_s16): Remove.
5105 (vqdmlashq_n_s16): Remove.
5106 (vqdmlahq_n_s16): Remove.
5107 (vmlasq_n_s16): Remove.
5108 (vmlaq_n_s16): Remove.
5109 (vmlasq_n_u32): Remove.
5110 (vmlaq_n_u32): Remove.
5111 (vqrdmlashq_n_s32): Remove.
5112 (vqrdmlahq_n_s32): Remove.
5113 (vqdmlashq_n_s32): Remove.
5114 (vqdmlahq_n_s32): Remove.
5115 (vmlasq_n_s32): Remove.
5116 (vmlaq_n_s32): Remove.
5117 (vmlaq_m_n_s8): Remove.
5118 (vmlaq_m_n_s32): Remove.
5119 (vmlaq_m_n_s16): Remove.
5120 (vmlaq_m_n_u8): Remove.
5121 (vmlaq_m_n_u32): Remove.
5122 (vmlaq_m_n_u16): Remove.
5123 (vmlasq_m_n_s8): Remove.
5124 (vmlasq_m_n_s32): Remove.
5125 (vmlasq_m_n_s16): Remove.
5126 (vmlasq_m_n_u8): Remove.
5127 (vmlasq_m_n_u32): Remove.
5128 (vmlasq_m_n_u16): Remove.
5129 (vqdmlashq_m_n_s8): Remove.
5130 (vqdmlashq_m_n_s32): Remove.
5131 (vqdmlashq_m_n_s16): Remove.
5132 (vqdmlahq_m_n_s8): Remove.
5133 (vqdmlahq_m_n_s32): Remove.
5134 (vqdmlahq_m_n_s16): Remove.
5135 (vqrdmlahq_m_n_s8): Remove.
5136 (vqrdmlahq_m_n_s32): Remove.
5137 (vqrdmlahq_m_n_s16): Remove.
5138 (vqrdmlashq_m_n_s8): Remove.
5139 (vqrdmlashq_m_n_s32): Remove.
5140 (vqrdmlashq_m_n_s16): Remove.
5141 (__arm_vmlasq_n_u8): Remove.
5142 (__arm_vmlaq_n_u8): Remove.
5143 (__arm_vqrdmlashq_n_s8): Remove.
5144 (__arm_vqdmlashq_n_s8): Remove.
5145 (__arm_vqrdmlahq_n_s8): Remove.
5146 (__arm_vqdmlahq_n_s8): Remove.
5147 (__arm_vmlasq_n_s8): Remove.
5148 (__arm_vmlaq_n_s8): Remove.
5149 (__arm_vmlasq_n_u16): Remove.
5150 (__arm_vmlaq_n_u16): Remove.
5151 (__arm_vqrdmlashq_n_s16): Remove.
5152 (__arm_vqdmlashq_n_s16): Remove.
5153 (__arm_vqrdmlahq_n_s16): Remove.
5154 (__arm_vqdmlahq_n_s16): Remove.
5155 (__arm_vmlasq_n_s16): Remove.
5156 (__arm_vmlaq_n_s16): Remove.
5157 (__arm_vmlasq_n_u32): Remove.
5158 (__arm_vmlaq_n_u32): Remove.
5159 (__arm_vqrdmlashq_n_s32): Remove.
5160 (__arm_vqdmlashq_n_s32): Remove.
5161 (__arm_vqrdmlahq_n_s32): Remove.
5162 (__arm_vqdmlahq_n_s32): Remove.
5163 (__arm_vmlasq_n_s32): Remove.
5164 (__arm_vmlaq_n_s32): Remove.
5165 (__arm_vmlaq_m_n_s8): Remove.
5166 (__arm_vmlaq_m_n_s32): Remove.
5167 (__arm_vmlaq_m_n_s16): Remove.
5168 (__arm_vmlaq_m_n_u8): Remove.
5169 (__arm_vmlaq_m_n_u32): Remove.
5170 (__arm_vmlaq_m_n_u16): Remove.
5171 (__arm_vmlasq_m_n_s8): Remove.
5172 (__arm_vmlasq_m_n_s32): Remove.
5173 (__arm_vmlasq_m_n_s16): Remove.
5174 (__arm_vmlasq_m_n_u8): Remove.
5175 (__arm_vmlasq_m_n_u32): Remove.
5176 (__arm_vmlasq_m_n_u16): Remove.
5177 (__arm_vqdmlahq_m_n_s8): Remove.
5178 (__arm_vqdmlahq_m_n_s32): Remove.
5179 (__arm_vqdmlahq_m_n_s16): Remove.
5180 (__arm_vqrdmlahq_m_n_s8): Remove.
5181 (__arm_vqrdmlahq_m_n_s32): Remove.
5182 (__arm_vqrdmlahq_m_n_s16): Remove.
5183 (__arm_vqrdmlashq_m_n_s8): Remove.
5184 (__arm_vqrdmlashq_m_n_s32): Remove.
5185 (__arm_vqrdmlashq_m_n_s16): Remove.
5186 (__arm_vqdmlashq_m_n_s8): Remove.
5187 (__arm_vqdmlashq_m_n_s16): Remove.
5188 (__arm_vqdmlashq_m_n_s32): Remove.
5189 (__arm_vmlasq): Remove.
5190 (__arm_vmlaq): Remove.
5191 (__arm_vqrdmlashq): Remove.
5192 (__arm_vqdmlashq): Remove.
5193 (__arm_vqrdmlahq): Remove.
5194 (__arm_vqdmlahq): Remove.
5195 (__arm_vmlaq_m): Remove.
5196 (__arm_vmlasq_m): Remove.
5197 (__arm_vqdmlahq_m): Remove.
5198 (__arm_vqrdmlahq_m): Remove.
5199 (__arm_vqrdmlashq_m): Remove.
5200 (__arm_vqdmlashq_m): Remove.
5202 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5204 * config/arm/iterators.md (MVE_VMLxQ_N): New.
5205 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
5207 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
5209 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
5210 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
5211 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
5212 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
5213 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5215 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5217 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
5218 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
5220 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5222 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
5223 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5225 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
5226 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5228 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
5229 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5231 * config/arm/arm-mve-builtins.cc
5232 (function_instance::has_inactive_argument): Handle vqrdmladhq,
5233 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
5234 vqdmlsdhq, vqdmlsdhxq.
5235 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
5236 (vqrdmlsdhq): Remove.
5237 (vqrdmladhxq): Remove.
5238 (vqrdmladhq): Remove.
5239 (vqdmlsdhxq): Remove.
5240 (vqdmlsdhq): Remove.
5241 (vqdmladhxq): Remove.
5242 (vqdmladhq): Remove.
5243 (vqdmladhq_m): Remove.
5244 (vqdmladhxq_m): Remove.
5245 (vqdmlsdhq_m): Remove.
5246 (vqdmlsdhxq_m): Remove.
5247 (vqrdmladhq_m): Remove.
5248 (vqrdmladhxq_m): Remove.
5249 (vqrdmlsdhq_m): Remove.
5250 (vqrdmlsdhxq_m): Remove.
5251 (vqrdmlsdhxq_s8): Remove.
5252 (vqrdmlsdhq_s8): Remove.
5253 (vqrdmladhxq_s8): Remove.
5254 (vqrdmladhq_s8): Remove.
5255 (vqdmlsdhxq_s8): Remove.
5256 (vqdmlsdhq_s8): Remove.
5257 (vqdmladhxq_s8): Remove.
5258 (vqdmladhq_s8): Remove.
5259 (vqrdmlsdhxq_s16): Remove.
5260 (vqrdmlsdhq_s16): Remove.
5261 (vqrdmladhxq_s16): Remove.
5262 (vqrdmladhq_s16): Remove.
5263 (vqdmlsdhxq_s16): Remove.
5264 (vqdmlsdhq_s16): Remove.
5265 (vqdmladhxq_s16): Remove.
5266 (vqdmladhq_s16): Remove.
5267 (vqrdmlsdhxq_s32): Remove.
5268 (vqrdmlsdhq_s32): Remove.
5269 (vqrdmladhxq_s32): Remove.
5270 (vqrdmladhq_s32): Remove.
5271 (vqdmlsdhxq_s32): Remove.
5272 (vqdmlsdhq_s32): Remove.
5273 (vqdmladhxq_s32): Remove.
5274 (vqdmladhq_s32): Remove.
5275 (vqdmladhq_m_s8): Remove.
5276 (vqdmladhq_m_s32): Remove.
5277 (vqdmladhq_m_s16): Remove.
5278 (vqdmladhxq_m_s8): Remove.
5279 (vqdmladhxq_m_s32): Remove.
5280 (vqdmladhxq_m_s16): Remove.
5281 (vqdmlsdhq_m_s8): Remove.
5282 (vqdmlsdhq_m_s32): Remove.
5283 (vqdmlsdhq_m_s16): Remove.
5284 (vqdmlsdhxq_m_s8): Remove.
5285 (vqdmlsdhxq_m_s32): Remove.
5286 (vqdmlsdhxq_m_s16): Remove.
5287 (vqrdmladhq_m_s8): Remove.
5288 (vqrdmladhq_m_s32): Remove.
5289 (vqrdmladhq_m_s16): Remove.
5290 (vqrdmladhxq_m_s8): Remove.
5291 (vqrdmladhxq_m_s32): Remove.
5292 (vqrdmladhxq_m_s16): Remove.
5293 (vqrdmlsdhq_m_s8): Remove.
5294 (vqrdmlsdhq_m_s32): Remove.
5295 (vqrdmlsdhq_m_s16): Remove.
5296 (vqrdmlsdhxq_m_s8): Remove.
5297 (vqrdmlsdhxq_m_s32): Remove.
5298 (vqrdmlsdhxq_m_s16): Remove.
5299 (__arm_vqrdmlsdhxq_s8): Remove.
5300 (__arm_vqrdmlsdhq_s8): Remove.
5301 (__arm_vqrdmladhxq_s8): Remove.
5302 (__arm_vqrdmladhq_s8): Remove.
5303 (__arm_vqdmlsdhxq_s8): Remove.
5304 (__arm_vqdmlsdhq_s8): Remove.
5305 (__arm_vqdmladhxq_s8): Remove.
5306 (__arm_vqdmladhq_s8): Remove.
5307 (__arm_vqrdmlsdhxq_s16): Remove.
5308 (__arm_vqrdmlsdhq_s16): Remove.
5309 (__arm_vqrdmladhxq_s16): Remove.
5310 (__arm_vqrdmladhq_s16): Remove.
5311 (__arm_vqdmlsdhxq_s16): Remove.
5312 (__arm_vqdmlsdhq_s16): Remove.
5313 (__arm_vqdmladhxq_s16): Remove.
5314 (__arm_vqdmladhq_s16): Remove.
5315 (__arm_vqrdmlsdhxq_s32): Remove.
5316 (__arm_vqrdmlsdhq_s32): Remove.
5317 (__arm_vqrdmladhxq_s32): Remove.
5318 (__arm_vqrdmladhq_s32): Remove.
5319 (__arm_vqdmlsdhxq_s32): Remove.
5320 (__arm_vqdmlsdhq_s32): Remove.
5321 (__arm_vqdmladhxq_s32): Remove.
5322 (__arm_vqdmladhq_s32): Remove.
5323 (__arm_vqdmladhq_m_s8): Remove.
5324 (__arm_vqdmladhq_m_s32): Remove.
5325 (__arm_vqdmladhq_m_s16): Remove.
5326 (__arm_vqdmladhxq_m_s8): Remove.
5327 (__arm_vqdmladhxq_m_s32): Remove.
5328 (__arm_vqdmladhxq_m_s16): Remove.
5329 (__arm_vqdmlsdhq_m_s8): Remove.
5330 (__arm_vqdmlsdhq_m_s32): Remove.
5331 (__arm_vqdmlsdhq_m_s16): Remove.
5332 (__arm_vqdmlsdhxq_m_s8): Remove.
5333 (__arm_vqdmlsdhxq_m_s32): Remove.
5334 (__arm_vqdmlsdhxq_m_s16): Remove.
5335 (__arm_vqrdmladhq_m_s8): Remove.
5336 (__arm_vqrdmladhq_m_s32): Remove.
5337 (__arm_vqrdmladhq_m_s16): Remove.
5338 (__arm_vqrdmladhxq_m_s8): Remove.
5339 (__arm_vqrdmladhxq_m_s32): Remove.
5340 (__arm_vqrdmladhxq_m_s16): Remove.
5341 (__arm_vqrdmlsdhq_m_s8): Remove.
5342 (__arm_vqrdmlsdhq_m_s32): Remove.
5343 (__arm_vqrdmlsdhq_m_s16): Remove.
5344 (__arm_vqrdmlsdhxq_m_s8): Remove.
5345 (__arm_vqrdmlsdhxq_m_s32): Remove.
5346 (__arm_vqrdmlsdhxq_m_s16): Remove.
5347 (__arm_vqrdmlsdhxq): Remove.
5348 (__arm_vqrdmlsdhq): Remove.
5349 (__arm_vqrdmladhxq): Remove.
5350 (__arm_vqrdmladhq): Remove.
5351 (__arm_vqdmlsdhxq): Remove.
5352 (__arm_vqdmlsdhq): Remove.
5353 (__arm_vqdmladhxq): Remove.
5354 (__arm_vqdmladhq): Remove.
5355 (__arm_vqdmladhq_m): Remove.
5356 (__arm_vqdmladhxq_m): Remove.
5357 (__arm_vqdmlsdhq_m): Remove.
5358 (__arm_vqdmlsdhxq_m): Remove.
5359 (__arm_vqrdmladhq_m): Remove.
5360 (__arm_vqrdmladhxq_m): Remove.
5361 (__arm_vqrdmlsdhq_m): Remove.
5362 (__arm_vqrdmlsdhxq_m): Remove.
5364 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5366 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
5367 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
5368 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
5369 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
5370 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
5371 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
5372 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
5373 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
5374 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
5375 (mve_vqdmladhq_s<mode>): Merge into ...
5376 (@mve_<mve_insn>q_<supf><mode>): ... this.
5378 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5380 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
5381 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
5383 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5385 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
5386 (vmlsldavaq, vmlsldavaxq): New.
5387 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
5388 (vmlsldavaq, vmlsldavaxq): New.
5389 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
5390 (vmlsldavaq, vmlsldavaxq): New.
5391 * config/arm/arm_mve.h (vmlaldavaq): Remove.
5392 (vmlaldavaxq): Remove.
5393 (vmlsldavaq): Remove.
5394 (vmlsldavaxq): Remove.
5395 (vmlaldavaq_p): Remove.
5396 (vmlaldavaxq_p): Remove.
5397 (vmlsldavaq_p): Remove.
5398 (vmlsldavaxq_p): Remove.
5399 (vmlaldavaq_s16): Remove.
5400 (vmlaldavaxq_s16): Remove.
5401 (vmlsldavaq_s16): Remove.
5402 (vmlsldavaxq_s16): Remove.
5403 (vmlaldavaq_u16): Remove.
5404 (vmlaldavaq_s32): Remove.
5405 (vmlaldavaxq_s32): Remove.
5406 (vmlsldavaq_s32): Remove.
5407 (vmlsldavaxq_s32): Remove.
5408 (vmlaldavaq_u32): Remove.
5409 (vmlaldavaq_p_s32): Remove.
5410 (vmlaldavaq_p_s16): Remove.
5411 (vmlaldavaq_p_u32): Remove.
5412 (vmlaldavaq_p_u16): Remove.
5413 (vmlaldavaxq_p_s32): Remove.
5414 (vmlaldavaxq_p_s16): Remove.
5415 (vmlsldavaq_p_s32): Remove.
5416 (vmlsldavaq_p_s16): Remove.
5417 (vmlsldavaxq_p_s32): Remove.
5418 (vmlsldavaxq_p_s16): Remove.
5419 (__arm_vmlaldavaq_s16): Remove.
5420 (__arm_vmlaldavaxq_s16): Remove.
5421 (__arm_vmlsldavaq_s16): Remove.
5422 (__arm_vmlsldavaxq_s16): Remove.
5423 (__arm_vmlaldavaq_u16): Remove.
5424 (__arm_vmlaldavaq_s32): Remove.
5425 (__arm_vmlaldavaxq_s32): Remove.
5426 (__arm_vmlsldavaq_s32): Remove.
5427 (__arm_vmlsldavaxq_s32): Remove.
5428 (__arm_vmlaldavaq_u32): Remove.
5429 (__arm_vmlaldavaq_p_s32): Remove.
5430 (__arm_vmlaldavaq_p_s16): Remove.
5431 (__arm_vmlaldavaq_p_u32): Remove.
5432 (__arm_vmlaldavaq_p_u16): Remove.
5433 (__arm_vmlaldavaxq_p_s32): Remove.
5434 (__arm_vmlaldavaxq_p_s16): Remove.
5435 (__arm_vmlsldavaq_p_s32): Remove.
5436 (__arm_vmlsldavaq_p_s16): Remove.
5437 (__arm_vmlsldavaxq_p_s32): Remove.
5438 (__arm_vmlsldavaxq_p_s16): Remove.
5439 (__arm_vmlaldavaq): Remove.
5440 (__arm_vmlaldavaxq): Remove.
5441 (__arm_vmlsldavaq): Remove.
5442 (__arm_vmlsldavaxq): Remove.
5443 (__arm_vmlaldavaq_p): Remove.
5444 (__arm_vmlaldavaxq_p): Remove.
5445 (__arm_vmlsldavaq_p): Remove.
5446 (__arm_vmlsldavaxq_p): Remove.
5448 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5450 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
5452 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
5453 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
5454 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
5455 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
5456 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
5457 (mve_vmlaldavaxq_s<mode>): Merge into ...
5458 (@mve_<mve_insn>q_<supf><mode>): ... this.
5459 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
5460 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
5462 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5464 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5466 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
5467 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
5469 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5471 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
5472 (vrmlsldavhq, vrmlsldavhxq): New.
5473 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
5474 (vrmlsldavhq, vrmlsldavhxq): New.
5475 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
5476 (vrmlsldavhq, vrmlsldavhxq): New.
5477 * config/arm/arm-mve-builtins-functions.h
5478 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
5479 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
5480 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
5481 (vrmlsldavhxq): Remove.
5482 (vrmlsldavhq): Remove.
5483 (vrmlaldavhxq): Remove.
5484 (vrmlaldavhq_p): Remove.
5485 (vrmlaldavhxq_p): Remove.
5486 (vrmlsldavhq_p): Remove.
5487 (vrmlsldavhxq_p): Remove.
5488 (vrmlaldavhq_u32): Remove.
5489 (vrmlsldavhxq_s32): Remove.
5490 (vrmlsldavhq_s32): Remove.
5491 (vrmlaldavhxq_s32): Remove.
5492 (vrmlaldavhq_s32): Remove.
5493 (vrmlaldavhq_p_s32): Remove.
5494 (vrmlaldavhxq_p_s32): Remove.
5495 (vrmlsldavhq_p_s32): Remove.
5496 (vrmlsldavhxq_p_s32): Remove.
5497 (vrmlaldavhq_p_u32): Remove.
5498 (__arm_vrmlaldavhq_u32): Remove.
5499 (__arm_vrmlsldavhxq_s32): Remove.
5500 (__arm_vrmlsldavhq_s32): Remove.
5501 (__arm_vrmlaldavhxq_s32): Remove.
5502 (__arm_vrmlaldavhq_s32): Remove.
5503 (__arm_vrmlaldavhq_p_s32): Remove.
5504 (__arm_vrmlaldavhxq_p_s32): Remove.
5505 (__arm_vrmlsldavhq_p_s32): Remove.
5506 (__arm_vrmlsldavhxq_p_s32): Remove.
5507 (__arm_vrmlaldavhq_p_u32): Remove.
5508 (__arm_vrmlaldavhq): Remove.
5509 (__arm_vrmlsldavhxq): Remove.
5510 (__arm_vrmlsldavhq): Remove.
5511 (__arm_vrmlaldavhxq): Remove.
5512 (__arm_vrmlaldavhq_p): Remove.
5513 (__arm_vrmlaldavhxq_p): Remove.
5514 (__arm_vrmlsldavhq_p): Remove.
5515 (__arm_vrmlsldavhxq_p): Remove.
5517 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5519 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
5521 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
5522 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
5523 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
5524 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
5525 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
5526 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
5527 (@mve_<mve_insn>q_<supf>v4si): ... this.
5528 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
5529 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
5531 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
5533 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5535 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
5536 (vmlsldavq, vmlsldavxq): New.
5537 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
5538 (vmlsldavq, vmlsldavxq): New.
5539 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
5540 (vmlsldavq, vmlsldavxq): New.
5541 * config/arm/arm_mve.h (vmlaldavq): Remove.
5542 (vmlsldavxq): Remove.
5543 (vmlsldavq): Remove.
5544 (vmlaldavxq): Remove.
5545 (vmlaldavq_p): Remove.
5546 (vmlaldavxq_p): Remove.
5547 (vmlsldavq_p): Remove.
5548 (vmlsldavxq_p): Remove.
5549 (vmlaldavq_u16): Remove.
5550 (vmlsldavxq_s16): Remove.
5551 (vmlsldavq_s16): Remove.
5552 (vmlaldavxq_s16): Remove.
5553 (vmlaldavq_s16): Remove.
5554 (vmlaldavq_u32): Remove.
5555 (vmlsldavxq_s32): Remove.
5556 (vmlsldavq_s32): Remove.
5557 (vmlaldavxq_s32): Remove.
5558 (vmlaldavq_s32): Remove.
5559 (vmlaldavq_p_s16): Remove.
5560 (vmlaldavxq_p_s16): Remove.
5561 (vmlsldavq_p_s16): Remove.
5562 (vmlsldavxq_p_s16): Remove.
5563 (vmlaldavq_p_u16): Remove.
5564 (vmlaldavq_p_s32): Remove.
5565 (vmlaldavxq_p_s32): Remove.
5566 (vmlsldavq_p_s32): Remove.
5567 (vmlsldavxq_p_s32): Remove.
5568 (vmlaldavq_p_u32): Remove.
5569 (__arm_vmlaldavq_u16): Remove.
5570 (__arm_vmlsldavxq_s16): Remove.
5571 (__arm_vmlsldavq_s16): Remove.
5572 (__arm_vmlaldavxq_s16): Remove.
5573 (__arm_vmlaldavq_s16): Remove.
5574 (__arm_vmlaldavq_u32): Remove.
5575 (__arm_vmlsldavxq_s32): Remove.
5576 (__arm_vmlsldavq_s32): Remove.
5577 (__arm_vmlaldavxq_s32): Remove.
5578 (__arm_vmlaldavq_s32): Remove.
5579 (__arm_vmlaldavq_p_s16): Remove.
5580 (__arm_vmlaldavxq_p_s16): Remove.
5581 (__arm_vmlsldavq_p_s16): Remove.
5582 (__arm_vmlsldavxq_p_s16): Remove.
5583 (__arm_vmlaldavq_p_u16): Remove.
5584 (__arm_vmlaldavq_p_s32): Remove.
5585 (__arm_vmlaldavxq_p_s32): Remove.
5586 (__arm_vmlsldavq_p_s32): Remove.
5587 (__arm_vmlsldavxq_p_s32): Remove.
5588 (__arm_vmlaldavq_p_u32): Remove.
5589 (__arm_vmlaldavq): Remove.
5590 (__arm_vmlsldavxq): Remove.
5591 (__arm_vmlsldavq): Remove.
5592 (__arm_vmlaldavxq): Remove.
5593 (__arm_vmlaldavq_p): Remove.
5594 (__arm_vmlaldavxq_p): Remove.
5595 (__arm_vmlsldavq_p): Remove.
5596 (__arm_vmlsldavxq_p): Remove.
5598 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5600 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
5601 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
5602 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
5603 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
5604 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
5605 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
5606 (mve_vmlsldavxq_s<mode>): Merge into ...
5607 (@mve_<mve_insn>q_<supf><mode>): ... this.
5608 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
5609 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
5611 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5613 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5615 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
5616 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
5618 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5620 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
5621 * config/arm/arm-mve-builtins-base.def (vabavq): New.
5622 * config/arm/arm-mve-builtins-base.h (vabavq): New.
5623 * config/arm/arm_mve.h (vabavq): Remove.
5625 (vabavq_s8): Remove.
5626 (vabavq_s16): Remove.
5627 (vabavq_s32): Remove.
5628 (vabavq_u8): Remove.
5629 (vabavq_u16): Remove.
5630 (vabavq_u32): Remove.
5631 (vabavq_p_s8): Remove.
5632 (vabavq_p_u8): Remove.
5633 (vabavq_p_s16): Remove.
5634 (vabavq_p_u16): Remove.
5635 (vabavq_p_s32): Remove.
5636 (vabavq_p_u32): Remove.
5637 (__arm_vabavq_s8): Remove.
5638 (__arm_vabavq_s16): Remove.
5639 (__arm_vabavq_s32): Remove.
5640 (__arm_vabavq_u8): Remove.
5641 (__arm_vabavq_u16): Remove.
5642 (__arm_vabavq_u32): Remove.
5643 (__arm_vabavq_p_s8): Remove.
5644 (__arm_vabavq_p_u8): Remove.
5645 (__arm_vabavq_p_s16): Remove.
5646 (__arm_vabavq_p_u16): Remove.
5647 (__arm_vabavq_p_s32): Remove.
5648 (__arm_vabavq_p_u32): Remove.
5649 (__arm_vabavq): Remove.
5650 (__arm_vabavq_p): Remove.
5652 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5654 * config/arm/iterators.md (mve_insn): Add vabav.
5655 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
5656 (@mve_<mve_insn>q_<supf><mode>): ... this,.
5657 (mve_vabavq_p_<supf><mode>): Rename into ...
5658 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
5660 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5662 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
5663 (vmlsdavaq, vmlsdavaxq): New.
5664 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
5665 (vmlsdavaq, vmlsdavaxq): New.
5666 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
5667 (vmlsdavaq, vmlsdavaxq): New.
5668 * config/arm/arm_mve.h (vmladavaq): Remove.
5669 (vmlsdavaxq): Remove.
5670 (vmlsdavaq): Remove.
5671 (vmladavaxq): Remove.
5672 (vmladavaq_p): Remove.
5673 (vmladavaxq_p): Remove.
5674 (vmlsdavaq_p): Remove.
5675 (vmlsdavaxq_p): Remove.
5676 (vmladavaq_u8): Remove.
5677 (vmlsdavaxq_s8): Remove.
5678 (vmlsdavaq_s8): Remove.
5679 (vmladavaxq_s8): Remove.
5680 (vmladavaq_s8): Remove.
5681 (vmladavaq_u16): Remove.
5682 (vmlsdavaxq_s16): Remove.
5683 (vmlsdavaq_s16): Remove.
5684 (vmladavaxq_s16): Remove.
5685 (vmladavaq_s16): Remove.
5686 (vmladavaq_u32): Remove.
5687 (vmlsdavaxq_s32): Remove.
5688 (vmlsdavaq_s32): Remove.
5689 (vmladavaxq_s32): Remove.
5690 (vmladavaq_s32): Remove.
5691 (vmladavaq_p_s8): Remove.
5692 (vmladavaq_p_s32): Remove.
5693 (vmladavaq_p_s16): Remove.
5694 (vmladavaq_p_u8): Remove.
5695 (vmladavaq_p_u32): Remove.
5696 (vmladavaq_p_u16): Remove.
5697 (vmladavaxq_p_s8): Remove.
5698 (vmladavaxq_p_s32): Remove.
5699 (vmladavaxq_p_s16): Remove.
5700 (vmlsdavaq_p_s8): Remove.
5701 (vmlsdavaq_p_s32): Remove.
5702 (vmlsdavaq_p_s16): Remove.
5703 (vmlsdavaxq_p_s8): Remove.
5704 (vmlsdavaxq_p_s32): Remove.
5705 (vmlsdavaxq_p_s16): Remove.
5706 (__arm_vmladavaq_u8): Remove.
5707 (__arm_vmlsdavaxq_s8): Remove.
5708 (__arm_vmlsdavaq_s8): Remove.
5709 (__arm_vmladavaxq_s8): Remove.
5710 (__arm_vmladavaq_s8): Remove.
5711 (__arm_vmladavaq_u16): Remove.
5712 (__arm_vmlsdavaxq_s16): Remove.
5713 (__arm_vmlsdavaq_s16): Remove.
5714 (__arm_vmladavaxq_s16): Remove.
5715 (__arm_vmladavaq_s16): Remove.
5716 (__arm_vmladavaq_u32): Remove.
5717 (__arm_vmlsdavaxq_s32): Remove.
5718 (__arm_vmlsdavaq_s32): Remove.
5719 (__arm_vmladavaxq_s32): Remove.
5720 (__arm_vmladavaq_s32): Remove.
5721 (__arm_vmladavaq_p_s8): Remove.
5722 (__arm_vmladavaq_p_s32): Remove.
5723 (__arm_vmladavaq_p_s16): Remove.
5724 (__arm_vmladavaq_p_u8): Remove.
5725 (__arm_vmladavaq_p_u32): Remove.
5726 (__arm_vmladavaq_p_u16): Remove.
5727 (__arm_vmladavaxq_p_s8): Remove.
5728 (__arm_vmladavaxq_p_s32): Remove.
5729 (__arm_vmladavaxq_p_s16): Remove.
5730 (__arm_vmlsdavaq_p_s8): Remove.
5731 (__arm_vmlsdavaq_p_s32): Remove.
5732 (__arm_vmlsdavaq_p_s16): Remove.
5733 (__arm_vmlsdavaxq_p_s8): Remove.
5734 (__arm_vmlsdavaxq_p_s32): Remove.
5735 (__arm_vmlsdavaxq_p_s16): Remove.
5736 (__arm_vmladavaq): Remove.
5737 (__arm_vmlsdavaxq): Remove.
5738 (__arm_vmlsdavaq): Remove.
5739 (__arm_vmladavaxq): Remove.
5740 (__arm_vmladavaq_p): Remove.
5741 (__arm_vmladavaxq_p): Remove.
5742 (__arm_vmlsdavaq_p): Remove.
5743 (__arm_vmlsdavaxq_p): Remove.
5745 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5747 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
5748 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
5750 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5752 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
5753 (vmlsdavq, vmlsdavxq): New.
5754 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
5755 (vmlsdavq, vmlsdavxq): New.
5756 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
5757 (vmlsdavq, vmlsdavxq): New.
5758 * config/arm/arm_mve.h (vmladavq): Remove.
5759 (vmlsdavxq): Remove.
5761 (vmladavxq): Remove.
5762 (vmladavq_p): Remove.
5763 (vmlsdavxq_p): Remove.
5764 (vmlsdavq_p): Remove.
5765 (vmladavxq_p): Remove.
5766 (vmladavq_u8): Remove.
5767 (vmlsdavxq_s8): Remove.
5768 (vmlsdavq_s8): Remove.
5769 (vmladavxq_s8): Remove.
5770 (vmladavq_s8): Remove.
5771 (vmladavq_u16): Remove.
5772 (vmlsdavxq_s16): Remove.
5773 (vmlsdavq_s16): Remove.
5774 (vmladavxq_s16): Remove.
5775 (vmladavq_s16): Remove.
5776 (vmladavq_u32): Remove.
5777 (vmlsdavxq_s32): Remove.
5778 (vmlsdavq_s32): Remove.
5779 (vmladavxq_s32): Remove.
5780 (vmladavq_s32): Remove.
5781 (vmladavq_p_u8): Remove.
5782 (vmlsdavxq_p_s8): Remove.
5783 (vmlsdavq_p_s8): Remove.
5784 (vmladavxq_p_s8): Remove.
5785 (vmladavq_p_s8): Remove.
5786 (vmladavq_p_u16): Remove.
5787 (vmlsdavxq_p_s16): Remove.
5788 (vmlsdavq_p_s16): Remove.
5789 (vmladavxq_p_s16): Remove.
5790 (vmladavq_p_s16): Remove.
5791 (vmladavq_p_u32): Remove.
5792 (vmlsdavxq_p_s32): Remove.
5793 (vmlsdavq_p_s32): Remove.
5794 (vmladavxq_p_s32): Remove.
5795 (vmladavq_p_s32): Remove.
5796 (__arm_vmladavq_u8): Remove.
5797 (__arm_vmlsdavxq_s8): Remove.
5798 (__arm_vmlsdavq_s8): Remove.
5799 (__arm_vmladavxq_s8): Remove.
5800 (__arm_vmladavq_s8): Remove.
5801 (__arm_vmladavq_u16): Remove.
5802 (__arm_vmlsdavxq_s16): Remove.
5803 (__arm_vmlsdavq_s16): Remove.
5804 (__arm_vmladavxq_s16): Remove.
5805 (__arm_vmladavq_s16): Remove.
5806 (__arm_vmladavq_u32): Remove.
5807 (__arm_vmlsdavxq_s32): Remove.
5808 (__arm_vmlsdavq_s32): Remove.
5809 (__arm_vmladavxq_s32): Remove.
5810 (__arm_vmladavq_s32): Remove.
5811 (__arm_vmladavq_p_u8): Remove.
5812 (__arm_vmlsdavxq_p_s8): Remove.
5813 (__arm_vmlsdavq_p_s8): Remove.
5814 (__arm_vmladavxq_p_s8): Remove.
5815 (__arm_vmladavq_p_s8): Remove.
5816 (__arm_vmladavq_p_u16): Remove.
5817 (__arm_vmlsdavxq_p_s16): Remove.
5818 (__arm_vmlsdavq_p_s16): Remove.
5819 (__arm_vmladavxq_p_s16): Remove.
5820 (__arm_vmladavq_p_s16): Remove.
5821 (__arm_vmladavq_p_u32): Remove.
5822 (__arm_vmlsdavxq_p_s32): Remove.
5823 (__arm_vmlsdavq_p_s32): Remove.
5824 (__arm_vmladavxq_p_s32): Remove.
5825 (__arm_vmladavq_p_s32): Remove.
5826 (__arm_vmladavq): Remove.
5827 (__arm_vmlsdavxq): Remove.
5828 (__arm_vmlsdavq): Remove.
5829 (__arm_vmladavxq): Remove.
5830 (__arm_vmladavq_p): Remove.
5831 (__arm_vmlsdavxq_p): Remove.
5832 (__arm_vmlsdavq_p): Remove.
5833 (__arm_vmladavxq_p): Remove.
5835 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5837 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
5838 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
5839 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
5840 vmlsdavax, vmlsdav, vmlsdavx.
5841 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
5842 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
5843 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
5845 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
5846 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
5847 (mve_vmlsdavxq_s<mode>): Merge into ...
5848 (@mve_<mve_insn>q_<supf><mode>): ... this.
5849 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
5850 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
5852 (@mve_<mve_insn>q_<supf><mode>): ... this.
5853 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
5854 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
5855 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5856 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
5857 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
5859 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5861 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5863 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
5864 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
5866 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5868 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
5869 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
5870 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
5871 * config/arm/arm_mve.h (vaddlvaq): Remove.
5872 (vaddlvaq_p): Remove.
5873 (vaddlvaq_u32): Remove.
5874 (vaddlvaq_s32): Remove.
5875 (vaddlvaq_p_s32): Remove.
5876 (vaddlvaq_p_u32): Remove.
5877 (__arm_vaddlvaq_u32): Remove.
5878 (__arm_vaddlvaq_s32): Remove.
5879 (__arm_vaddlvaq_p_s32): Remove.
5880 (__arm_vaddlvaq_p_u32): Remove.
5881 (__arm_vaddlvaq): Remove.
5882 (__arm_vaddlvaq_p): Remove.
5884 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5886 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
5887 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
5889 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5891 * config/arm/iterators.md (mve_insn): Add vaddlva.
5892 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
5893 (@mve_<mve_insn>q_<supf>v4si): ... this.
5894 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
5895 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
5897 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
5900 * config/i386/i386.cc (ix86_widen_mult_cost):
5901 Handle V4HImode and V2SImode.
5903 2023-05-11 Andrew Pinski <apinski@marvell.com>
5905 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
5906 defined by a phi node with more than one uses, allow for the
5907 only uses are in that same defining statement.
5909 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
5911 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
5914 2023-05-11 Pan Li <pan2.li@intel.com>
5916 * config/riscv/vector.md: Add comments for simplifying to vmset.
5918 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
5920 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
5922 (v<optab><mode>3): Add vector shift pattern.
5923 * config/riscv/vector-iterators.md: New iterator.
5925 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
5927 * config/riscv/autovec.md: Use renamed functions.
5928 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
5929 (emit_vlmax_reg_op): To this.
5930 (emit_nonvlmax_op): Rename.
5931 (emit_len_op): To this.
5932 (emit_nonvlmax_binop): Rename.
5933 (emit_len_binop): To this.
5934 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
5935 (emit_pred_binop): Remove vlmax_p.
5936 (emit_vlmax_op): Rename.
5937 (emit_vlmax_reg_op): To this.
5938 (emit_nonvlmax_op): Rename.
5939 (emit_len_op): To this.
5940 (emit_nonvlmax_binop): Rename.
5941 (emit_len_binop): To this.
5942 (sew64_scalar_helper): Use renamed functions.
5943 (expand_tuple_move): Use renamed functions.
5944 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
5946 * config/riscv/vector.md: Use renamed functions.
5948 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
5949 Michael Collison <collison@rivosinc.com>
5951 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
5952 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
5953 * config/riscv/riscv-v.cc (emit_pred_op): New function.
5954 (set_expander_dest_and_mask): New function.
5955 (emit_pred_binop): New function.
5956 (emit_nonvlmax_binop): New function.
5958 2023-05-11 Pan Li <pan2.li@intel.com>
5960 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
5961 * gimple-loop-interchange.cc
5962 (tree_loop_interchange::map_inductions_to_loop): Ditto.
5963 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
5964 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
5965 * tree-ssa-loop-manip.cc (create_iv): Ditto.
5966 (tree_transform_and_unroll_loop): Ditto.
5967 (canonicalize_loop_ivs): Ditto.
5968 * tree-ssa-loop-manip.h (create_iv): Ditto.
5969 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
5970 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
5972 (vect_set_loop_condition_normal): Ditto.
5973 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
5974 * tree-vect-stmts.cc (vectorizable_store): Ditto.
5975 (vectorizable_load): Ditto.
5977 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5979 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
5980 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
5981 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
5982 * config/arm/arm_mve.h (vmovlbq): Remove.
5984 (vmovlbq_m): Remove.
5985 (vmovltq_m): Remove.
5986 (vmovlbq_x): Remove.
5987 (vmovltq_x): Remove.
5988 (vmovlbq_s8): Remove.
5989 (vmovlbq_s16): Remove.
5990 (vmovltq_s8): Remove.
5991 (vmovltq_s16): Remove.
5992 (vmovltq_u8): Remove.
5993 (vmovltq_u16): Remove.
5994 (vmovlbq_u8): Remove.
5995 (vmovlbq_u16): Remove.
5996 (vmovlbq_m_s8): Remove.
5997 (vmovltq_m_s8): Remove.
5998 (vmovlbq_m_u8): Remove.
5999 (vmovltq_m_u8): Remove.
6000 (vmovlbq_m_s16): Remove.
6001 (vmovltq_m_s16): Remove.
6002 (vmovlbq_m_u16): Remove.
6003 (vmovltq_m_u16): Remove.
6004 (vmovlbq_x_s8): Remove.
6005 (vmovlbq_x_s16): Remove.
6006 (vmovlbq_x_u8): Remove.
6007 (vmovlbq_x_u16): Remove.
6008 (vmovltq_x_s8): Remove.
6009 (vmovltq_x_s16): Remove.
6010 (vmovltq_x_u8): Remove.
6011 (vmovltq_x_u16): Remove.
6012 (__arm_vmovlbq_s8): Remove.
6013 (__arm_vmovlbq_s16): Remove.
6014 (__arm_vmovltq_s8): Remove.
6015 (__arm_vmovltq_s16): Remove.
6016 (__arm_vmovltq_u8): Remove.
6017 (__arm_vmovltq_u16): Remove.
6018 (__arm_vmovlbq_u8): Remove.
6019 (__arm_vmovlbq_u16): Remove.
6020 (__arm_vmovlbq_m_s8): Remove.
6021 (__arm_vmovltq_m_s8): Remove.
6022 (__arm_vmovlbq_m_u8): Remove.
6023 (__arm_vmovltq_m_u8): Remove.
6024 (__arm_vmovlbq_m_s16): Remove.
6025 (__arm_vmovltq_m_s16): Remove.
6026 (__arm_vmovlbq_m_u16): Remove.
6027 (__arm_vmovltq_m_u16): Remove.
6028 (__arm_vmovlbq_x_s8): Remove.
6029 (__arm_vmovlbq_x_s16): Remove.
6030 (__arm_vmovlbq_x_u8): Remove.
6031 (__arm_vmovlbq_x_u16): Remove.
6032 (__arm_vmovltq_x_s8): Remove.
6033 (__arm_vmovltq_x_s16): Remove.
6034 (__arm_vmovltq_x_u8): Remove.
6035 (__arm_vmovltq_x_u16): Remove.
6036 (__arm_vmovlbq): Remove.
6037 (__arm_vmovltq): Remove.
6038 (__arm_vmovlbq_m): Remove.
6039 (__arm_vmovltq_m): Remove.
6040 (__arm_vmovlbq_x): Remove.
6041 (__arm_vmovltq_x): Remove.
6043 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6045 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
6046 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
6048 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6050 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
6051 (VMOVLBQ, VMOVLTQ): Merge into ...
6052 (VMOVLxQ): ... this.
6053 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
6054 (VMOVLxQ_M): ... this.
6055 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
6056 (mve_vmovlbq_<supf><mode>): Merge into ...
6057 (@mve_<mve_insn>q_<supf><mode>): ... this.
6058 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
6060 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6062 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6064 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
6065 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
6066 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
6067 * config/arm/arm-mve-builtins-functions.h
6068 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
6069 * config/arm/arm_mve.h (vaddlvq): Remove.
6070 (vaddlvq_p): Remove.
6071 (vaddlvq_s32): Remove.
6072 (vaddlvq_u32): Remove.
6073 (vaddlvq_p_s32): Remove.
6074 (vaddlvq_p_u32): Remove.
6075 (__arm_vaddlvq_s32): Remove.
6076 (__arm_vaddlvq_u32): Remove.
6077 (__arm_vaddlvq_p_s32): Remove.
6078 (__arm_vaddlvq_p_u32): Remove.
6079 (__arm_vaddlvq): Remove.
6080 (__arm_vaddlvq_p): Remove.
6082 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6084 * config/arm/iterators.md (mve_insn): Add vaddlv.
6085 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
6086 (@mve_<mve_insn>q_<supf>v4si): ... this.
6087 (mve_vaddlvq_p_<supf>v4si): Rename into ...
6088 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
6090 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6092 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
6093 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
6095 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6097 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
6098 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
6099 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
6100 * config/arm/arm_mve.h (vaddvaq): Remove.
6101 (vaddvaq_p): Remove.
6102 (vaddvaq_u8): Remove.
6103 (vaddvaq_s8): Remove.
6104 (vaddvaq_u16): Remove.
6105 (vaddvaq_s16): Remove.
6106 (vaddvaq_u32): Remove.
6107 (vaddvaq_s32): Remove.
6108 (vaddvaq_p_u8): Remove.
6109 (vaddvaq_p_s8): Remove.
6110 (vaddvaq_p_u16): Remove.
6111 (vaddvaq_p_s16): Remove.
6112 (vaddvaq_p_u32): Remove.
6113 (vaddvaq_p_s32): Remove.
6114 (__arm_vaddvaq_u8): Remove.
6115 (__arm_vaddvaq_s8): Remove.
6116 (__arm_vaddvaq_u16): Remove.
6117 (__arm_vaddvaq_s16): Remove.
6118 (__arm_vaddvaq_u32): Remove.
6119 (__arm_vaddvaq_s32): Remove.
6120 (__arm_vaddvaq_p_u8): Remove.
6121 (__arm_vaddvaq_p_s8): Remove.
6122 (__arm_vaddvaq_p_u16): Remove.
6123 (__arm_vaddvaq_p_s16): Remove.
6124 (__arm_vaddvaq_p_u32): Remove.
6125 (__arm_vaddvaq_p_s32): Remove.
6126 (__arm_vaddvaq): Remove.
6127 (__arm_vaddvaq_p): Remove.
6129 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6131 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
6132 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
6134 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6136 * config/arm/iterators.md (mve_insn): Add vaddva.
6137 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
6138 (@mve_<mve_insn>q_<supf><mode>): ... this.
6139 (mve_vaddvaq_p_<supf><mode>): Rename into ...
6140 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6142 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6144 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
6145 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
6146 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
6147 * config/arm/arm_mve.h (vaddvq): Remove.
6149 (vaddvq_s8): Remove.
6150 (vaddvq_s16): Remove.
6151 (vaddvq_s32): Remove.
6152 (vaddvq_u8): Remove.
6153 (vaddvq_u16): Remove.
6154 (vaddvq_u32): Remove.
6155 (vaddvq_p_u8): Remove.
6156 (vaddvq_p_s8): Remove.
6157 (vaddvq_p_u16): Remove.
6158 (vaddvq_p_s16): Remove.
6159 (vaddvq_p_u32): Remove.
6160 (vaddvq_p_s32): Remove.
6161 (__arm_vaddvq_s8): Remove.
6162 (__arm_vaddvq_s16): Remove.
6163 (__arm_vaddvq_s32): Remove.
6164 (__arm_vaddvq_u8): Remove.
6165 (__arm_vaddvq_u16): Remove.
6166 (__arm_vaddvq_u32): Remove.
6167 (__arm_vaddvq_p_u8): Remove.
6168 (__arm_vaddvq_p_s8): Remove.
6169 (__arm_vaddvq_p_u16): Remove.
6170 (__arm_vaddvq_p_s16): Remove.
6171 (__arm_vaddvq_p_u32): Remove.
6172 (__arm_vaddvq_p_s32): Remove.
6173 (__arm_vaddvq): Remove.
6174 (__arm_vaddvq_p): Remove.
6176 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6178 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
6179 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
6181 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6183 * config/arm/iterators.md (mve_insn): Add vaddv.
6184 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
6185 (@mve_<mve_insn>q_<supf><mode>): ... this.
6186 (mve_vaddvq_p_<supf><mode>): Rename into ...
6187 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6188 * config/arm/vec-common.md: Use gen_mve_q instead of
6191 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6193 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
6195 * config/arm/arm-mve-builtins-base.def (vdupq): New.
6196 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
6197 * config/arm/arm_mve.h (vdupq_n): Remove.
6199 (vdupq_n_f16): Remove.
6200 (vdupq_n_f32): Remove.
6201 (vdupq_n_s8): Remove.
6202 (vdupq_n_s16): Remove.
6203 (vdupq_n_s32): Remove.
6204 (vdupq_n_u8): Remove.
6205 (vdupq_n_u16): Remove.
6206 (vdupq_n_u32): Remove.
6207 (vdupq_m_n_u8): Remove.
6208 (vdupq_m_n_s8): Remove.
6209 (vdupq_m_n_u16): Remove.
6210 (vdupq_m_n_s16): Remove.
6211 (vdupq_m_n_u32): Remove.
6212 (vdupq_m_n_s32): Remove.
6213 (vdupq_m_n_f16): Remove.
6214 (vdupq_m_n_f32): Remove.
6215 (vdupq_x_n_s8): Remove.
6216 (vdupq_x_n_s16): Remove.
6217 (vdupq_x_n_s32): Remove.
6218 (vdupq_x_n_u8): Remove.
6219 (vdupq_x_n_u16): Remove.
6220 (vdupq_x_n_u32): Remove.
6221 (vdupq_x_n_f16): Remove.
6222 (vdupq_x_n_f32): Remove.
6223 (__arm_vdupq_n_s8): Remove.
6224 (__arm_vdupq_n_s16): Remove.
6225 (__arm_vdupq_n_s32): Remove.
6226 (__arm_vdupq_n_u8): Remove.
6227 (__arm_vdupq_n_u16): Remove.
6228 (__arm_vdupq_n_u32): Remove.
6229 (__arm_vdupq_m_n_u8): Remove.
6230 (__arm_vdupq_m_n_s8): Remove.
6231 (__arm_vdupq_m_n_u16): Remove.
6232 (__arm_vdupq_m_n_s16): Remove.
6233 (__arm_vdupq_m_n_u32): Remove.
6234 (__arm_vdupq_m_n_s32): Remove.
6235 (__arm_vdupq_x_n_s8): Remove.
6236 (__arm_vdupq_x_n_s16): Remove.
6237 (__arm_vdupq_x_n_s32): Remove.
6238 (__arm_vdupq_x_n_u8): Remove.
6239 (__arm_vdupq_x_n_u16): Remove.
6240 (__arm_vdupq_x_n_u32): Remove.
6241 (__arm_vdupq_n_f16): Remove.
6242 (__arm_vdupq_n_f32): Remove.
6243 (__arm_vdupq_m_n_f16): Remove.
6244 (__arm_vdupq_m_n_f32): Remove.
6245 (__arm_vdupq_x_n_f16): Remove.
6246 (__arm_vdupq_x_n_f32): Remove.
6247 (__arm_vdupq_n): Remove.
6248 (__arm_vdupq_m): Remove.
6250 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6252 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
6253 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
6255 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6257 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
6258 (MVE_FP_N_VDUPQ_ONLY): New.
6259 (mve_insn): Add vdupq.
6260 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
6261 (@mve_<mve_insn>q_n_f<mode>): ... this.
6262 (mve_vdupq_n_<supf><mode>): Rename into ...
6263 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6264 (mve_vdupq_m_n_<supf><mode>): Rename into ...
6265 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6266 (mve_vdupq_m_n_f<mode>): Rename into ...
6267 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
6269 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6271 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
6273 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
6275 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
6277 * config/arm/arm_mve.h (vrev16q): Remove.
6280 (vrev64q_m): Remove.
6281 (vrev16q_m): Remove.
6282 (vrev32q_m): Remove.
6283 (vrev16q_x): Remove.
6284 (vrev32q_x): Remove.
6285 (vrev64q_x): Remove.
6286 (vrev64q_f16): Remove.
6287 (vrev64q_f32): Remove.
6288 (vrev32q_f16): Remove.
6289 (vrev16q_s8): Remove.
6290 (vrev32q_s8): Remove.
6291 (vrev32q_s16): Remove.
6292 (vrev64q_s8): Remove.
6293 (vrev64q_s16): Remove.
6294 (vrev64q_s32): Remove.
6295 (vrev64q_u8): Remove.
6296 (vrev64q_u16): Remove.
6297 (vrev64q_u32): Remove.
6298 (vrev32q_u8): Remove.
6299 (vrev32q_u16): Remove.
6300 (vrev16q_u8): Remove.
6301 (vrev64q_m_u8): Remove.
6302 (vrev64q_m_s8): Remove.
6303 (vrev64q_m_u16): Remove.
6304 (vrev64q_m_s16): Remove.
6305 (vrev64q_m_u32): Remove.
6306 (vrev64q_m_s32): Remove.
6307 (vrev16q_m_s8): Remove.
6308 (vrev32q_m_f16): Remove.
6309 (vrev16q_m_u8): Remove.
6310 (vrev32q_m_s8): Remove.
6311 (vrev64q_m_f16): Remove.
6312 (vrev32q_m_u8): Remove.
6313 (vrev32q_m_s16): Remove.
6314 (vrev64q_m_f32): Remove.
6315 (vrev32q_m_u16): Remove.
6316 (vrev16q_x_s8): Remove.
6317 (vrev16q_x_u8): Remove.
6318 (vrev32q_x_s8): Remove.
6319 (vrev32q_x_s16): Remove.
6320 (vrev32q_x_u8): Remove.
6321 (vrev32q_x_u16): Remove.
6322 (vrev64q_x_s8): Remove.
6323 (vrev64q_x_s16): Remove.
6324 (vrev64q_x_s32): Remove.
6325 (vrev64q_x_u8): Remove.
6326 (vrev64q_x_u16): Remove.
6327 (vrev64q_x_u32): Remove.
6328 (vrev32q_x_f16): Remove.
6329 (vrev64q_x_f16): Remove.
6330 (vrev64q_x_f32): Remove.
6331 (__arm_vrev16q_s8): Remove.
6332 (__arm_vrev32q_s8): Remove.
6333 (__arm_vrev32q_s16): Remove.
6334 (__arm_vrev64q_s8): Remove.
6335 (__arm_vrev64q_s16): Remove.
6336 (__arm_vrev64q_s32): Remove.
6337 (__arm_vrev64q_u8): Remove.
6338 (__arm_vrev64q_u16): Remove.
6339 (__arm_vrev64q_u32): Remove.
6340 (__arm_vrev32q_u8): Remove.
6341 (__arm_vrev32q_u16): Remove.
6342 (__arm_vrev16q_u8): Remove.
6343 (__arm_vrev64q_m_u8): Remove.
6344 (__arm_vrev64q_m_s8): Remove.
6345 (__arm_vrev64q_m_u16): Remove.
6346 (__arm_vrev64q_m_s16): Remove.
6347 (__arm_vrev64q_m_u32): Remove.
6348 (__arm_vrev64q_m_s32): Remove.
6349 (__arm_vrev16q_m_s8): Remove.
6350 (__arm_vrev16q_m_u8): Remove.
6351 (__arm_vrev32q_m_s8): Remove.
6352 (__arm_vrev32q_m_u8): Remove.
6353 (__arm_vrev32q_m_s16): Remove.
6354 (__arm_vrev32q_m_u16): Remove.
6355 (__arm_vrev16q_x_s8): Remove.
6356 (__arm_vrev16q_x_u8): Remove.
6357 (__arm_vrev32q_x_s8): Remove.
6358 (__arm_vrev32q_x_s16): Remove.
6359 (__arm_vrev32q_x_u8): Remove.
6360 (__arm_vrev32q_x_u16): Remove.
6361 (__arm_vrev64q_x_s8): Remove.
6362 (__arm_vrev64q_x_s16): Remove.
6363 (__arm_vrev64q_x_s32): Remove.
6364 (__arm_vrev64q_x_u8): Remove.
6365 (__arm_vrev64q_x_u16): Remove.
6366 (__arm_vrev64q_x_u32): Remove.
6367 (__arm_vrev64q_f16): Remove.
6368 (__arm_vrev64q_f32): Remove.
6369 (__arm_vrev32q_f16): Remove.
6370 (__arm_vrev32q_m_f16): Remove.
6371 (__arm_vrev64q_m_f16): Remove.
6372 (__arm_vrev64q_m_f32): Remove.
6373 (__arm_vrev32q_x_f16): Remove.
6374 (__arm_vrev64q_x_f16): Remove.
6375 (__arm_vrev64q_x_f32): Remove.
6376 (__arm_vrev16q): Remove.
6377 (__arm_vrev32q): Remove.
6378 (__arm_vrev64q): Remove.
6379 (__arm_vrev64q_m): Remove.
6380 (__arm_vrev16q_m): Remove.
6381 (__arm_vrev32q_m): Remove.
6382 (__arm_vrev16q_x): Remove.
6383 (__arm_vrev32q_x): Remove.
6384 (__arm_vrev64q_x): Remove.
6386 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6388 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
6389 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
6390 (MVE_FP_M_VREV32Q_ONLY): New iterators.
6391 (mve_insn): Add vrev16q, vrev32q, vrev64q.
6392 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
6393 (@mve_<mve_insn>q_f<mode>): ... this
6394 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
6395 (mve_vrev64q_<supf><mode>): Rename into ...
6396 (@mve_<mve_insn>q_<supf><mode>): ... this.
6397 (mve_vrev32q_<supf><mode>): Rename into
6398 @mve_<mve_insn>q_<supf><mode>.
6399 (mve_vrev16q_<supf>v16qi): Rename into
6400 @mve_<mve_insn>q_<supf><mode>.
6401 (mve_vrev64q_m_<supf><mode>): Rename into
6402 @mve_<mve_insn>q_m_<supf><mode>.
6403 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
6404 (mve_vrev32q_m_<supf><mode>): Rename into
6405 @mve_<mve_insn>q_m_<supf><mode>.
6406 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
6407 (mve_vrev16q_m_<supf>v16qi): Rename into
6408 @mve_<mve_insn>q_m_<supf><mode>.
6410 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6412 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
6413 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
6414 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
6415 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
6416 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
6417 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
6418 * config/arm/arm-mve-builtins-functions.h (class
6419 unspec_based_mve_function_exact_insn_vcmp): New.
6420 * config/arm/arm-mve-builtins.cc
6421 (function_instance::has_inactive_argument): Handle vcmp.
6422 * config/arm/arm_mve.h (vcmpneq): Remove.
6430 (vcmpneq_m): Remove.
6431 (vcmphiq_m): Remove.
6432 (vcmpeqq_m): Remove.
6433 (vcmpcsq_m): Remove.
6434 (vcmpcsq_m_n): Remove.
6435 (vcmpltq_m): Remove.
6436 (vcmpleq_m): Remove.
6437 (vcmpgtq_m): Remove.
6438 (vcmpgeq_m): Remove.
6439 (vcmpneq_s8): Remove.
6440 (vcmpneq_s16): Remove.
6441 (vcmpneq_s32): Remove.
6442 (vcmpneq_u8): Remove.
6443 (vcmpneq_u16): Remove.
6444 (vcmpneq_u32): Remove.
6445 (vcmpneq_n_u8): Remove.
6446 (vcmphiq_u8): Remove.
6447 (vcmphiq_n_u8): Remove.
6448 (vcmpeqq_u8): Remove.
6449 (vcmpeqq_n_u8): Remove.
6450 (vcmpcsq_u8): Remove.
6451 (vcmpcsq_n_u8): Remove.
6452 (vcmpneq_n_s8): Remove.
6453 (vcmpltq_s8): Remove.
6454 (vcmpltq_n_s8): Remove.
6455 (vcmpleq_s8): Remove.
6456 (vcmpleq_n_s8): Remove.
6457 (vcmpgtq_s8): Remove.
6458 (vcmpgtq_n_s8): Remove.
6459 (vcmpgeq_s8): Remove.
6460 (vcmpgeq_n_s8): Remove.
6461 (vcmpeqq_s8): Remove.
6462 (vcmpeqq_n_s8): Remove.
6463 (vcmpneq_n_u16): Remove.
6464 (vcmphiq_u16): Remove.
6465 (vcmphiq_n_u16): Remove.
6466 (vcmpeqq_u16): Remove.
6467 (vcmpeqq_n_u16): Remove.
6468 (vcmpcsq_u16): Remove.
6469 (vcmpcsq_n_u16): Remove.
6470 (vcmpneq_n_s16): Remove.
6471 (vcmpltq_s16): Remove.
6472 (vcmpltq_n_s16): Remove.
6473 (vcmpleq_s16): Remove.
6474 (vcmpleq_n_s16): Remove.
6475 (vcmpgtq_s16): Remove.
6476 (vcmpgtq_n_s16): Remove.
6477 (vcmpgeq_s16): Remove.
6478 (vcmpgeq_n_s16): Remove.
6479 (vcmpeqq_s16): Remove.
6480 (vcmpeqq_n_s16): Remove.
6481 (vcmpneq_n_u32): Remove.
6482 (vcmphiq_u32): Remove.
6483 (vcmphiq_n_u32): Remove.
6484 (vcmpeqq_u32): Remove.
6485 (vcmpeqq_n_u32): Remove.
6486 (vcmpcsq_u32): Remove.
6487 (vcmpcsq_n_u32): Remove.
6488 (vcmpneq_n_s32): Remove.
6489 (vcmpltq_s32): Remove.
6490 (vcmpltq_n_s32): Remove.
6491 (vcmpleq_s32): Remove.
6492 (vcmpleq_n_s32): Remove.
6493 (vcmpgtq_s32): Remove.
6494 (vcmpgtq_n_s32): Remove.
6495 (vcmpgeq_s32): Remove.
6496 (vcmpgeq_n_s32): Remove.
6497 (vcmpeqq_s32): Remove.
6498 (vcmpeqq_n_s32): Remove.
6499 (vcmpneq_n_f16): Remove.
6500 (vcmpneq_f16): Remove.
6501 (vcmpltq_n_f16): Remove.
6502 (vcmpltq_f16): Remove.
6503 (vcmpleq_n_f16): Remove.
6504 (vcmpleq_f16): Remove.
6505 (vcmpgtq_n_f16): Remove.
6506 (vcmpgtq_f16): Remove.
6507 (vcmpgeq_n_f16): Remove.
6508 (vcmpgeq_f16): Remove.
6509 (vcmpeqq_n_f16): Remove.
6510 (vcmpeqq_f16): Remove.
6511 (vcmpneq_n_f32): Remove.
6512 (vcmpneq_f32): Remove.
6513 (vcmpltq_n_f32): Remove.
6514 (vcmpltq_f32): Remove.
6515 (vcmpleq_n_f32): Remove.
6516 (vcmpleq_f32): Remove.
6517 (vcmpgtq_n_f32): Remove.
6518 (vcmpgtq_f32): Remove.
6519 (vcmpgeq_n_f32): Remove.
6520 (vcmpgeq_f32): Remove.
6521 (vcmpeqq_n_f32): Remove.
6522 (vcmpeqq_f32): Remove.
6523 (vcmpeqq_m_f16): Remove.
6524 (vcmpeqq_m_f32): Remove.
6525 (vcmpneq_m_u8): Remove.
6526 (vcmpneq_m_n_u8): Remove.
6527 (vcmphiq_m_u8): Remove.
6528 (vcmphiq_m_n_u8): Remove.
6529 (vcmpeqq_m_u8): Remove.
6530 (vcmpeqq_m_n_u8): Remove.
6531 (vcmpcsq_m_u8): Remove.
6532 (vcmpcsq_m_n_u8): Remove.
6533 (vcmpneq_m_s8): Remove.
6534 (vcmpneq_m_n_s8): Remove.
6535 (vcmpltq_m_s8): Remove.
6536 (vcmpltq_m_n_s8): Remove.
6537 (vcmpleq_m_s8): Remove.
6538 (vcmpleq_m_n_s8): Remove.
6539 (vcmpgtq_m_s8): Remove.
6540 (vcmpgtq_m_n_s8): Remove.
6541 (vcmpgeq_m_s8): Remove.
6542 (vcmpgeq_m_n_s8): Remove.
6543 (vcmpeqq_m_s8): Remove.
6544 (vcmpeqq_m_n_s8): Remove.
6545 (vcmpneq_m_u16): Remove.
6546 (vcmpneq_m_n_u16): Remove.
6547 (vcmphiq_m_u16): Remove.
6548 (vcmphiq_m_n_u16): Remove.
6549 (vcmpeqq_m_u16): Remove.
6550 (vcmpeqq_m_n_u16): Remove.
6551 (vcmpcsq_m_u16): Remove.
6552 (vcmpcsq_m_n_u16): Remove.
6553 (vcmpneq_m_s16): Remove.
6554 (vcmpneq_m_n_s16): Remove.
6555 (vcmpltq_m_s16): Remove.
6556 (vcmpltq_m_n_s16): Remove.
6557 (vcmpleq_m_s16): Remove.
6558 (vcmpleq_m_n_s16): Remove.
6559 (vcmpgtq_m_s16): Remove.
6560 (vcmpgtq_m_n_s16): Remove.
6561 (vcmpgeq_m_s16): Remove.
6562 (vcmpgeq_m_n_s16): Remove.
6563 (vcmpeqq_m_s16): Remove.
6564 (vcmpeqq_m_n_s16): Remove.
6565 (vcmpneq_m_u32): Remove.
6566 (vcmpneq_m_n_u32): Remove.
6567 (vcmphiq_m_u32): Remove.
6568 (vcmphiq_m_n_u32): Remove.
6569 (vcmpeqq_m_u32): Remove.
6570 (vcmpeqq_m_n_u32): Remove.
6571 (vcmpcsq_m_u32): Remove.
6572 (vcmpcsq_m_n_u32): Remove.
6573 (vcmpneq_m_s32): Remove.
6574 (vcmpneq_m_n_s32): Remove.
6575 (vcmpltq_m_s32): Remove.
6576 (vcmpltq_m_n_s32): Remove.
6577 (vcmpleq_m_s32): Remove.
6578 (vcmpleq_m_n_s32): Remove.
6579 (vcmpgtq_m_s32): Remove.
6580 (vcmpgtq_m_n_s32): Remove.
6581 (vcmpgeq_m_s32): Remove.
6582 (vcmpgeq_m_n_s32): Remove.
6583 (vcmpeqq_m_s32): Remove.
6584 (vcmpeqq_m_n_s32): Remove.
6585 (vcmpeqq_m_n_f16): Remove.
6586 (vcmpgeq_m_f16): Remove.
6587 (vcmpgeq_m_n_f16): Remove.
6588 (vcmpgtq_m_f16): Remove.
6589 (vcmpgtq_m_n_f16): Remove.
6590 (vcmpleq_m_f16): Remove.
6591 (vcmpleq_m_n_f16): Remove.
6592 (vcmpltq_m_f16): Remove.
6593 (vcmpltq_m_n_f16): Remove.
6594 (vcmpneq_m_f16): Remove.
6595 (vcmpneq_m_n_f16): Remove.
6596 (vcmpeqq_m_n_f32): Remove.
6597 (vcmpgeq_m_f32): Remove.
6598 (vcmpgeq_m_n_f32): Remove.
6599 (vcmpgtq_m_f32): Remove.
6600 (vcmpgtq_m_n_f32): Remove.
6601 (vcmpleq_m_f32): Remove.
6602 (vcmpleq_m_n_f32): Remove.
6603 (vcmpltq_m_f32): Remove.
6604 (vcmpltq_m_n_f32): Remove.
6605 (vcmpneq_m_f32): Remove.
6606 (vcmpneq_m_n_f32): Remove.
6607 (__arm_vcmpneq_s8): Remove.
6608 (__arm_vcmpneq_s16): Remove.
6609 (__arm_vcmpneq_s32): Remove.
6610 (__arm_vcmpneq_u8): Remove.
6611 (__arm_vcmpneq_u16): Remove.
6612 (__arm_vcmpneq_u32): Remove.
6613 (__arm_vcmpneq_n_u8): Remove.
6614 (__arm_vcmphiq_u8): Remove.
6615 (__arm_vcmphiq_n_u8): Remove.
6616 (__arm_vcmpeqq_u8): Remove.
6617 (__arm_vcmpeqq_n_u8): Remove.
6618 (__arm_vcmpcsq_u8): Remove.
6619 (__arm_vcmpcsq_n_u8): Remove.
6620 (__arm_vcmpneq_n_s8): Remove.
6621 (__arm_vcmpltq_s8): Remove.
6622 (__arm_vcmpltq_n_s8): Remove.
6623 (__arm_vcmpleq_s8): Remove.
6624 (__arm_vcmpleq_n_s8): Remove.
6625 (__arm_vcmpgtq_s8): Remove.
6626 (__arm_vcmpgtq_n_s8): Remove.
6627 (__arm_vcmpgeq_s8): Remove.
6628 (__arm_vcmpgeq_n_s8): Remove.
6629 (__arm_vcmpeqq_s8): Remove.
6630 (__arm_vcmpeqq_n_s8): Remove.
6631 (__arm_vcmpneq_n_u16): Remove.
6632 (__arm_vcmphiq_u16): Remove.
6633 (__arm_vcmphiq_n_u16): Remove.
6634 (__arm_vcmpeqq_u16): Remove.
6635 (__arm_vcmpeqq_n_u16): Remove.
6636 (__arm_vcmpcsq_u16): Remove.
6637 (__arm_vcmpcsq_n_u16): Remove.
6638 (__arm_vcmpneq_n_s16): Remove.
6639 (__arm_vcmpltq_s16): Remove.
6640 (__arm_vcmpltq_n_s16): Remove.
6641 (__arm_vcmpleq_s16): Remove.
6642 (__arm_vcmpleq_n_s16): Remove.
6643 (__arm_vcmpgtq_s16): Remove.
6644 (__arm_vcmpgtq_n_s16): Remove.
6645 (__arm_vcmpgeq_s16): Remove.
6646 (__arm_vcmpgeq_n_s16): Remove.
6647 (__arm_vcmpeqq_s16): Remove.
6648 (__arm_vcmpeqq_n_s16): Remove.
6649 (__arm_vcmpneq_n_u32): Remove.
6650 (__arm_vcmphiq_u32): Remove.
6651 (__arm_vcmphiq_n_u32): Remove.
6652 (__arm_vcmpeqq_u32): Remove.
6653 (__arm_vcmpeqq_n_u32): Remove.
6654 (__arm_vcmpcsq_u32): Remove.
6655 (__arm_vcmpcsq_n_u32): Remove.
6656 (__arm_vcmpneq_n_s32): Remove.
6657 (__arm_vcmpltq_s32): Remove.
6658 (__arm_vcmpltq_n_s32): Remove.
6659 (__arm_vcmpleq_s32): Remove.
6660 (__arm_vcmpleq_n_s32): Remove.
6661 (__arm_vcmpgtq_s32): Remove.
6662 (__arm_vcmpgtq_n_s32): Remove.
6663 (__arm_vcmpgeq_s32): Remove.
6664 (__arm_vcmpgeq_n_s32): Remove.
6665 (__arm_vcmpeqq_s32): Remove.
6666 (__arm_vcmpeqq_n_s32): Remove.
6667 (__arm_vcmpneq_m_u8): Remove.
6668 (__arm_vcmpneq_m_n_u8): Remove.
6669 (__arm_vcmphiq_m_u8): Remove.
6670 (__arm_vcmphiq_m_n_u8): Remove.
6671 (__arm_vcmpeqq_m_u8): Remove.
6672 (__arm_vcmpeqq_m_n_u8): Remove.
6673 (__arm_vcmpcsq_m_u8): Remove.
6674 (__arm_vcmpcsq_m_n_u8): Remove.
6675 (__arm_vcmpneq_m_s8): Remove.
6676 (__arm_vcmpneq_m_n_s8): Remove.
6677 (__arm_vcmpltq_m_s8): Remove.
6678 (__arm_vcmpltq_m_n_s8): Remove.
6679 (__arm_vcmpleq_m_s8): Remove.
6680 (__arm_vcmpleq_m_n_s8): Remove.
6681 (__arm_vcmpgtq_m_s8): Remove.
6682 (__arm_vcmpgtq_m_n_s8): Remove.
6683 (__arm_vcmpgeq_m_s8): Remove.
6684 (__arm_vcmpgeq_m_n_s8): Remove.
6685 (__arm_vcmpeqq_m_s8): Remove.
6686 (__arm_vcmpeqq_m_n_s8): Remove.
6687 (__arm_vcmpneq_m_u16): Remove.
6688 (__arm_vcmpneq_m_n_u16): Remove.
6689 (__arm_vcmphiq_m_u16): Remove.
6690 (__arm_vcmphiq_m_n_u16): Remove.
6691 (__arm_vcmpeqq_m_u16): Remove.
6692 (__arm_vcmpeqq_m_n_u16): Remove.
6693 (__arm_vcmpcsq_m_u16): Remove.
6694 (__arm_vcmpcsq_m_n_u16): Remove.
6695 (__arm_vcmpneq_m_s16): Remove.
6696 (__arm_vcmpneq_m_n_s16): Remove.
6697 (__arm_vcmpltq_m_s16): Remove.
6698 (__arm_vcmpltq_m_n_s16): Remove.
6699 (__arm_vcmpleq_m_s16): Remove.
6700 (__arm_vcmpleq_m_n_s16): Remove.
6701 (__arm_vcmpgtq_m_s16): Remove.
6702 (__arm_vcmpgtq_m_n_s16): Remove.
6703 (__arm_vcmpgeq_m_s16): Remove.
6704 (__arm_vcmpgeq_m_n_s16): Remove.
6705 (__arm_vcmpeqq_m_s16): Remove.
6706 (__arm_vcmpeqq_m_n_s16): Remove.
6707 (__arm_vcmpneq_m_u32): Remove.
6708 (__arm_vcmpneq_m_n_u32): Remove.
6709 (__arm_vcmphiq_m_u32): Remove.
6710 (__arm_vcmphiq_m_n_u32): Remove.
6711 (__arm_vcmpeqq_m_u32): Remove.
6712 (__arm_vcmpeqq_m_n_u32): Remove.
6713 (__arm_vcmpcsq_m_u32): Remove.
6714 (__arm_vcmpcsq_m_n_u32): Remove.
6715 (__arm_vcmpneq_m_s32): Remove.
6716 (__arm_vcmpneq_m_n_s32): Remove.
6717 (__arm_vcmpltq_m_s32): Remove.
6718 (__arm_vcmpltq_m_n_s32): Remove.
6719 (__arm_vcmpleq_m_s32): Remove.
6720 (__arm_vcmpleq_m_n_s32): Remove.
6721 (__arm_vcmpgtq_m_s32): Remove.
6722 (__arm_vcmpgtq_m_n_s32): Remove.
6723 (__arm_vcmpgeq_m_s32): Remove.
6724 (__arm_vcmpgeq_m_n_s32): Remove.
6725 (__arm_vcmpeqq_m_s32): Remove.
6726 (__arm_vcmpeqq_m_n_s32): Remove.
6727 (__arm_vcmpneq_n_f16): Remove.
6728 (__arm_vcmpneq_f16): Remove.
6729 (__arm_vcmpltq_n_f16): Remove.
6730 (__arm_vcmpltq_f16): Remove.
6731 (__arm_vcmpleq_n_f16): Remove.
6732 (__arm_vcmpleq_f16): Remove.
6733 (__arm_vcmpgtq_n_f16): Remove.
6734 (__arm_vcmpgtq_f16): Remove.
6735 (__arm_vcmpgeq_n_f16): Remove.
6736 (__arm_vcmpgeq_f16): Remove.
6737 (__arm_vcmpeqq_n_f16): Remove.
6738 (__arm_vcmpeqq_f16): Remove.
6739 (__arm_vcmpneq_n_f32): Remove.
6740 (__arm_vcmpneq_f32): Remove.
6741 (__arm_vcmpltq_n_f32): Remove.
6742 (__arm_vcmpltq_f32): Remove.
6743 (__arm_vcmpleq_n_f32): Remove.
6744 (__arm_vcmpleq_f32): Remove.
6745 (__arm_vcmpgtq_n_f32): Remove.
6746 (__arm_vcmpgtq_f32): Remove.
6747 (__arm_vcmpgeq_n_f32): Remove.
6748 (__arm_vcmpgeq_f32): Remove.
6749 (__arm_vcmpeqq_n_f32): Remove.
6750 (__arm_vcmpeqq_f32): Remove.
6751 (__arm_vcmpeqq_m_f16): Remove.
6752 (__arm_vcmpeqq_m_f32): Remove.
6753 (__arm_vcmpeqq_m_n_f16): Remove.
6754 (__arm_vcmpgeq_m_f16): Remove.
6755 (__arm_vcmpgeq_m_n_f16): Remove.
6756 (__arm_vcmpgtq_m_f16): Remove.
6757 (__arm_vcmpgtq_m_n_f16): Remove.
6758 (__arm_vcmpleq_m_f16): Remove.
6759 (__arm_vcmpleq_m_n_f16): Remove.
6760 (__arm_vcmpltq_m_f16): Remove.
6761 (__arm_vcmpltq_m_n_f16): Remove.
6762 (__arm_vcmpneq_m_f16): Remove.
6763 (__arm_vcmpneq_m_n_f16): Remove.
6764 (__arm_vcmpeqq_m_n_f32): Remove.
6765 (__arm_vcmpgeq_m_f32): Remove.
6766 (__arm_vcmpgeq_m_n_f32): Remove.
6767 (__arm_vcmpgtq_m_f32): Remove.
6768 (__arm_vcmpgtq_m_n_f32): Remove.
6769 (__arm_vcmpleq_m_f32): Remove.
6770 (__arm_vcmpleq_m_n_f32): Remove.
6771 (__arm_vcmpltq_m_f32): Remove.
6772 (__arm_vcmpltq_m_n_f32): Remove.
6773 (__arm_vcmpneq_m_f32): Remove.
6774 (__arm_vcmpneq_m_n_f32): Remove.
6775 (__arm_vcmpneq): Remove.
6776 (__arm_vcmphiq): Remove.
6777 (__arm_vcmpeqq): Remove.
6778 (__arm_vcmpcsq): Remove.
6779 (__arm_vcmpltq): Remove.
6780 (__arm_vcmpleq): Remove.
6781 (__arm_vcmpgtq): Remove.
6782 (__arm_vcmpgeq): Remove.
6783 (__arm_vcmpneq_m): Remove.
6784 (__arm_vcmphiq_m): Remove.
6785 (__arm_vcmpeqq_m): Remove.
6786 (__arm_vcmpcsq_m): Remove.
6787 (__arm_vcmpltq_m): Remove.
6788 (__arm_vcmpleq_m): Remove.
6789 (__arm_vcmpgtq_m): Remove.
6790 (__arm_vcmpgeq_m): Remove.
6792 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6794 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
6795 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
6797 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6799 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
6800 (MVE_CMP_M_N_F, mve_cmp_op1): New.
6803 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
6804 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
6805 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
6806 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
6807 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
6808 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
6809 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
6810 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
6811 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
6812 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
6814 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
6815 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
6816 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
6817 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
6818 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
6820 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
6821 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
6822 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
6823 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
6824 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
6826 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
6828 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
6829 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
6830 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
6833 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
6835 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
6836 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
6837 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
6838 Simplify parity(rotate(x,y)) as parity(x).
6840 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6842 * config/riscv/autovec.md (@vec_series<mode>): New pattern
6843 * config/riscv/riscv-protos.h (expand_vec_series): New function.
6844 * config/riscv/riscv-v.cc (emit_binop): Ditto.
6845 (emit_index_op): Ditto.
6846 (expand_vec_series): Ditto.
6847 (expand_const_vector): Add series vector handling.
6848 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
6850 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
6852 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
6853 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
6854 (*concat<mode><dwi>3_2): Likewise.
6855 (*concat<mode><dwi>3_3): Likewise.
6856 (*concat<mode><dwi>3_4): Likewise.
6857 (*concat<mode><dwi>3_5): Likewise.
6858 (*concat<mode><dwi>3_6): Likewise.
6859 (*concat<mode><dwi>3_7): Likewise.
6861 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
6864 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
6865 (<insn>v4qiv4hi2): New expander.
6866 (<insn>v2hiv2si2): Ditto.
6867 (<insn>v2qiv2si2): Ditto.
6868 (<insn>v2qiv2hi2): Ditto.
6870 2023-05-10 Jeff Law <jlaw@ventanamicro>
6872 * config/h8300/constraints.md (Q): Make this a special memory
6876 2023-05-10 Jakub Jelinek <jakub@redhat.com>
6879 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
6880 if t is void_list_node.
6882 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6884 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
6885 (aarch64_sqmovun<mode>_insn_be): Delete.
6886 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
6887 (aarch64_sqmovun<mode>): Delete expander.
6889 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6892 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
6894 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
6895 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
6896 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
6898 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6901 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
6903 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
6904 (aarch64_<sur>qadd<mode>): Rename to...
6905 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
6907 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6909 * config/aarch64/aarch64-simd.md
6910 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
6911 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
6912 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
6913 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
6915 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6918 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
6919 (aarch64_xtn<mode>_insn_be): Likewise.
6920 (trunc<mode><Vnarrowq>2): Rename to...
6921 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
6922 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
6923 (aarch64_<su>qmovn<mode>): Likewise.
6924 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
6925 (aarch64_<su>qmovn<mode>_insn_le): Delete.
6926 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
6928 2023-05-10 Li Xu <xuli1@eswincomputing.com>
6930 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
6931 intruction replace null avl with (const_int 0).
6933 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6935 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
6938 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6941 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
6942 (source_equal_p): Fix dead loop in vsetvl avl checking.
6944 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
6946 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
6947 of modeadjusted_dccr.
6949 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6951 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
6952 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
6953 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
6954 * config/arm/arm-mve-builtins.cc
6955 (function_instance::has_inactive_argument): Handle vmaxaq and
6957 * config/arm/arm_mve.h (vminaq): Remove.
6961 (vminaq_s8): Remove.
6962 (vmaxaq_s8): Remove.
6963 (vminaq_s16): Remove.
6964 (vmaxaq_s16): Remove.
6965 (vminaq_s32): Remove.
6966 (vmaxaq_s32): Remove.
6967 (vminaq_m_s8): Remove.
6968 (vmaxaq_m_s8): Remove.
6969 (vminaq_m_s16): Remove.
6970 (vmaxaq_m_s16): Remove.
6971 (vminaq_m_s32): Remove.
6972 (vmaxaq_m_s32): Remove.
6973 (__arm_vminaq_s8): Remove.
6974 (__arm_vmaxaq_s8): Remove.
6975 (__arm_vminaq_s16): Remove.
6976 (__arm_vmaxaq_s16): Remove.
6977 (__arm_vminaq_s32): Remove.
6978 (__arm_vmaxaq_s32): Remove.
6979 (__arm_vminaq_m_s8): Remove.
6980 (__arm_vmaxaq_m_s8): Remove.
6981 (__arm_vminaq_m_s16): Remove.
6982 (__arm_vmaxaq_m_s16): Remove.
6983 (__arm_vminaq_m_s32): Remove.
6984 (__arm_vmaxaq_m_s32): Remove.
6985 (__arm_vminaq): Remove.
6986 (__arm_vmaxaq): Remove.
6987 (__arm_vminaq_m): Remove.
6988 (__arm_vmaxaq_m): Remove.
6990 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6992 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
6994 (mve_insn): Add vmaxa, vmina.
6995 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
6996 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
6998 (@mve_<mve_insn>q_<supf><mode>): ... this.
6999 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
7000 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7002 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7004 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
7005 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
7007 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7009 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
7010 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
7011 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
7012 * config/arm/arm-mve-builtins.cc
7013 (function_instance::has_inactive_argument): Handle vmaxnmaq and
7015 * config/arm/arm_mve.h (vminnmaq): Remove.
7017 (vmaxnmaq_m): Remove.
7018 (vminnmaq_m): Remove.
7019 (vminnmaq_f16): Remove.
7020 (vmaxnmaq_f16): Remove.
7021 (vminnmaq_f32): Remove.
7022 (vmaxnmaq_f32): Remove.
7023 (vmaxnmaq_m_f16): Remove.
7024 (vminnmaq_m_f16): Remove.
7025 (vmaxnmaq_m_f32): Remove.
7026 (vminnmaq_m_f32): Remove.
7027 (__arm_vminnmaq_f16): Remove.
7028 (__arm_vmaxnmaq_f16): Remove.
7029 (__arm_vminnmaq_f32): Remove.
7030 (__arm_vmaxnmaq_f32): Remove.
7031 (__arm_vmaxnmaq_m_f16): Remove.
7032 (__arm_vminnmaq_m_f16): Remove.
7033 (__arm_vmaxnmaq_m_f32): Remove.
7034 (__arm_vminnmaq_m_f32): Remove.
7035 (__arm_vminnmaq): Remove.
7036 (__arm_vmaxnmaq): Remove.
7037 (__arm_vmaxnmaq_m): Remove.
7038 (__arm_vminnmaq_m): Remove.
7040 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7042 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
7043 (MVE_VMAXNMA_VMINNMAQ_M): New.
7044 (mve_insn): Add vmaxnma, vminnma.
7045 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
7047 (@mve_<mve_insn>q_f<mode>): ... this.
7048 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
7049 (@mve_<mve_insn>q_m_f<mode>): ... this.
7051 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7053 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
7054 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
7055 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
7056 (vminnmavq, vminnmvq): New.
7057 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
7058 (vminnmavq, vminnmvq): New.
7059 * config/arm/arm_mve.h (vminnmvq): Remove.
7060 (vminnmavq): Remove.
7062 (vmaxnmavq): Remove.
7063 (vmaxnmavq_p): Remove.
7064 (vmaxnmvq_p): Remove.
7065 (vminnmavq_p): Remove.
7066 (vminnmvq_p): Remove.
7067 (vminnmvq_f16): Remove.
7068 (vminnmavq_f16): Remove.
7069 (vmaxnmvq_f16): Remove.
7070 (vmaxnmavq_f16): Remove.
7071 (vminnmvq_f32): Remove.
7072 (vminnmavq_f32): Remove.
7073 (vmaxnmvq_f32): Remove.
7074 (vmaxnmavq_f32): Remove.
7075 (vmaxnmavq_p_f16): Remove.
7076 (vmaxnmvq_p_f16): Remove.
7077 (vminnmavq_p_f16): Remove.
7078 (vminnmvq_p_f16): Remove.
7079 (vmaxnmavq_p_f32): Remove.
7080 (vmaxnmvq_p_f32): Remove.
7081 (vminnmavq_p_f32): Remove.
7082 (vminnmvq_p_f32): Remove.
7083 (__arm_vminnmvq_f16): Remove.
7084 (__arm_vminnmavq_f16): Remove.
7085 (__arm_vmaxnmvq_f16): Remove.
7086 (__arm_vmaxnmavq_f16): Remove.
7087 (__arm_vminnmvq_f32): Remove.
7088 (__arm_vminnmavq_f32): Remove.
7089 (__arm_vmaxnmvq_f32): Remove.
7090 (__arm_vmaxnmavq_f32): Remove.
7091 (__arm_vmaxnmavq_p_f16): Remove.
7092 (__arm_vmaxnmvq_p_f16): Remove.
7093 (__arm_vminnmavq_p_f16): Remove.
7094 (__arm_vminnmvq_p_f16): Remove.
7095 (__arm_vmaxnmavq_p_f32): Remove.
7096 (__arm_vmaxnmvq_p_f32): Remove.
7097 (__arm_vminnmavq_p_f32): Remove.
7098 (__arm_vminnmvq_p_f32): Remove.
7099 (__arm_vminnmvq): Remove.
7100 (__arm_vminnmavq): Remove.
7101 (__arm_vmaxnmvq): Remove.
7102 (__arm_vmaxnmavq): Remove.
7103 (__arm_vmaxnmavq_p): Remove.
7104 (__arm_vmaxnmvq_p): Remove.
7105 (__arm_vminnmavq_p): Remove.
7106 (__arm_vminnmvq_p): Remove.
7107 (__arm_vmaxnmavq_m): Remove.
7108 (__arm_vmaxnmvq_m): Remove.
7110 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7112 * config/arm/arm-mve-builtins-functions.h
7113 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
7115 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7117 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
7118 (MVE_VMAXNMxV_MINNMxVQ_P): New.
7119 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
7120 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
7121 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
7122 (@mve_<mve_insn>q_f<mode>): ... this.
7123 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
7124 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
7125 (@mve_<mve_insn>q_p_f<mode>): ... this.
7127 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7129 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
7130 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
7131 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
7132 * config/arm/arm_mve.h (vminnmq): Remove.
7134 (vmaxnmq_m): Remove.
7135 (vminnmq_m): Remove.
7136 (vminnmq_x): Remove.
7137 (vmaxnmq_x): Remove.
7138 (vminnmq_f16): Remove.
7139 (vmaxnmq_f16): Remove.
7140 (vminnmq_f32): Remove.
7141 (vmaxnmq_f32): Remove.
7142 (vmaxnmq_m_f32): Remove.
7143 (vmaxnmq_m_f16): Remove.
7144 (vminnmq_m_f32): Remove.
7145 (vminnmq_m_f16): Remove.
7146 (vminnmq_x_f16): Remove.
7147 (vminnmq_x_f32): Remove.
7148 (vmaxnmq_x_f16): Remove.
7149 (vmaxnmq_x_f32): Remove.
7150 (__arm_vminnmq_f16): Remove.
7151 (__arm_vmaxnmq_f16): Remove.
7152 (__arm_vminnmq_f32): Remove.
7153 (__arm_vmaxnmq_f32): Remove.
7154 (__arm_vmaxnmq_m_f32): Remove.
7155 (__arm_vmaxnmq_m_f16): Remove.
7156 (__arm_vminnmq_m_f32): Remove.
7157 (__arm_vminnmq_m_f16): Remove.
7158 (__arm_vminnmq_x_f16): Remove.
7159 (__arm_vminnmq_x_f32): Remove.
7160 (__arm_vmaxnmq_x_f16): Remove.
7161 (__arm_vmaxnmq_x_f32): Remove.
7162 (__arm_vminnmq): Remove.
7163 (__arm_vmaxnmq): Remove.
7164 (__arm_vmaxnmq_m): Remove.
7165 (__arm_vminnmq_m): Remove.
7166 (__arm_vminnmq_x): Remove.
7167 (__arm_vmaxnmq_x): Remove.
7169 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7171 * config/arm/iterators.md (MAX_MIN_F): New.
7172 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
7173 (mve_insn): Add vmaxnm, vminnm.
7174 (max_min_f_str): New.
7175 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
7177 (@mve_<max_min_f_str>q_f<mode>): ... this.
7178 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
7179 (@mve_<mve_insn>q_m_f<mode>): ... this.
7181 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7183 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
7184 (smax<mode>3): Likewise.
7186 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7188 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
7189 (FUNCTION_PRED_P_S): New.
7190 (vmaxavq, vminavq, vmaxvq, vminvq): New.
7191 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
7193 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
7195 * config/arm/arm_mve.h (vminvq): Remove.
7199 (vminvq_u8): Remove.
7200 (vmaxvq_u8): Remove.
7201 (vminvq_s8): Remove.
7202 (vmaxvq_s8): Remove.
7203 (vminvq_u16): Remove.
7204 (vmaxvq_u16): Remove.
7205 (vminvq_s16): Remove.
7206 (vmaxvq_s16): Remove.
7207 (vminvq_u32): Remove.
7208 (vmaxvq_u32): Remove.
7209 (vminvq_s32): Remove.
7210 (vmaxvq_s32): Remove.
7211 (vminvq_p_u8): Remove.
7212 (vmaxvq_p_u8): Remove.
7213 (vminvq_p_s8): Remove.
7214 (vmaxvq_p_s8): Remove.
7215 (vminvq_p_u16): Remove.
7216 (vmaxvq_p_u16): Remove.
7217 (vminvq_p_s16): Remove.
7218 (vmaxvq_p_s16): Remove.
7219 (vminvq_p_u32): Remove.
7220 (vmaxvq_p_u32): Remove.
7221 (vminvq_p_s32): Remove.
7222 (vmaxvq_p_s32): Remove.
7223 (__arm_vminvq_u8): Remove.
7224 (__arm_vmaxvq_u8): Remove.
7225 (__arm_vminvq_s8): Remove.
7226 (__arm_vmaxvq_s8): Remove.
7227 (__arm_vminvq_u16): Remove.
7228 (__arm_vmaxvq_u16): Remove.
7229 (__arm_vminvq_s16): Remove.
7230 (__arm_vmaxvq_s16): Remove.
7231 (__arm_vminvq_u32): Remove.
7232 (__arm_vmaxvq_u32): Remove.
7233 (__arm_vminvq_s32): Remove.
7234 (__arm_vmaxvq_s32): Remove.
7235 (__arm_vminvq_p_u8): Remove.
7236 (__arm_vmaxvq_p_u8): Remove.
7237 (__arm_vminvq_p_s8): Remove.
7238 (__arm_vmaxvq_p_s8): Remove.
7239 (__arm_vminvq_p_u16): Remove.
7240 (__arm_vmaxvq_p_u16): Remove.
7241 (__arm_vminvq_p_s16): Remove.
7242 (__arm_vmaxvq_p_s16): Remove.
7243 (__arm_vminvq_p_u32): Remove.
7244 (__arm_vmaxvq_p_u32): Remove.
7245 (__arm_vminvq_p_s32): Remove.
7246 (__arm_vmaxvq_p_s32): Remove.
7247 (__arm_vminvq): Remove.
7248 (__arm_vmaxvq): Remove.
7249 (__arm_vminvq_p): Remove.
7250 (__arm_vmaxvq_p): Remove.
7253 (vminavq_p): Remove.
7254 (vmaxavq_p): Remove.
7255 (vminavq_s8): Remove.
7256 (vmaxavq_s8): Remove.
7257 (vminavq_s16): Remove.
7258 (vmaxavq_s16): Remove.
7259 (vminavq_s32): Remove.
7260 (vmaxavq_s32): Remove.
7261 (vminavq_p_s8): Remove.
7262 (vmaxavq_p_s8): Remove.
7263 (vminavq_p_s16): Remove.
7264 (vmaxavq_p_s16): Remove.
7265 (vminavq_p_s32): Remove.
7266 (vmaxavq_p_s32): Remove.
7267 (__arm_vminavq_s8): Remove.
7268 (__arm_vmaxavq_s8): Remove.
7269 (__arm_vminavq_s16): Remove.
7270 (__arm_vmaxavq_s16): Remove.
7271 (__arm_vminavq_s32): Remove.
7272 (__arm_vmaxavq_s32): Remove.
7273 (__arm_vminavq_p_s8): Remove.
7274 (__arm_vmaxavq_p_s8): Remove.
7275 (__arm_vminavq_p_s16): Remove.
7276 (__arm_vmaxavq_p_s16): Remove.
7277 (__arm_vminavq_p_s32): Remove.
7278 (__arm_vmaxavq_p_s32): Remove.
7279 (__arm_vminavq): Remove.
7280 (__arm_vmaxavq): Remove.
7281 (__arm_vminavq_p): Remove.
7282 (__arm_vmaxavq_p): Remove.
7284 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7286 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
7287 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
7288 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
7289 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
7290 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
7291 (@mve_<mve_insn>q_<supf><mode>): ... this.
7292 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
7293 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
7294 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7296 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7298 * config/arm/arm-mve-builtins-functions.h (class
7299 unspec_mve_function_exact_insn_pred_p): New.
7301 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7303 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
7304 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
7306 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7308 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
7309 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
7311 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
7313 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
7315 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
7316 (ADJUST_REG_ALLOC_ORDER): Likewise.
7317 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
7319 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
7320 Upa rather than Upl for unpredicated movprfx alternatives.
7322 2023-05-09 Jeff Law <jlaw@ventanamicro>
7324 * config/h8300/testcompare.md: Add peephole2 which uses a memory
7325 load to set flags, thus eliminating a compare against zero.
7327 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7329 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
7330 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
7331 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
7332 * config/arm/arm_mve.h (vshlltq): Remove.
7334 (vshllbq_m): Remove.
7335 (vshlltq_m): Remove.
7336 (vshllbq_x): Remove.
7337 (vshlltq_x): Remove.
7338 (vshlltq_n_u8): Remove.
7339 (vshllbq_n_u8): Remove.
7340 (vshlltq_n_s8): Remove.
7341 (vshllbq_n_s8): Remove.
7342 (vshlltq_n_u16): Remove.
7343 (vshllbq_n_u16): Remove.
7344 (vshlltq_n_s16): Remove.
7345 (vshllbq_n_s16): Remove.
7346 (vshllbq_m_n_s8): Remove.
7347 (vshllbq_m_n_s16): Remove.
7348 (vshllbq_m_n_u8): Remove.
7349 (vshllbq_m_n_u16): Remove.
7350 (vshlltq_m_n_s8): Remove.
7351 (vshlltq_m_n_s16): Remove.
7352 (vshlltq_m_n_u8): Remove.
7353 (vshlltq_m_n_u16): Remove.
7354 (vshllbq_x_n_s8): Remove.
7355 (vshllbq_x_n_s16): Remove.
7356 (vshllbq_x_n_u8): Remove.
7357 (vshllbq_x_n_u16): Remove.
7358 (vshlltq_x_n_s8): Remove.
7359 (vshlltq_x_n_s16): Remove.
7360 (vshlltq_x_n_u8): Remove.
7361 (vshlltq_x_n_u16): Remove.
7362 (__arm_vshlltq_n_u8): Remove.
7363 (__arm_vshllbq_n_u8): Remove.
7364 (__arm_vshlltq_n_s8): Remove.
7365 (__arm_vshllbq_n_s8): Remove.
7366 (__arm_vshlltq_n_u16): Remove.
7367 (__arm_vshllbq_n_u16): Remove.
7368 (__arm_vshlltq_n_s16): Remove.
7369 (__arm_vshllbq_n_s16): Remove.
7370 (__arm_vshllbq_m_n_s8): Remove.
7371 (__arm_vshllbq_m_n_s16): Remove.
7372 (__arm_vshllbq_m_n_u8): Remove.
7373 (__arm_vshllbq_m_n_u16): Remove.
7374 (__arm_vshlltq_m_n_s8): Remove.
7375 (__arm_vshlltq_m_n_s16): Remove.
7376 (__arm_vshlltq_m_n_u8): Remove.
7377 (__arm_vshlltq_m_n_u16): Remove.
7378 (__arm_vshllbq_x_n_s8): Remove.
7379 (__arm_vshllbq_x_n_s16): Remove.
7380 (__arm_vshllbq_x_n_u8): Remove.
7381 (__arm_vshllbq_x_n_u16): Remove.
7382 (__arm_vshlltq_x_n_s8): Remove.
7383 (__arm_vshlltq_x_n_s16): Remove.
7384 (__arm_vshlltq_x_n_u8): Remove.
7385 (__arm_vshlltq_x_n_u16): Remove.
7386 (__arm_vshlltq): Remove.
7387 (__arm_vshllbq): Remove.
7388 (__arm_vshllbq_m): Remove.
7389 (__arm_vshlltq_m): Remove.
7390 (__arm_vshllbq_x): Remove.
7391 (__arm_vshlltq_x): Remove.
7393 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7395 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
7396 (VSHLLBQ_N, VSHLLTQ_N): Remove.
7398 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
7400 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
7401 (mve_vshlltq_n_<supf><mode>): Merge into ...
7402 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7403 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
7405 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7407 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7409 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
7410 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
7412 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7414 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
7415 (vqmovntq, vqmovunbq, vqmovuntq): New.
7416 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
7417 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
7418 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
7419 (vqmovntq, vqmovunbq, vqmovuntq): New.
7420 * config/arm/arm-mve-builtins.cc
7421 (function_instance::has_inactive_argument): Handle vmovnbq,
7422 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
7423 * config/arm/arm_mve.h (vqmovntq): Remove.
7425 (vqmovnbq_m): Remove.
7426 (vqmovntq_m): Remove.
7427 (vqmovntq_u16): Remove.
7428 (vqmovnbq_u16): Remove.
7429 (vqmovntq_s16): Remove.
7430 (vqmovnbq_s16): Remove.
7431 (vqmovntq_u32): Remove.
7432 (vqmovnbq_u32): Remove.
7433 (vqmovntq_s32): Remove.
7434 (vqmovnbq_s32): Remove.
7435 (vqmovnbq_m_s16): Remove.
7436 (vqmovntq_m_s16): Remove.
7437 (vqmovnbq_m_u16): Remove.
7438 (vqmovntq_m_u16): Remove.
7439 (vqmovnbq_m_s32): Remove.
7440 (vqmovntq_m_s32): Remove.
7441 (vqmovnbq_m_u32): Remove.
7442 (vqmovntq_m_u32): Remove.
7443 (__arm_vqmovntq_u16): Remove.
7444 (__arm_vqmovnbq_u16): Remove.
7445 (__arm_vqmovntq_s16): Remove.
7446 (__arm_vqmovnbq_s16): Remove.
7447 (__arm_vqmovntq_u32): Remove.
7448 (__arm_vqmovnbq_u32): Remove.
7449 (__arm_vqmovntq_s32): Remove.
7450 (__arm_vqmovnbq_s32): Remove.
7451 (__arm_vqmovnbq_m_s16): Remove.
7452 (__arm_vqmovntq_m_s16): Remove.
7453 (__arm_vqmovnbq_m_u16): Remove.
7454 (__arm_vqmovntq_m_u16): Remove.
7455 (__arm_vqmovnbq_m_s32): Remove.
7456 (__arm_vqmovntq_m_s32): Remove.
7457 (__arm_vqmovnbq_m_u32): Remove.
7458 (__arm_vqmovntq_m_u32): Remove.
7459 (__arm_vqmovntq): Remove.
7460 (__arm_vqmovnbq): Remove.
7461 (__arm_vqmovnbq_m): Remove.
7462 (__arm_vqmovntq_m): Remove.
7465 (vmovnbq_m): Remove.
7466 (vmovntq_m): Remove.
7467 (vmovntq_u16): Remove.
7468 (vmovnbq_u16): Remove.
7469 (vmovntq_s16): Remove.
7470 (vmovnbq_s16): Remove.
7471 (vmovntq_u32): Remove.
7472 (vmovnbq_u32): Remove.
7473 (vmovntq_s32): Remove.
7474 (vmovnbq_s32): Remove.
7475 (vmovnbq_m_s16): Remove.
7476 (vmovntq_m_s16): Remove.
7477 (vmovnbq_m_u16): Remove.
7478 (vmovntq_m_u16): Remove.
7479 (vmovnbq_m_s32): Remove.
7480 (vmovntq_m_s32): Remove.
7481 (vmovnbq_m_u32): Remove.
7482 (vmovntq_m_u32): Remove.
7483 (__arm_vmovntq_u16): Remove.
7484 (__arm_vmovnbq_u16): Remove.
7485 (__arm_vmovntq_s16): Remove.
7486 (__arm_vmovnbq_s16): Remove.
7487 (__arm_vmovntq_u32): Remove.
7488 (__arm_vmovnbq_u32): Remove.
7489 (__arm_vmovntq_s32): Remove.
7490 (__arm_vmovnbq_s32): Remove.
7491 (__arm_vmovnbq_m_s16): Remove.
7492 (__arm_vmovntq_m_s16): Remove.
7493 (__arm_vmovnbq_m_u16): Remove.
7494 (__arm_vmovntq_m_u16): Remove.
7495 (__arm_vmovnbq_m_s32): Remove.
7496 (__arm_vmovntq_m_s32): Remove.
7497 (__arm_vmovnbq_m_u32): Remove.
7498 (__arm_vmovntq_m_u32): Remove.
7499 (__arm_vmovntq): Remove.
7500 (__arm_vmovnbq): Remove.
7501 (__arm_vmovnbq_m): Remove.
7502 (__arm_vmovntq_m): Remove.
7503 (vqmovuntq): Remove.
7504 (vqmovunbq): Remove.
7505 (vqmovunbq_m): Remove.
7506 (vqmovuntq_m): Remove.
7507 (vqmovuntq_s16): Remove.
7508 (vqmovunbq_s16): Remove.
7509 (vqmovuntq_s32): Remove.
7510 (vqmovunbq_s32): Remove.
7511 (vqmovunbq_m_s16): Remove.
7512 (vqmovuntq_m_s16): Remove.
7513 (vqmovunbq_m_s32): Remove.
7514 (vqmovuntq_m_s32): Remove.
7515 (__arm_vqmovuntq_s16): Remove.
7516 (__arm_vqmovunbq_s16): Remove.
7517 (__arm_vqmovuntq_s32): Remove.
7518 (__arm_vqmovunbq_s32): Remove.
7519 (__arm_vqmovunbq_m_s16): Remove.
7520 (__arm_vqmovuntq_m_s16): Remove.
7521 (__arm_vqmovunbq_m_s32): Remove.
7522 (__arm_vqmovuntq_m_s32): Remove.
7523 (__arm_vqmovuntq): Remove.
7524 (__arm_vqmovunbq): Remove.
7525 (__arm_vqmovunbq_m): Remove.
7526 (__arm_vqmovuntq_m): Remove.
7528 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7530 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
7531 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
7534 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
7536 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
7537 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
7538 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
7539 (mve_vqmovuntq_s<mode>): Merge into ...
7540 (@mve_<mve_insn>q_<supf><mode>): ... this.
7541 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
7542 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
7543 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
7544 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7546 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7548 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
7549 (binary_move_narrow_unsigned): New.
7550 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
7551 (binary_move_narrow_unsigned): New.
7553 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7555 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
7556 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
7557 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
7558 (vrndpq, vrndq, vrndxq): New.
7559 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
7560 (vrndpq, vrndq, vrndxq): New.
7561 * config/arm/arm_mve.h (vrndxq): Remove.
7579 (vrndxq_f16): Remove.
7580 (vrndxq_f32): Remove.
7581 (vrndq_f16): Remove.
7582 (vrndq_f32): Remove.
7583 (vrndpq_f16): Remove.
7584 (vrndpq_f32): Remove.
7585 (vrndnq_f16): Remove.
7586 (vrndnq_f32): Remove.
7587 (vrndmq_f16): Remove.
7588 (vrndmq_f32): Remove.
7589 (vrndaq_f16): Remove.
7590 (vrndaq_f32): Remove.
7591 (vrndaq_m_f16): Remove.
7592 (vrndmq_m_f16): Remove.
7593 (vrndnq_m_f16): Remove.
7594 (vrndpq_m_f16): Remove.
7595 (vrndq_m_f16): Remove.
7596 (vrndxq_m_f16): Remove.
7597 (vrndaq_m_f32): Remove.
7598 (vrndmq_m_f32): Remove.
7599 (vrndnq_m_f32): Remove.
7600 (vrndpq_m_f32): Remove.
7601 (vrndq_m_f32): Remove.
7602 (vrndxq_m_f32): Remove.
7603 (vrndq_x_f16): Remove.
7604 (vrndq_x_f32): Remove.
7605 (vrndnq_x_f16): Remove.
7606 (vrndnq_x_f32): Remove.
7607 (vrndmq_x_f16): Remove.
7608 (vrndmq_x_f32): Remove.
7609 (vrndpq_x_f16): Remove.
7610 (vrndpq_x_f32): Remove.
7611 (vrndaq_x_f16): Remove.
7612 (vrndaq_x_f32): Remove.
7613 (vrndxq_x_f16): Remove.
7614 (vrndxq_x_f32): Remove.
7615 (__arm_vrndxq_f16): Remove.
7616 (__arm_vrndxq_f32): Remove.
7617 (__arm_vrndq_f16): Remove.
7618 (__arm_vrndq_f32): Remove.
7619 (__arm_vrndpq_f16): Remove.
7620 (__arm_vrndpq_f32): Remove.
7621 (__arm_vrndnq_f16): Remove.
7622 (__arm_vrndnq_f32): Remove.
7623 (__arm_vrndmq_f16): Remove.
7624 (__arm_vrndmq_f32): Remove.
7625 (__arm_vrndaq_f16): Remove.
7626 (__arm_vrndaq_f32): Remove.
7627 (__arm_vrndaq_m_f16): Remove.
7628 (__arm_vrndmq_m_f16): Remove.
7629 (__arm_vrndnq_m_f16): Remove.
7630 (__arm_vrndpq_m_f16): Remove.
7631 (__arm_vrndq_m_f16): Remove.
7632 (__arm_vrndxq_m_f16): Remove.
7633 (__arm_vrndaq_m_f32): Remove.
7634 (__arm_vrndmq_m_f32): Remove.
7635 (__arm_vrndnq_m_f32): Remove.
7636 (__arm_vrndpq_m_f32): Remove.
7637 (__arm_vrndq_m_f32): Remove.
7638 (__arm_vrndxq_m_f32): Remove.
7639 (__arm_vrndq_x_f16): Remove.
7640 (__arm_vrndq_x_f32): Remove.
7641 (__arm_vrndnq_x_f16): Remove.
7642 (__arm_vrndnq_x_f32): Remove.
7643 (__arm_vrndmq_x_f16): Remove.
7644 (__arm_vrndmq_x_f32): Remove.
7645 (__arm_vrndpq_x_f16): Remove.
7646 (__arm_vrndpq_x_f32): Remove.
7647 (__arm_vrndaq_x_f16): Remove.
7648 (__arm_vrndaq_x_f32): Remove.
7649 (__arm_vrndxq_x_f16): Remove.
7650 (__arm_vrndxq_x_f32): Remove.
7651 (__arm_vrndxq): Remove.
7652 (__arm_vrndq): Remove.
7653 (__arm_vrndpq): Remove.
7654 (__arm_vrndnq): Remove.
7655 (__arm_vrndmq): Remove.
7656 (__arm_vrndaq): Remove.
7657 (__arm_vrndaq_m): Remove.
7658 (__arm_vrndmq_m): Remove.
7659 (__arm_vrndnq_m): Remove.
7660 (__arm_vrndpq_m): Remove.
7661 (__arm_vrndq_m): Remove.
7662 (__arm_vrndxq_m): Remove.
7663 (__arm_vrndq_x): Remove.
7664 (__arm_vrndnq_x): Remove.
7665 (__arm_vrndmq_x): Remove.
7666 (__arm_vrndpq_x): Remove.
7667 (__arm_vrndaq_x): Remove.
7668 (__arm_vrndxq_x): Remove.
7670 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7672 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
7673 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
7674 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
7675 (vclzq, vqabsq, vqnegq): New.
7676 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
7677 (vqabsq, vqnegq): New.
7678 * config/arm/arm_mve.h (vabsq): Remove.
7681 (vabsq_f16): Remove.
7682 (vabsq_f32): Remove.
7684 (vabsq_s16): Remove.
7685 (vabsq_s32): Remove.
7686 (vabsq_m_s8): Remove.
7687 (vabsq_m_s16): Remove.
7688 (vabsq_m_s32): Remove.
7689 (vabsq_m_f16): Remove.
7690 (vabsq_m_f32): Remove.
7691 (vabsq_x_s8): Remove.
7692 (vabsq_x_s16): Remove.
7693 (vabsq_x_s32): Remove.
7694 (vabsq_x_f16): Remove.
7695 (vabsq_x_f32): Remove.
7696 (__arm_vabsq_s8): Remove.
7697 (__arm_vabsq_s16): Remove.
7698 (__arm_vabsq_s32): Remove.
7699 (__arm_vabsq_m_s8): Remove.
7700 (__arm_vabsq_m_s16): Remove.
7701 (__arm_vabsq_m_s32): Remove.
7702 (__arm_vabsq_x_s8): Remove.
7703 (__arm_vabsq_x_s16): Remove.
7704 (__arm_vabsq_x_s32): Remove.
7705 (__arm_vabsq_f16): Remove.
7706 (__arm_vabsq_f32): Remove.
7707 (__arm_vabsq_m_f16): Remove.
7708 (__arm_vabsq_m_f32): Remove.
7709 (__arm_vabsq_x_f16): Remove.
7710 (__arm_vabsq_x_f32): Remove.
7711 (__arm_vabsq): Remove.
7712 (__arm_vabsq_m): Remove.
7713 (__arm_vabsq_x): Remove.
7717 (vnegq_f16): Remove.
7718 (vnegq_f32): Remove.
7720 (vnegq_s16): Remove.
7721 (vnegq_s32): Remove.
7722 (vnegq_m_s8): Remove.
7723 (vnegq_m_s16): Remove.
7724 (vnegq_m_s32): Remove.
7725 (vnegq_m_f16): Remove.
7726 (vnegq_m_f32): Remove.
7727 (vnegq_x_s8): Remove.
7728 (vnegq_x_s16): Remove.
7729 (vnegq_x_s32): Remove.
7730 (vnegq_x_f16): Remove.
7731 (vnegq_x_f32): Remove.
7732 (__arm_vnegq_s8): Remove.
7733 (__arm_vnegq_s16): Remove.
7734 (__arm_vnegq_s32): Remove.
7735 (__arm_vnegq_m_s8): Remove.
7736 (__arm_vnegq_m_s16): Remove.
7737 (__arm_vnegq_m_s32): Remove.
7738 (__arm_vnegq_x_s8): Remove.
7739 (__arm_vnegq_x_s16): Remove.
7740 (__arm_vnegq_x_s32): Remove.
7741 (__arm_vnegq_f16): Remove.
7742 (__arm_vnegq_f32): Remove.
7743 (__arm_vnegq_m_f16): Remove.
7744 (__arm_vnegq_m_f32): Remove.
7745 (__arm_vnegq_x_f16): Remove.
7746 (__arm_vnegq_x_f32): Remove.
7747 (__arm_vnegq): Remove.
7748 (__arm_vnegq_m): Remove.
7749 (__arm_vnegq_x): Remove.
7754 (vclsq_s16): Remove.
7755 (vclsq_s32): Remove.
7756 (vclsq_m_s8): Remove.
7757 (vclsq_m_s16): Remove.
7758 (vclsq_m_s32): Remove.
7759 (vclsq_x_s8): Remove.
7760 (vclsq_x_s16): Remove.
7761 (vclsq_x_s32): Remove.
7762 (__arm_vclsq_s8): Remove.
7763 (__arm_vclsq_s16): Remove.
7764 (__arm_vclsq_s32): Remove.
7765 (__arm_vclsq_m_s8): Remove.
7766 (__arm_vclsq_m_s16): Remove.
7767 (__arm_vclsq_m_s32): Remove.
7768 (__arm_vclsq_x_s8): Remove.
7769 (__arm_vclsq_x_s16): Remove.
7770 (__arm_vclsq_x_s32): Remove.
7771 (__arm_vclsq): Remove.
7772 (__arm_vclsq_m): Remove.
7773 (__arm_vclsq_x): Remove.
7778 (vclzq_s16): Remove.
7779 (vclzq_s32): Remove.
7781 (vclzq_u16): Remove.
7782 (vclzq_u32): Remove.
7783 (vclzq_m_u8): Remove.
7784 (vclzq_m_s8): Remove.
7785 (vclzq_m_u16): Remove.
7786 (vclzq_m_s16): Remove.
7787 (vclzq_m_u32): Remove.
7788 (vclzq_m_s32): Remove.
7789 (vclzq_x_s8): Remove.
7790 (vclzq_x_s16): Remove.
7791 (vclzq_x_s32): Remove.
7792 (vclzq_x_u8): Remove.
7793 (vclzq_x_u16): Remove.
7794 (vclzq_x_u32): Remove.
7795 (__arm_vclzq_s8): Remove.
7796 (__arm_vclzq_s16): Remove.
7797 (__arm_vclzq_s32): Remove.
7798 (__arm_vclzq_u8): Remove.
7799 (__arm_vclzq_u16): Remove.
7800 (__arm_vclzq_u32): Remove.
7801 (__arm_vclzq_m_u8): Remove.
7802 (__arm_vclzq_m_s8): Remove.
7803 (__arm_vclzq_m_u16): Remove.
7804 (__arm_vclzq_m_s16): Remove.
7805 (__arm_vclzq_m_u32): Remove.
7806 (__arm_vclzq_m_s32): Remove.
7807 (__arm_vclzq_x_s8): Remove.
7808 (__arm_vclzq_x_s16): Remove.
7809 (__arm_vclzq_x_s32): Remove.
7810 (__arm_vclzq_x_u8): Remove.
7811 (__arm_vclzq_x_u16): Remove.
7812 (__arm_vclzq_x_u32): Remove.
7813 (__arm_vclzq): Remove.
7814 (__arm_vclzq_m): Remove.
7815 (__arm_vclzq_x): Remove.
7820 (vqabsq_s8): Remove.
7821 (vqabsq_s16): Remove.
7822 (vqabsq_s32): Remove.
7823 (vqnegq_s8): Remove.
7824 (vqnegq_s16): Remove.
7825 (vqnegq_s32): Remove.
7826 (vqnegq_m_s8): Remove.
7827 (vqabsq_m_s8): Remove.
7828 (vqnegq_m_s16): Remove.
7829 (vqabsq_m_s16): Remove.
7830 (vqnegq_m_s32): Remove.
7831 (vqabsq_m_s32): Remove.
7832 (__arm_vqabsq_s8): Remove.
7833 (__arm_vqabsq_s16): Remove.
7834 (__arm_vqabsq_s32): Remove.
7835 (__arm_vqnegq_s8): Remove.
7836 (__arm_vqnegq_s16): Remove.
7837 (__arm_vqnegq_s32): Remove.
7838 (__arm_vqnegq_m_s8): Remove.
7839 (__arm_vqabsq_m_s8): Remove.
7840 (__arm_vqnegq_m_s16): Remove.
7841 (__arm_vqabsq_m_s16): Remove.
7842 (__arm_vqnegq_m_s32): Remove.
7843 (__arm_vqabsq_m_s32): Remove.
7844 (__arm_vqabsq): Remove.
7845 (__arm_vqnegq): Remove.
7846 (__arm_vqnegq_m): Remove.
7847 (__arm_vqabsq_m): Remove.
7849 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7851 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
7852 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
7853 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
7854 vrndm, vrndn, vrndp, vrnd, vrndx.
7855 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
7856 VQABSQ_M_S, VQNEGQ_M_S.
7858 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
7859 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
7860 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
7861 (@mve_<mve_insn>q_f<mode>): ... this.
7862 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
7863 (mve_v<absneg_str>q_f<mode>): ... this.
7864 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
7865 (mve_v<absneg_str>q_s<mode>): ... this.
7866 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
7867 (@mve_<mve_insn>q_<supf><mode>): ... this.
7868 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
7869 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
7870 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
7871 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7872 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
7873 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
7874 (mve_vrndxq_m_f<mode>): Merge into ...
7875 (@mve_<mve_insn>q_m_f<mode>): ... this.
7877 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
7879 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
7880 * config/arm/arm-mve-builtins-shapes.h (unary): New.
7882 2023-05-09 Jakub Jelinek <jakub@redhat.com>
7884 * mux-utils.h: Fix comment typo, avoides -> avoids.
7886 2023-05-09 Jakub Jelinek <jakub@redhat.com>
7888 PR tree-optimization/109778
7889 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
7890 wi::zext (x, width) rather than x if width != precision, rather
7891 than using wi::zext (right, width) after the shift.
7892 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
7893 of wi::lrotate or wi::rrotate.
7895 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
7897 * genmatch.cc (get_out_file): Make static and rename to ...
7898 (choose_output): ... this. Reimplement. Update all uses ...
7899 (decision_tree::gen): ... here and ...
7902 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
7904 * genmatch.cc (showUsage): Reimplement as ...
7905 (usage): ...this. Adjust all uses.
7906 (main): Print usage when no arguments. Add missing 'return 1'.
7908 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
7910 * genmatch.cc (header_file): Make static.
7911 (emit_func): Rename to...
7912 (fp_decl): ... this. Adjust all uses.
7913 (fp_decl_done): New function. Use it...
7914 (decision_tree::gen): ... here and...
7915 (write_predicate): ... here.
7918 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
7920 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
7923 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
7924 Uros Bizjak <ubizjak@gmail.com>
7926 * config/i386/i386.md (any_or_plus): Move definition earlier.
7927 (*insvti_highpart_1): New define_insn_and_split to overwrite
7928 (insv) the highpart of a TImode register/memory.
7930 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
7932 * auto-profile.cc (auto_profile): Check todo from early_inline
7933 to see if cleanup_tree_vfg needs to be called.
7934 (early_inline): Return todo from early_inliner.
7936 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
7938 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
7940 (pass_vsetvl::get_block_info): New.
7941 (pass_vsetvl::update_vector_info): New.
7942 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
7943 (pass_vsetvl::compute_local_backward_infos): Ditto.
7944 (pass_vsetvl::transfer_before): Ditto.
7945 (pass_vsetvl::transfer_after): Ditto.
7946 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
7947 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
7948 (pass_vsetvl::cleanup_insns): Ditto.
7949 (pass_vsetvl::compute_local_backward_infos): Use
7952 2023-05-08 Jeff Law <jlaw@ventanamicro>
7954 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
7956 2023-05-08 Richard Biener <rguenther@suse.de>
7957 Michael Meissner <meissner@linux.ibm.com>
7959 PR middle-end/108623
7960 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
7961 Align bit fields > 1 bit to at least an 8-bit boundary.
7963 2023-05-08 Andrew Pinski <apinski@marvell.com>
7965 PR tree-optimization/109424
7966 PR tree-optimization/59424
7967 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
7968 (factor_out_conditional_operation): This and add support for all unary
7970 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
7971 to call factor_out_conditional_operation instead.
7973 2023-05-08 Andrew Pinski <apinski@marvell.com>
7975 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
7976 over factor_out_conditional_conversion.
7978 2023-05-08 Andrew Pinski <apinski@marvell.com>
7980 PR tree-optimization/49959
7981 PR tree-optimization/103771
7982 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
7983 Diamond shapped bb form for factor_out_conditional_conversion.
7985 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7987 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
7988 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
7989 (riscv_vector_get_mask_mode): Ditto.
7990 (get_mask_policy_no_pred): Ditto.
7991 (get_tail_policy_no_pred): Ditto.
7992 (get_mask_mode): New function.
7993 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
7994 (get_tail_policy_no_pred): Ditto.
7995 (riscv_vector_mask_mode_p): Ditto.
7996 (riscv_vector_get_mask_mode): Ditto.
7997 (get_mask_mode): New function.
7998 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
8000 (get_tail_policy_for_pred): Ditto.
8001 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
8002 (get_mask_policy_for_pred): Ditto
8003 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
8005 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
8007 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
8008 (riscv_select_multilib): New.
8009 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
8010 also handle select_by_abi.
8011 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
8012 to select_by_abi_arch_cmodel from 1.
8013 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
8014 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
8016 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
8018 * Makefile.in: (gimple-match-head.o-warn): Remove.
8019 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
8020 gimple-match-exports.cc.
8021 (gimple-match-auto.h): Only depend on s-gimple-match.
8022 (generic-match-auto.h): Likewise.
8024 2023-05-08 Andrew Pinski <apinski@marvell.com>
8026 PR tree-optimization/109691
8027 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
8029 If the removed statement can throw, have need_eh_cleanup
8030 include the bb of that statement.
8031 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
8032 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
8034 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
8035 Initialize dceworklist instead of stmts_to_remove.
8036 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
8037 Destore dceworklist instead of stmts_to_remove.
8038 (substitute_and_fold_dom_walker::before_dom_children):
8039 Set dceworklist instead of adding to stmts_to_remove.
8040 (substitute_and_fold_engine::substitute_and_fold):
8041 Call simple_dce_from_worklist instead of poping
8043 Don't update the stat on removal statements.
8045 2023-05-07 Andrew Pinski <apinski@marvell.com>
8048 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
8049 Change argument type to aarch64_feature_flags.
8050 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
8051 constructor argument type to aarch64_feature_flags.
8052 Change m_old_asm_isa_flags to be aarch64_feature_flags.
8054 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
8056 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
8057 more parallel code if can_create_pseudo_p.
8059 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
8062 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
8063 immediately before moving a multi-word register by parts.
8065 2023-05-06 Jeff Law <jlaw@ventanamicro>
8067 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
8069 2023-05-06 Michael Collison <collison@rivosinc.com>
8071 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
8072 Check that GET_MODE_NUNITS is a multiple of 2.
8074 2023-05-06 Michael Collison <collison@rivosinc.com>
8076 * config/riscv/riscv.cc
8077 (riscv_estimated_poly_value): Implement
8078 TARGET_ESTIMATED_POLY_VALUE.
8079 (riscv_preferred_simd_mode): Implement
8080 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
8081 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
8082 (riscv_empty_mask_is_expensive): Implement
8083 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
8084 (riscv_vectorize_create_costs): Implement
8085 TARGET_VECTORIZE_CREATE_COSTS.
8086 (riscv_support_vector_misalignment): Implement
8087 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
8088 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
8089 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
8090 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
8091 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
8093 2023-05-06 Jeff Law <jlaw@ventanamicro>
8095 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
8096 duplicate definition.
8098 2023-05-06 Michael Collison <collison@rivosinc.com>
8100 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
8101 (riscv_vector_preferred_simd_mode): Ditto.
8102 (get_mask_policy_no_pred): Ditto.
8103 (get_tail_policy_no_pred): Ditto.
8104 (riscv_vector_mask_mode_p): Ditto.
8105 (riscv_vector_get_mask_mode): Ditto.
8107 2023-05-06 Michael Collison <collison@rivosinc.com>
8109 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
8110 Remove static declaration to to make externally visible.
8111 (get_mask_policy_for_pred): Ditto.
8112 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
8113 New external declaration.
8114 (get_mask_policy_for_pred): Ditto.
8116 2023-05-06 Michael Collison <collison@rivosinc.com>
8118 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
8119 (riscv_vector_get_mask_mode): Ditto.
8120 (get_mask_policy_no_pred): Ditto.
8121 (get_tail_policy_no_pred): Ditto.
8123 2023-05-06 Xi Ruoyao <xry111@xry111.site>
8125 * config/loongarch/loongarch.h (struct machine_function): Add
8126 reg_is_wrapped_separately array for register wrapping
8128 * config/loongarch/loongarch.cc
8129 (loongarch_get_separate_components): New function.
8130 (loongarch_components_for_bb): Likewise.
8131 (loongarch_disqualify_components): Likewise.
8132 (loongarch_process_components): Likewise.
8133 (loongarch_emit_prologue_components): Likewise.
8134 (loongarch_emit_epilogue_components): Likewise.
8135 (loongarch_set_handled_components): Likewise.
8136 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
8137 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
8138 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
8139 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
8140 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
8141 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
8142 (loongarch_for_each_saved_reg): Skip registers that are wrapped
8145 2023-05-06 Xi Ruoyao <xry111@xry111.site>
8148 * Makefile.in (s-macro_list): Pass -nostdinc to
8151 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8153 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
8154 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
8155 (preferred_simd_mode): Ditto.
8156 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
8157 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
8158 (riscv_preferred_simd_mode): New function.
8159 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
8160 * config/riscv/vector.md: Add autovec.md.
8161 * config/riscv/autovec.md: New file.
8163 2023-05-06 Jakub Jelinek <jakub@redhat.com>
8165 * real.h (dconst_pi): Define.
8166 (dconst_e_ptr): Formatting fix.
8167 (dconst_pi_ptr): Declare.
8168 * real.cc (dconst_pi_ptr): New function.
8169 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
8170 boundaries range with range computed from sin/cos of the particular
8171 bounds if the argument range is shorter than 2*pi.
8172 (cfn_sincos::op1_range): Take bulps into account when determining
8173 which result ranges are always invalid or behave like known NAN.
8175 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
8177 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
8178 pass type to vrange_storage::equal_p.
8179 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
8180 (irange_storage::equal_p): Same.
8181 (frange_storage::equal_p): Same.
8182 * value-range-storage.h (class frange_storage): Same.
8184 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8187 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
8188 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
8190 2023-05-06 liuhongt <hongtao.liu@intel.com>
8192 * combine.cc (maybe_swap_commutative_operands): Canonicalize
8193 vec_merge when mask is constant.
8194 * doc/md.texi: Document vec_merge canonicalization.
8196 2023-05-06 Jakub Jelinek <jakub@redhat.com>
8198 * value-range.h (frange_arithmetic): Declare.
8199 * range-op-float.cc (frange_arithmetic): No longer static.
8200 * gimple-range-op.cc (frange_mpfr_arg1): New function.
8201 (cfn_sqrt::fold_range): Intersect the generic boundaries range
8202 with range computed from sqrt of the particular bounds.
8203 (cfn_sqrt::op1_range): Intersect the generic boundaries range
8204 with range computed from squared particular bounds.
8206 2023-05-06 Jakub Jelinek <jakub@redhat.com>
8208 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
8209 earlier with helper variables also renamed.
8210 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
8211 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
8212 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
8214 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
8216 * config/cris/cris.md (splitop): Add PLUS.
8217 * config/cris/cris.cc (cris_split_constant): Also handle
8218 PLUS when a split into two insns may be useful.
8220 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
8222 * config/cris/cris.md (movandsplit1): New define_peephole2.
8224 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
8226 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
8228 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
8230 * doc/md.texi (define_peephole2): Document order of scanning.
8232 2023-05-05 Pan Li <pan2.li@intel.com>
8233 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8235 * config/riscv/vector.md: Allow const as the operand of RVV
8238 2023-05-05 Pan Li <pan2.li@intel.com>
8240 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
8241 consumed by simplify_rtx.
8243 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8245 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
8246 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
8247 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
8248 * config/arm/arm_mve.h (vshrq): Remove.
8254 (vshrq_n_s8): Remove.
8255 (vshrq_n_s16): Remove.
8256 (vshrq_n_s32): Remove.
8257 (vshrq_n_u8): Remove.
8258 (vshrq_n_u16): Remove.
8259 (vshrq_n_u32): Remove.
8260 (vrshrq_n_u8): Remove.
8261 (vrshrq_n_s8): Remove.
8262 (vrshrq_n_u16): Remove.
8263 (vrshrq_n_s16): Remove.
8264 (vrshrq_n_u32): Remove.
8265 (vrshrq_n_s32): Remove.
8266 (vrshrq_m_n_s8): Remove.
8267 (vrshrq_m_n_s32): Remove.
8268 (vrshrq_m_n_s16): Remove.
8269 (vrshrq_m_n_u8): Remove.
8270 (vrshrq_m_n_u32): Remove.
8271 (vrshrq_m_n_u16): Remove.
8272 (vshrq_m_n_s8): Remove.
8273 (vshrq_m_n_s32): Remove.
8274 (vshrq_m_n_s16): Remove.
8275 (vshrq_m_n_u8): Remove.
8276 (vshrq_m_n_u32): Remove.
8277 (vshrq_m_n_u16): Remove.
8278 (vrshrq_x_n_s8): Remove.
8279 (vrshrq_x_n_s16): Remove.
8280 (vrshrq_x_n_s32): Remove.
8281 (vrshrq_x_n_u8): Remove.
8282 (vrshrq_x_n_u16): Remove.
8283 (vrshrq_x_n_u32): Remove.
8284 (vshrq_x_n_s8): Remove.
8285 (vshrq_x_n_s16): Remove.
8286 (vshrq_x_n_s32): Remove.
8287 (vshrq_x_n_u8): Remove.
8288 (vshrq_x_n_u16): Remove.
8289 (vshrq_x_n_u32): Remove.
8290 (__arm_vshrq_n_s8): Remove.
8291 (__arm_vshrq_n_s16): Remove.
8292 (__arm_vshrq_n_s32): Remove.
8293 (__arm_vshrq_n_u8): Remove.
8294 (__arm_vshrq_n_u16): Remove.
8295 (__arm_vshrq_n_u32): Remove.
8296 (__arm_vrshrq_n_u8): Remove.
8297 (__arm_vrshrq_n_s8): Remove.
8298 (__arm_vrshrq_n_u16): Remove.
8299 (__arm_vrshrq_n_s16): Remove.
8300 (__arm_vrshrq_n_u32): Remove.
8301 (__arm_vrshrq_n_s32): Remove.
8302 (__arm_vrshrq_m_n_s8): Remove.
8303 (__arm_vrshrq_m_n_s32): Remove.
8304 (__arm_vrshrq_m_n_s16): Remove.
8305 (__arm_vrshrq_m_n_u8): Remove.
8306 (__arm_vrshrq_m_n_u32): Remove.
8307 (__arm_vrshrq_m_n_u16): Remove.
8308 (__arm_vshrq_m_n_s8): Remove.
8309 (__arm_vshrq_m_n_s32): Remove.
8310 (__arm_vshrq_m_n_s16): Remove.
8311 (__arm_vshrq_m_n_u8): Remove.
8312 (__arm_vshrq_m_n_u32): Remove.
8313 (__arm_vshrq_m_n_u16): Remove.
8314 (__arm_vrshrq_x_n_s8): Remove.
8315 (__arm_vrshrq_x_n_s16): Remove.
8316 (__arm_vrshrq_x_n_s32): Remove.
8317 (__arm_vrshrq_x_n_u8): Remove.
8318 (__arm_vrshrq_x_n_u16): Remove.
8319 (__arm_vrshrq_x_n_u32): Remove.
8320 (__arm_vshrq_x_n_s8): Remove.
8321 (__arm_vshrq_x_n_s16): Remove.
8322 (__arm_vshrq_x_n_s32): Remove.
8323 (__arm_vshrq_x_n_u8): Remove.
8324 (__arm_vshrq_x_n_u16): Remove.
8325 (__arm_vshrq_x_n_u32): Remove.
8326 (__arm_vshrq): Remove.
8327 (__arm_vrshrq): Remove.
8328 (__arm_vrshrq_m): Remove.
8329 (__arm_vshrq_m): Remove.
8330 (__arm_vrshrq_x): Remove.
8331 (__arm_vshrq_x): Remove.
8333 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8335 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
8336 (mve_insn): Add vrshr, vshr.
8337 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
8338 (mve_vrshrq_n_<supf><mode>): Merge into ...
8339 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8340 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
8342 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8344 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8346 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
8347 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
8349 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8351 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
8352 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
8353 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
8354 (vqrshrunbq, vqrshruntq): New.
8355 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
8356 (vqrshrunbq, vqrshruntq): New.
8357 * config/arm/arm-mve-builtins.cc
8358 (function_instance::has_inactive_argument): Handle vqshrunbq,
8359 vqshruntq, vqrshrunbq, vqrshruntq.
8360 * config/arm/arm_mve.h (vqrshrunbq): Remove.
8361 (vqrshruntq): Remove.
8362 (vqrshrunbq_m): Remove.
8363 (vqrshruntq_m): Remove.
8364 (vqrshrunbq_n_s16): Remove.
8365 (vqrshrunbq_n_s32): Remove.
8366 (vqrshruntq_n_s16): Remove.
8367 (vqrshruntq_n_s32): Remove.
8368 (vqrshrunbq_m_n_s32): Remove.
8369 (vqrshrunbq_m_n_s16): Remove.
8370 (vqrshruntq_m_n_s32): Remove.
8371 (vqrshruntq_m_n_s16): Remove.
8372 (__arm_vqrshrunbq_n_s16): Remove.
8373 (__arm_vqrshrunbq_n_s32): Remove.
8374 (__arm_vqrshruntq_n_s16): Remove.
8375 (__arm_vqrshruntq_n_s32): Remove.
8376 (__arm_vqrshrunbq_m_n_s32): Remove.
8377 (__arm_vqrshrunbq_m_n_s16): Remove.
8378 (__arm_vqrshruntq_m_n_s32): Remove.
8379 (__arm_vqrshruntq_m_n_s16): Remove.
8380 (__arm_vqrshrunbq): Remove.
8381 (__arm_vqrshruntq): Remove.
8382 (__arm_vqrshrunbq_m): Remove.
8383 (__arm_vqrshruntq_m): Remove.
8384 (vqshrunbq): Remove.
8385 (vqshruntq): Remove.
8386 (vqshrunbq_m): Remove.
8387 (vqshruntq_m): Remove.
8388 (vqshrunbq_n_s16): Remove.
8389 (vqshruntq_n_s16): Remove.
8390 (vqshrunbq_n_s32): Remove.
8391 (vqshruntq_n_s32): Remove.
8392 (vqshrunbq_m_n_s32): Remove.
8393 (vqshrunbq_m_n_s16): Remove.
8394 (vqshruntq_m_n_s32): Remove.
8395 (vqshruntq_m_n_s16): Remove.
8396 (__arm_vqshrunbq_n_s16): Remove.
8397 (__arm_vqshruntq_n_s16): Remove.
8398 (__arm_vqshrunbq_n_s32): Remove.
8399 (__arm_vqshruntq_n_s32): Remove.
8400 (__arm_vqshrunbq_m_n_s32): Remove.
8401 (__arm_vqshrunbq_m_n_s16): Remove.
8402 (__arm_vqshruntq_m_n_s32): Remove.
8403 (__arm_vqshruntq_m_n_s16): Remove.
8404 (__arm_vqshrunbq): Remove.
8405 (__arm_vqshruntq): Remove.
8406 (__arm_vqshrunbq_m): Remove.
8407 (__arm_vqshruntq_m): Remove.
8409 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8411 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
8412 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
8413 (MVE_SHRN_M_N): Likewise.
8414 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
8415 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
8417 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
8418 (mve_vqrshruntq_n_s<mode>): Remove.
8419 (mve_vqshrunbq_n_s<mode>): Remove.
8420 (mve_vqshruntq_n_s<mode>): Remove.
8421 (mve_vqrshrunbq_m_n_s<mode>): Remove.
8422 (mve_vqrshruntq_m_n_s<mode>): Remove.
8423 (mve_vqshrunbq_m_n_s<mode>): Remove.
8424 (mve_vqshruntq_m_n_s<mode>): Remove.
8426 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8428 * config/arm/arm-mve-builtins-shapes.cc
8429 (binary_rshift_narrow_unsigned): New.
8430 * config/arm/arm-mve-builtins-shapes.h
8431 (binary_rshift_narrow_unsigned): New.
8433 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8435 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
8436 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
8437 (vqrshrnbq, vqrshrntq): New.
8438 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
8439 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
8441 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
8442 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
8443 * config/arm/arm-mve-builtins.cc
8444 (function_instance::has_inactive_argument): Handle vshrnbq,
8445 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
8447 * config/arm/arm_mve.h (vshrnbq): Remove.
8449 (vshrnbq_m): Remove.
8450 (vshrntq_m): Remove.
8451 (vshrnbq_n_s16): Remove.
8452 (vshrntq_n_s16): Remove.
8453 (vshrnbq_n_u16): Remove.
8454 (vshrntq_n_u16): Remove.
8455 (vshrnbq_n_s32): Remove.
8456 (vshrntq_n_s32): Remove.
8457 (vshrnbq_n_u32): Remove.
8458 (vshrntq_n_u32): Remove.
8459 (vshrnbq_m_n_s32): Remove.
8460 (vshrnbq_m_n_s16): Remove.
8461 (vshrnbq_m_n_u32): Remove.
8462 (vshrnbq_m_n_u16): Remove.
8463 (vshrntq_m_n_s32): Remove.
8464 (vshrntq_m_n_s16): Remove.
8465 (vshrntq_m_n_u32): Remove.
8466 (vshrntq_m_n_u16): Remove.
8467 (__arm_vshrnbq_n_s16): Remove.
8468 (__arm_vshrntq_n_s16): Remove.
8469 (__arm_vshrnbq_n_u16): Remove.
8470 (__arm_vshrntq_n_u16): Remove.
8471 (__arm_vshrnbq_n_s32): Remove.
8472 (__arm_vshrntq_n_s32): Remove.
8473 (__arm_vshrnbq_n_u32): Remove.
8474 (__arm_vshrntq_n_u32): Remove.
8475 (__arm_vshrnbq_m_n_s32): Remove.
8476 (__arm_vshrnbq_m_n_s16): Remove.
8477 (__arm_vshrnbq_m_n_u32): Remove.
8478 (__arm_vshrnbq_m_n_u16): Remove.
8479 (__arm_vshrntq_m_n_s32): Remove.
8480 (__arm_vshrntq_m_n_s16): Remove.
8481 (__arm_vshrntq_m_n_u32): Remove.
8482 (__arm_vshrntq_m_n_u16): Remove.
8483 (__arm_vshrnbq): Remove.
8484 (__arm_vshrntq): Remove.
8485 (__arm_vshrnbq_m): Remove.
8486 (__arm_vshrntq_m): Remove.
8489 (vrshrnbq_m): Remove.
8490 (vrshrntq_m): Remove.
8491 (vrshrnbq_n_s16): Remove.
8492 (vrshrntq_n_s16): Remove.
8493 (vrshrnbq_n_u16): Remove.
8494 (vrshrntq_n_u16): Remove.
8495 (vrshrnbq_n_s32): Remove.
8496 (vrshrntq_n_s32): Remove.
8497 (vrshrnbq_n_u32): Remove.
8498 (vrshrntq_n_u32): Remove.
8499 (vrshrnbq_m_n_s32): Remove.
8500 (vrshrnbq_m_n_s16): Remove.
8501 (vrshrnbq_m_n_u32): Remove.
8502 (vrshrnbq_m_n_u16): Remove.
8503 (vrshrntq_m_n_s32): Remove.
8504 (vrshrntq_m_n_s16): Remove.
8505 (vrshrntq_m_n_u32): Remove.
8506 (vrshrntq_m_n_u16): Remove.
8507 (__arm_vrshrnbq_n_s16): Remove.
8508 (__arm_vrshrntq_n_s16): Remove.
8509 (__arm_vrshrnbq_n_u16): Remove.
8510 (__arm_vrshrntq_n_u16): Remove.
8511 (__arm_vrshrnbq_n_s32): Remove.
8512 (__arm_vrshrntq_n_s32): Remove.
8513 (__arm_vrshrnbq_n_u32): Remove.
8514 (__arm_vrshrntq_n_u32): Remove.
8515 (__arm_vrshrnbq_m_n_s32): Remove.
8516 (__arm_vrshrnbq_m_n_s16): Remove.
8517 (__arm_vrshrnbq_m_n_u32): Remove.
8518 (__arm_vrshrnbq_m_n_u16): Remove.
8519 (__arm_vrshrntq_m_n_s32): Remove.
8520 (__arm_vrshrntq_m_n_s16): Remove.
8521 (__arm_vrshrntq_m_n_u32): Remove.
8522 (__arm_vrshrntq_m_n_u16): Remove.
8523 (__arm_vrshrnbq): Remove.
8524 (__arm_vrshrntq): Remove.
8525 (__arm_vrshrnbq_m): Remove.
8526 (__arm_vrshrntq_m): Remove.
8529 (vqshrnbq_m): Remove.
8530 (vqshrntq_m): Remove.
8531 (vqshrnbq_n_s16): Remove.
8532 (vqshrntq_n_s16): Remove.
8533 (vqshrnbq_n_u16): Remove.
8534 (vqshrntq_n_u16): Remove.
8535 (vqshrnbq_n_s32): Remove.
8536 (vqshrntq_n_s32): Remove.
8537 (vqshrnbq_n_u32): Remove.
8538 (vqshrntq_n_u32): Remove.
8539 (vqshrnbq_m_n_s32): Remove.
8540 (vqshrnbq_m_n_s16): Remove.
8541 (vqshrnbq_m_n_u32): Remove.
8542 (vqshrnbq_m_n_u16): Remove.
8543 (vqshrntq_m_n_s32): Remove.
8544 (vqshrntq_m_n_s16): Remove.
8545 (vqshrntq_m_n_u32): Remove.
8546 (vqshrntq_m_n_u16): Remove.
8547 (__arm_vqshrnbq_n_s16): Remove.
8548 (__arm_vqshrntq_n_s16): Remove.
8549 (__arm_vqshrnbq_n_u16): Remove.
8550 (__arm_vqshrntq_n_u16): Remove.
8551 (__arm_vqshrnbq_n_s32): Remove.
8552 (__arm_vqshrntq_n_s32): Remove.
8553 (__arm_vqshrnbq_n_u32): Remove.
8554 (__arm_vqshrntq_n_u32): Remove.
8555 (__arm_vqshrnbq_m_n_s32): Remove.
8556 (__arm_vqshrnbq_m_n_s16): Remove.
8557 (__arm_vqshrnbq_m_n_u32): Remove.
8558 (__arm_vqshrnbq_m_n_u16): Remove.
8559 (__arm_vqshrntq_m_n_s32): Remove.
8560 (__arm_vqshrntq_m_n_s16): Remove.
8561 (__arm_vqshrntq_m_n_u32): Remove.
8562 (__arm_vqshrntq_m_n_u16): Remove.
8563 (__arm_vqshrnbq): Remove.
8564 (__arm_vqshrntq): Remove.
8565 (__arm_vqshrnbq_m): Remove.
8566 (__arm_vqshrntq_m): Remove.
8567 (vqrshrnbq): Remove.
8568 (vqrshrntq): Remove.
8569 (vqrshrnbq_m): Remove.
8570 (vqrshrntq_m): Remove.
8571 (vqrshrnbq_n_s16): Remove.
8572 (vqrshrnbq_n_u16): Remove.
8573 (vqrshrnbq_n_s32): Remove.
8574 (vqrshrnbq_n_u32): Remove.
8575 (vqrshrntq_n_s16): Remove.
8576 (vqrshrntq_n_u16): Remove.
8577 (vqrshrntq_n_s32): Remove.
8578 (vqrshrntq_n_u32): Remove.
8579 (vqrshrnbq_m_n_s32): Remove.
8580 (vqrshrnbq_m_n_s16): Remove.
8581 (vqrshrnbq_m_n_u32): Remove.
8582 (vqrshrnbq_m_n_u16): Remove.
8583 (vqrshrntq_m_n_s32): Remove.
8584 (vqrshrntq_m_n_s16): Remove.
8585 (vqrshrntq_m_n_u32): Remove.
8586 (vqrshrntq_m_n_u16): Remove.
8587 (__arm_vqrshrnbq_n_s16): Remove.
8588 (__arm_vqrshrnbq_n_u16): Remove.
8589 (__arm_vqrshrnbq_n_s32): Remove.
8590 (__arm_vqrshrnbq_n_u32): Remove.
8591 (__arm_vqrshrntq_n_s16): Remove.
8592 (__arm_vqrshrntq_n_u16): Remove.
8593 (__arm_vqrshrntq_n_s32): Remove.
8594 (__arm_vqrshrntq_n_u32): Remove.
8595 (__arm_vqrshrnbq_m_n_s32): Remove.
8596 (__arm_vqrshrnbq_m_n_s16): Remove.
8597 (__arm_vqrshrnbq_m_n_u32): Remove.
8598 (__arm_vqrshrnbq_m_n_u16): Remove.
8599 (__arm_vqrshrntq_m_n_s32): Remove.
8600 (__arm_vqrshrntq_m_n_s16): Remove.
8601 (__arm_vqrshrntq_m_n_u32): Remove.
8602 (__arm_vqrshrntq_m_n_u16): Remove.
8603 (__arm_vqrshrnbq): Remove.
8604 (__arm_vqrshrntq): Remove.
8605 (__arm_vqrshrnbq_m): Remove.
8606 (__arm_vqrshrntq_m): Remove.
8608 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8610 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
8611 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
8612 vrshrnt, vshrnb, vshrnt.
8614 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
8615 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
8616 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
8617 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
8618 (mve_vshrntq_n_<supf><mode>): Merge into ...
8619 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8620 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
8621 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
8622 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
8623 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
8625 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8627 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8629 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
8631 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
8633 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8635 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
8636 (vmaxq, vminq): New.
8637 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
8638 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
8639 * config/arm/arm_mve.h (vminq): Remove.
8649 (vminq_u16): Remove.
8650 (vmaxq_u16): Remove.
8651 (vminq_s16): Remove.
8652 (vmaxq_s16): Remove.
8653 (vminq_u32): Remove.
8654 (vmaxq_u32): Remove.
8655 (vminq_s32): Remove.
8656 (vmaxq_s32): Remove.
8657 (vmaxq_m_s8): Remove.
8658 (vmaxq_m_s32): Remove.
8659 (vmaxq_m_s16): Remove.
8660 (vmaxq_m_u8): Remove.
8661 (vmaxq_m_u32): Remove.
8662 (vmaxq_m_u16): Remove.
8663 (vminq_m_s8): Remove.
8664 (vminq_m_s32): Remove.
8665 (vminq_m_s16): Remove.
8666 (vminq_m_u8): Remove.
8667 (vminq_m_u32): Remove.
8668 (vminq_m_u16): Remove.
8669 (vminq_x_s8): Remove.
8670 (vminq_x_s16): Remove.
8671 (vminq_x_s32): Remove.
8672 (vminq_x_u8): Remove.
8673 (vminq_x_u16): Remove.
8674 (vminq_x_u32): Remove.
8675 (vmaxq_x_s8): Remove.
8676 (vmaxq_x_s16): Remove.
8677 (vmaxq_x_s32): Remove.
8678 (vmaxq_x_u8): Remove.
8679 (vmaxq_x_u16): Remove.
8680 (vmaxq_x_u32): Remove.
8681 (__arm_vminq_u8): Remove.
8682 (__arm_vmaxq_u8): Remove.
8683 (__arm_vminq_s8): Remove.
8684 (__arm_vmaxq_s8): Remove.
8685 (__arm_vminq_u16): Remove.
8686 (__arm_vmaxq_u16): Remove.
8687 (__arm_vminq_s16): Remove.
8688 (__arm_vmaxq_s16): Remove.
8689 (__arm_vminq_u32): Remove.
8690 (__arm_vmaxq_u32): Remove.
8691 (__arm_vminq_s32): Remove.
8692 (__arm_vmaxq_s32): Remove.
8693 (__arm_vmaxq_m_s8): Remove.
8694 (__arm_vmaxq_m_s32): Remove.
8695 (__arm_vmaxq_m_s16): Remove.
8696 (__arm_vmaxq_m_u8): Remove.
8697 (__arm_vmaxq_m_u32): Remove.
8698 (__arm_vmaxq_m_u16): Remove.
8699 (__arm_vminq_m_s8): Remove.
8700 (__arm_vminq_m_s32): Remove.
8701 (__arm_vminq_m_s16): Remove.
8702 (__arm_vminq_m_u8): Remove.
8703 (__arm_vminq_m_u32): Remove.
8704 (__arm_vminq_m_u16): Remove.
8705 (__arm_vminq_x_s8): Remove.
8706 (__arm_vminq_x_s16): Remove.
8707 (__arm_vminq_x_s32): Remove.
8708 (__arm_vminq_x_u8): Remove.
8709 (__arm_vminq_x_u16): Remove.
8710 (__arm_vminq_x_u32): Remove.
8711 (__arm_vmaxq_x_s8): Remove.
8712 (__arm_vmaxq_x_s16): Remove.
8713 (__arm_vmaxq_x_s32): Remove.
8714 (__arm_vmaxq_x_u8): Remove.
8715 (__arm_vmaxq_x_u16): Remove.
8716 (__arm_vmaxq_x_u32): Remove.
8717 (__arm_vminq): Remove.
8718 (__arm_vmaxq): Remove.
8719 (__arm_vmaxq_m): Remove.
8720 (__arm_vminq_m): Remove.
8721 (__arm_vminq_x): Remove.
8722 (__arm_vmaxq_x): Remove.
8724 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8726 * config/arm/iterators.md (MAX_MIN_SU): New.
8727 (max_min_su_str): New.
8728 (max_min_supf): New.
8729 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
8730 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
8731 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
8733 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8735 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
8736 (vqshlq, vshlq): New.
8737 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
8738 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
8739 * config/arm/arm_mve.h (vshlq): Remove.
8742 (vshlq_m_r): Remove.
8744 (vshlq_m_n): Remove.
8746 (vshlq_x_n): Remove.
8748 (vshlq_s16): Remove.
8749 (vshlq_s32): Remove.
8751 (vshlq_u16): Remove.
8752 (vshlq_u32): Remove.
8753 (vshlq_r_u8): Remove.
8754 (vshlq_n_u8): Remove.
8755 (vshlq_r_s8): Remove.
8756 (vshlq_n_s8): Remove.
8757 (vshlq_r_u16): Remove.
8758 (vshlq_n_u16): Remove.
8759 (vshlq_r_s16): Remove.
8760 (vshlq_n_s16): Remove.
8761 (vshlq_r_u32): Remove.
8762 (vshlq_n_u32): Remove.
8763 (vshlq_r_s32): Remove.
8764 (vshlq_n_s32): Remove.
8765 (vshlq_m_r_u8): Remove.
8766 (vshlq_m_r_s8): Remove.
8767 (vshlq_m_r_u16): Remove.
8768 (vshlq_m_r_s16): Remove.
8769 (vshlq_m_r_u32): Remove.
8770 (vshlq_m_r_s32): Remove.
8771 (vshlq_m_u8): Remove.
8772 (vshlq_m_s8): Remove.
8773 (vshlq_m_u16): Remove.
8774 (vshlq_m_s16): Remove.
8775 (vshlq_m_u32): Remove.
8776 (vshlq_m_s32): Remove.
8777 (vshlq_m_n_s8): Remove.
8778 (vshlq_m_n_s32): Remove.
8779 (vshlq_m_n_s16): Remove.
8780 (vshlq_m_n_u8): Remove.
8781 (vshlq_m_n_u32): Remove.
8782 (vshlq_m_n_u16): Remove.
8783 (vshlq_x_s8): Remove.
8784 (vshlq_x_s16): Remove.
8785 (vshlq_x_s32): Remove.
8786 (vshlq_x_u8): Remove.
8787 (vshlq_x_u16): Remove.
8788 (vshlq_x_u32): Remove.
8789 (vshlq_x_n_s8): Remove.
8790 (vshlq_x_n_s16): Remove.
8791 (vshlq_x_n_s32): Remove.
8792 (vshlq_x_n_u8): Remove.
8793 (vshlq_x_n_u16): Remove.
8794 (vshlq_x_n_u32): Remove.
8795 (__arm_vshlq_s8): Remove.
8796 (__arm_vshlq_s16): Remove.
8797 (__arm_vshlq_s32): Remove.
8798 (__arm_vshlq_u8): Remove.
8799 (__arm_vshlq_u16): Remove.
8800 (__arm_vshlq_u32): Remove.
8801 (__arm_vshlq_r_u8): Remove.
8802 (__arm_vshlq_n_u8): Remove.
8803 (__arm_vshlq_r_s8): Remove.
8804 (__arm_vshlq_n_s8): Remove.
8805 (__arm_vshlq_r_u16): Remove.
8806 (__arm_vshlq_n_u16): Remove.
8807 (__arm_vshlq_r_s16): Remove.
8808 (__arm_vshlq_n_s16): Remove.
8809 (__arm_vshlq_r_u32): Remove.
8810 (__arm_vshlq_n_u32): Remove.
8811 (__arm_vshlq_r_s32): Remove.
8812 (__arm_vshlq_n_s32): Remove.
8813 (__arm_vshlq_m_r_u8): Remove.
8814 (__arm_vshlq_m_r_s8): Remove.
8815 (__arm_vshlq_m_r_u16): Remove.
8816 (__arm_vshlq_m_r_s16): Remove.
8817 (__arm_vshlq_m_r_u32): Remove.
8818 (__arm_vshlq_m_r_s32): Remove.
8819 (__arm_vshlq_m_u8): Remove.
8820 (__arm_vshlq_m_s8): Remove.
8821 (__arm_vshlq_m_u16): Remove.
8822 (__arm_vshlq_m_s16): Remove.
8823 (__arm_vshlq_m_u32): Remove.
8824 (__arm_vshlq_m_s32): Remove.
8825 (__arm_vshlq_m_n_s8): Remove.
8826 (__arm_vshlq_m_n_s32): Remove.
8827 (__arm_vshlq_m_n_s16): Remove.
8828 (__arm_vshlq_m_n_u8): Remove.
8829 (__arm_vshlq_m_n_u32): Remove.
8830 (__arm_vshlq_m_n_u16): Remove.
8831 (__arm_vshlq_x_s8): Remove.
8832 (__arm_vshlq_x_s16): Remove.
8833 (__arm_vshlq_x_s32): Remove.
8834 (__arm_vshlq_x_u8): Remove.
8835 (__arm_vshlq_x_u16): Remove.
8836 (__arm_vshlq_x_u32): Remove.
8837 (__arm_vshlq_x_n_s8): Remove.
8838 (__arm_vshlq_x_n_s16): Remove.
8839 (__arm_vshlq_x_n_s32): Remove.
8840 (__arm_vshlq_x_n_u8): Remove.
8841 (__arm_vshlq_x_n_u16): Remove.
8842 (__arm_vshlq_x_n_u32): Remove.
8843 (__arm_vshlq): Remove.
8844 (__arm_vshlq_r): Remove.
8845 (__arm_vshlq_n): Remove.
8846 (__arm_vshlq_m_r): Remove.
8847 (__arm_vshlq_m): Remove.
8848 (__arm_vshlq_m_n): Remove.
8849 (__arm_vshlq_x): Remove.
8850 (__arm_vshlq_x_n): Remove.
8854 (vqshlq_m_r): Remove.
8855 (vqshlq_m_n): Remove.
8857 (vqshlq_u8): Remove.
8858 (vqshlq_r_u8): Remove.
8859 (vqshlq_n_u8): Remove.
8860 (vqshlq_s8): Remove.
8861 (vqshlq_r_s8): Remove.
8862 (vqshlq_n_s8): Remove.
8863 (vqshlq_u16): Remove.
8864 (vqshlq_r_u16): Remove.
8865 (vqshlq_n_u16): Remove.
8866 (vqshlq_s16): Remove.
8867 (vqshlq_r_s16): Remove.
8868 (vqshlq_n_s16): Remove.
8869 (vqshlq_u32): Remove.
8870 (vqshlq_r_u32): Remove.
8871 (vqshlq_n_u32): Remove.
8872 (vqshlq_s32): Remove.
8873 (vqshlq_r_s32): Remove.
8874 (vqshlq_n_s32): Remove.
8875 (vqshlq_m_r_u8): Remove.
8876 (vqshlq_m_r_s8): Remove.
8877 (vqshlq_m_r_u16): Remove.
8878 (vqshlq_m_r_s16): Remove.
8879 (vqshlq_m_r_u32): Remove.
8880 (vqshlq_m_r_s32): Remove.
8881 (vqshlq_m_n_s8): Remove.
8882 (vqshlq_m_n_s32): Remove.
8883 (vqshlq_m_n_s16): Remove.
8884 (vqshlq_m_n_u8): Remove.
8885 (vqshlq_m_n_u32): Remove.
8886 (vqshlq_m_n_u16): Remove.
8887 (vqshlq_m_s8): Remove.
8888 (vqshlq_m_s32): Remove.
8889 (vqshlq_m_s16): Remove.
8890 (vqshlq_m_u8): Remove.
8891 (vqshlq_m_u32): Remove.
8892 (vqshlq_m_u16): Remove.
8893 (__arm_vqshlq_u8): Remove.
8894 (__arm_vqshlq_r_u8): Remove.
8895 (__arm_vqshlq_n_u8): Remove.
8896 (__arm_vqshlq_s8): Remove.
8897 (__arm_vqshlq_r_s8): Remove.
8898 (__arm_vqshlq_n_s8): Remove.
8899 (__arm_vqshlq_u16): Remove.
8900 (__arm_vqshlq_r_u16): Remove.
8901 (__arm_vqshlq_n_u16): Remove.
8902 (__arm_vqshlq_s16): Remove.
8903 (__arm_vqshlq_r_s16): Remove.
8904 (__arm_vqshlq_n_s16): Remove.
8905 (__arm_vqshlq_u32): Remove.
8906 (__arm_vqshlq_r_u32): Remove.
8907 (__arm_vqshlq_n_u32): Remove.
8908 (__arm_vqshlq_s32): Remove.
8909 (__arm_vqshlq_r_s32): Remove.
8910 (__arm_vqshlq_n_s32): Remove.
8911 (__arm_vqshlq_m_r_u8): Remove.
8912 (__arm_vqshlq_m_r_s8): Remove.
8913 (__arm_vqshlq_m_r_u16): Remove.
8914 (__arm_vqshlq_m_r_s16): Remove.
8915 (__arm_vqshlq_m_r_u32): Remove.
8916 (__arm_vqshlq_m_r_s32): Remove.
8917 (__arm_vqshlq_m_n_s8): Remove.
8918 (__arm_vqshlq_m_n_s32): Remove.
8919 (__arm_vqshlq_m_n_s16): Remove.
8920 (__arm_vqshlq_m_n_u8): Remove.
8921 (__arm_vqshlq_m_n_u32): Remove.
8922 (__arm_vqshlq_m_n_u16): Remove.
8923 (__arm_vqshlq_m_s8): Remove.
8924 (__arm_vqshlq_m_s32): Remove.
8925 (__arm_vqshlq_m_s16): Remove.
8926 (__arm_vqshlq_m_u8): Remove.
8927 (__arm_vqshlq_m_u32): Remove.
8928 (__arm_vqshlq_m_u16): Remove.
8929 (__arm_vqshlq): Remove.
8930 (__arm_vqshlq_r): Remove.
8931 (__arm_vqshlq_n): Remove.
8932 (__arm_vqshlq_m_r): Remove.
8933 (__arm_vqshlq_m_n): Remove.
8934 (__arm_vqshlq_m): Remove.
8936 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8938 * config/arm/arm-mve-builtins-functions.h (class
8939 unspec_mve_function_exact_insn_vshl): New.
8941 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8943 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
8944 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
8946 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8948 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
8949 (finish_opt_n_resolution): Handle MODE_r.
8950 * config/arm/arm-mve-builtins.def (r): New mode.
8952 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8954 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
8955 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
8957 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8959 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
8961 * config/arm/arm-mve-builtins-base.def (vabdq): New.
8962 * config/arm/arm-mve-builtins-base.h (vabdq): New.
8963 * config/arm/arm_mve.h (vabdq): Remove.
8968 (vabdq_u16): Remove.
8969 (vabdq_s16): Remove.
8970 (vabdq_u32): Remove.
8971 (vabdq_s32): Remove.
8972 (vabdq_f16): Remove.
8973 (vabdq_f32): Remove.
8974 (vabdq_m_s8): Remove.
8975 (vabdq_m_s32): Remove.
8976 (vabdq_m_s16): Remove.
8977 (vabdq_m_u8): Remove.
8978 (vabdq_m_u32): Remove.
8979 (vabdq_m_u16): Remove.
8980 (vabdq_m_f32): Remove.
8981 (vabdq_m_f16): Remove.
8982 (vabdq_x_s8): Remove.
8983 (vabdq_x_s16): Remove.
8984 (vabdq_x_s32): Remove.
8985 (vabdq_x_u8): Remove.
8986 (vabdq_x_u16): Remove.
8987 (vabdq_x_u32): Remove.
8988 (vabdq_x_f16): Remove.
8989 (vabdq_x_f32): Remove.
8990 (__arm_vabdq_u8): Remove.
8991 (__arm_vabdq_s8): Remove.
8992 (__arm_vabdq_u16): Remove.
8993 (__arm_vabdq_s16): Remove.
8994 (__arm_vabdq_u32): Remove.
8995 (__arm_vabdq_s32): Remove.
8996 (__arm_vabdq_m_s8): Remove.
8997 (__arm_vabdq_m_s32): Remove.
8998 (__arm_vabdq_m_s16): Remove.
8999 (__arm_vabdq_m_u8): Remove.
9000 (__arm_vabdq_m_u32): Remove.
9001 (__arm_vabdq_m_u16): Remove.
9002 (__arm_vabdq_x_s8): Remove.
9003 (__arm_vabdq_x_s16): Remove.
9004 (__arm_vabdq_x_s32): Remove.
9005 (__arm_vabdq_x_u8): Remove.
9006 (__arm_vabdq_x_u16): Remove.
9007 (__arm_vabdq_x_u32): Remove.
9008 (__arm_vabdq_f16): Remove.
9009 (__arm_vabdq_f32): Remove.
9010 (__arm_vabdq_m_f32): Remove.
9011 (__arm_vabdq_m_f16): Remove.
9012 (__arm_vabdq_x_f16): Remove.
9013 (__arm_vabdq_x_f32): Remove.
9014 (__arm_vabdq): Remove.
9015 (__arm_vabdq_m): Remove.
9016 (__arm_vabdq_x): Remove.
9018 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9020 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
9021 (MVE_FP_VABDQ_ONLY): New.
9022 (mve_insn): Add vabd.
9023 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
9024 (@mve_<mve_insn>q_f<mode>): ... this.
9025 (mve_vabdq_m_f<mode>): Remove.
9027 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9029 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
9030 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
9031 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
9032 * config/arm/arm_mve.h (vqrdmulhq): Remove.
9033 (vqrdmulhq_m): Remove.
9034 (vqrdmulhq_s8): Remove.
9035 (vqrdmulhq_n_s8): Remove.
9036 (vqrdmulhq_s16): Remove.
9037 (vqrdmulhq_n_s16): Remove.
9038 (vqrdmulhq_s32): Remove.
9039 (vqrdmulhq_n_s32): Remove.
9040 (vqrdmulhq_m_n_s8): Remove.
9041 (vqrdmulhq_m_n_s32): Remove.
9042 (vqrdmulhq_m_n_s16): Remove.
9043 (vqrdmulhq_m_s8): Remove.
9044 (vqrdmulhq_m_s32): Remove.
9045 (vqrdmulhq_m_s16): Remove.
9046 (__arm_vqrdmulhq_s8): Remove.
9047 (__arm_vqrdmulhq_n_s8): Remove.
9048 (__arm_vqrdmulhq_s16): Remove.
9049 (__arm_vqrdmulhq_n_s16): Remove.
9050 (__arm_vqrdmulhq_s32): Remove.
9051 (__arm_vqrdmulhq_n_s32): Remove.
9052 (__arm_vqrdmulhq_m_n_s8): Remove.
9053 (__arm_vqrdmulhq_m_n_s32): Remove.
9054 (__arm_vqrdmulhq_m_n_s16): Remove.
9055 (__arm_vqrdmulhq_m_s8): Remove.
9056 (__arm_vqrdmulhq_m_s32): Remove.
9057 (__arm_vqrdmulhq_m_s16): Remove.
9058 (__arm_vqrdmulhq): Remove.
9059 (__arm_vqrdmulhq_m): Remove.
9061 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9063 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
9064 (MVE_SHIFT_N, MVE_SHIFT_R): New.
9065 (mve_insn): Add vqshl, vshl.
9066 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
9067 (mve_vshlq_n_<supf><mode>): Merge into ...
9068 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9069 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
9071 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
9072 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
9074 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
9075 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
9077 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9078 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
9080 (@mve_<mve_insn>q_<supf><mode>): ... this.
9082 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9084 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
9085 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
9086 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
9087 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
9089 * config/arm/arm_mve.h (vrshlq): Remove.
9090 (vrshlq_m_n): Remove.
9093 (vrshlq_u8): Remove.
9094 (vrshlq_n_u8): Remove.
9095 (vrshlq_s8): Remove.
9096 (vrshlq_n_s8): Remove.
9097 (vrshlq_u16): Remove.
9098 (vrshlq_n_u16): Remove.
9099 (vrshlq_s16): Remove.
9100 (vrshlq_n_s16): Remove.
9101 (vrshlq_u32): Remove.
9102 (vrshlq_n_u32): Remove.
9103 (vrshlq_s32): Remove.
9104 (vrshlq_n_s32): Remove.
9105 (vrshlq_m_n_u8): Remove.
9106 (vrshlq_m_n_s8): Remove.
9107 (vrshlq_m_n_u16): Remove.
9108 (vrshlq_m_n_s16): Remove.
9109 (vrshlq_m_n_u32): Remove.
9110 (vrshlq_m_n_s32): Remove.
9111 (vrshlq_m_s8): Remove.
9112 (vrshlq_m_s32): Remove.
9113 (vrshlq_m_s16): Remove.
9114 (vrshlq_m_u8): Remove.
9115 (vrshlq_m_u32): Remove.
9116 (vrshlq_m_u16): Remove.
9117 (vrshlq_x_s8): Remove.
9118 (vrshlq_x_s16): Remove.
9119 (vrshlq_x_s32): Remove.
9120 (vrshlq_x_u8): Remove.
9121 (vrshlq_x_u16): Remove.
9122 (vrshlq_x_u32): Remove.
9123 (__arm_vrshlq_u8): Remove.
9124 (__arm_vrshlq_n_u8): Remove.
9125 (__arm_vrshlq_s8): Remove.
9126 (__arm_vrshlq_n_s8): Remove.
9127 (__arm_vrshlq_u16): Remove.
9128 (__arm_vrshlq_n_u16): Remove.
9129 (__arm_vrshlq_s16): Remove.
9130 (__arm_vrshlq_n_s16): Remove.
9131 (__arm_vrshlq_u32): Remove.
9132 (__arm_vrshlq_n_u32): Remove.
9133 (__arm_vrshlq_s32): Remove.
9134 (__arm_vrshlq_n_s32): Remove.
9135 (__arm_vrshlq_m_n_u8): Remove.
9136 (__arm_vrshlq_m_n_s8): Remove.
9137 (__arm_vrshlq_m_n_u16): Remove.
9138 (__arm_vrshlq_m_n_s16): Remove.
9139 (__arm_vrshlq_m_n_u32): Remove.
9140 (__arm_vrshlq_m_n_s32): Remove.
9141 (__arm_vrshlq_m_s8): Remove.
9142 (__arm_vrshlq_m_s32): Remove.
9143 (__arm_vrshlq_m_s16): Remove.
9144 (__arm_vrshlq_m_u8): Remove.
9145 (__arm_vrshlq_m_u32): Remove.
9146 (__arm_vrshlq_m_u16): Remove.
9147 (__arm_vrshlq_x_s8): Remove.
9148 (__arm_vrshlq_x_s16): Remove.
9149 (__arm_vrshlq_x_s32): Remove.
9150 (__arm_vrshlq_x_u8): Remove.
9151 (__arm_vrshlq_x_u16): Remove.
9152 (__arm_vrshlq_x_u32): Remove.
9153 (__arm_vrshlq): Remove.
9154 (__arm_vrshlq_m_n): Remove.
9155 (__arm_vrshlq_m): Remove.
9156 (__arm_vrshlq_x): Remove.
9158 (vqrshlq_m_n): Remove.
9159 (vqrshlq_m): Remove.
9160 (vqrshlq_u8): Remove.
9161 (vqrshlq_n_u8): Remove.
9162 (vqrshlq_s8): Remove.
9163 (vqrshlq_n_s8): Remove.
9164 (vqrshlq_u16): Remove.
9165 (vqrshlq_n_u16): Remove.
9166 (vqrshlq_s16): Remove.
9167 (vqrshlq_n_s16): Remove.
9168 (vqrshlq_u32): Remove.
9169 (vqrshlq_n_u32): Remove.
9170 (vqrshlq_s32): Remove.
9171 (vqrshlq_n_s32): Remove.
9172 (vqrshlq_m_n_u8): Remove.
9173 (vqrshlq_m_n_s8): Remove.
9174 (vqrshlq_m_n_u16): Remove.
9175 (vqrshlq_m_n_s16): Remove.
9176 (vqrshlq_m_n_u32): Remove.
9177 (vqrshlq_m_n_s32): Remove.
9178 (vqrshlq_m_s8): Remove.
9179 (vqrshlq_m_s32): Remove.
9180 (vqrshlq_m_s16): Remove.
9181 (vqrshlq_m_u8): Remove.
9182 (vqrshlq_m_u32): Remove.
9183 (vqrshlq_m_u16): Remove.
9184 (__arm_vqrshlq_u8): Remove.
9185 (__arm_vqrshlq_n_u8): Remove.
9186 (__arm_vqrshlq_s8): Remove.
9187 (__arm_vqrshlq_n_s8): Remove.
9188 (__arm_vqrshlq_u16): Remove.
9189 (__arm_vqrshlq_n_u16): Remove.
9190 (__arm_vqrshlq_s16): Remove.
9191 (__arm_vqrshlq_n_s16): Remove.
9192 (__arm_vqrshlq_u32): Remove.
9193 (__arm_vqrshlq_n_u32): Remove.
9194 (__arm_vqrshlq_s32): Remove.
9195 (__arm_vqrshlq_n_s32): Remove.
9196 (__arm_vqrshlq_m_n_u8): Remove.
9197 (__arm_vqrshlq_m_n_s8): Remove.
9198 (__arm_vqrshlq_m_n_u16): Remove.
9199 (__arm_vqrshlq_m_n_s16): Remove.
9200 (__arm_vqrshlq_m_n_u32): Remove.
9201 (__arm_vqrshlq_m_n_s32): Remove.
9202 (__arm_vqrshlq_m_s8): Remove.
9203 (__arm_vqrshlq_m_s32): Remove.
9204 (__arm_vqrshlq_m_s16): Remove.
9205 (__arm_vqrshlq_m_u8): Remove.
9206 (__arm_vqrshlq_m_u32): Remove.
9207 (__arm_vqrshlq_m_u16): Remove.
9208 (__arm_vqrshlq): Remove.
9209 (__arm_vqrshlq_m_n): Remove.
9210 (__arm_vqrshlq_m): Remove.
9212 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9214 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
9215 (mve_insn): Add vqrshl, vrshl.
9216 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
9217 (mve_vrshlq_n_<supf><mode>): Merge into ...
9218 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9219 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
9221 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9223 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
9225 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
9226 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
9228 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9231 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
9232 denegrate PHI optmization.
9234 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
9236 * config/i386/predicates.md (register_no_SP_operand):
9237 Rename from index_register_operand.
9238 (call_register_operand): Update for rename.
9239 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
9241 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9244 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
9245 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
9246 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
9247 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
9248 (s-match): Split into s-generic-match and s-gimple-match.
9249 * configure.ac (with-matchpd-partitions,
9250 DEFAULT_MATCHPD_PARTITIONS): New.
9251 * configure: Regenerate.
9253 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9256 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
9257 (decision_tree::gen): Accept list of files instead of single and update
9258 to write function definition to header and main file.
9259 (write_predicate): Likewise.
9260 (write_header): Emit pragmas and new includes.
9261 (main): Create file buffers and cleanup.
9262 (showUsage, write_header_includes): New.
9264 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9267 * Makefile.in (OBJS): Add gimple-match-exports.o.
9268 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
9269 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
9270 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
9271 gimple_resimplify5, constant_for_folding, convert_conditional_op,
9272 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
9273 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
9274 do_valueize, try_conditional_simplification, gimple_extract,
9275 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
9276 commutative_ternary_op_p, first_commutative_argument,
9277 associative_binary_op_p, directly_supported_p,
9278 get_conditional_internal_fn): Moved to gimple-match-exports.cc
9279 * gimple-match-exports.cc: New file.
9281 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9284 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
9286 (dt_simplify::gen_1): Use it.
9288 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9291 * genmatch.cc (output_line_directive): Only emit commented directive
9294 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9297 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
9299 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
9301 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
9302 unused in_mode/in_n variables.
9304 2023-05-05 Richard Biener <rguenther@suse.de>
9306 PR tree-optimization/109735
9307 * tree-vect-stmts.cc (vectorizable_operation): Perform
9308 conversion for POINTER_DIFF_EXPR unconditionally.
9310 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
9312 * config/i386/mmx.md (mulv2si3): New expander.
9313 (*mulv2si3): New insn pattern.
9315 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
9316 Thomas Schwinge <thomas@codesourcery.com>
9319 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
9320 alongside reverse-offload function table to prevent NULL values
9321 of the function addresses.
9323 2023-05-05 Jakub Jelinek <jakub@redhat.com>
9325 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
9327 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
9329 2023-05-05 Andrew Pinski <apinski@marvell.com>
9331 PR tree-optimization/109732
9332 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
9333 of the argtrue/argfalse.
9335 2023-05-05 Andrew Pinski <apinski@marvell.com>
9337 PR tree-optimization/109722
9338 * match.pd: Extend the `ABS<a> == 0` pattern
9339 to cover `ABSU<a> == 0` too.
9341 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
9344 * config/i386/predicates.md (index_reg_operand): New predicate.
9345 * config/i386/i386.md (ashift to lea spliter): Use
9346 general_reg_operand and index_reg_operand predicates.
9348 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9350 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
9351 Rename and reimplement with RTL codes to...
9352 (aarch64_<optab>hn2<mode>_insn_le): .. This.
9353 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
9354 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
9356 (aarch64_<optab>hn2<mode>_insn_be): ... This.
9357 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
9358 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
9359 (aarch64_<optab>hn2<mode>): ... This.
9360 (aarch64_r<optab>hn2<mode>): New expander.
9361 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
9362 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
9364 (sur): Remove handling of the above.
9367 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9369 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
9371 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
9372 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
9373 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
9374 (aarch64_<sur><addsub>hn<mode>): Delete.
9375 (aarch64_<optab>hn<mode>): New define_expand.
9376 (aarch64_r<optab>hn<mode>): Likewise.
9377 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
9380 2023-05-04 Andrew Pinski <apinski@marvell.com>
9382 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
9383 diamond form bb with forwarder only empty blocks better.
9385 2023-05-04 Andrew Pinski <apinski@marvell.com>
9387 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
9388 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
9389 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
9390 of an inline version of it.
9391 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
9392 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
9394 2023-05-04 Andrew Pinski <apinski@marvell.com>
9396 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
9397 the default argument value for dce_ssa_names to nullptr.
9398 Check to make sure dce_ssa_names is a non-nullptr before
9399 calling simple_dce_from_worklist.
9401 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
9403 * config/i386/predicates.md (index_register_operand): Reject
9404 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
9405 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
9406 (call_register_no_elim_operand): Rewrite as ...
9407 (call_register_operand): ... this.
9408 (call_insn_operand): Use call_register_operand predicate.
9410 2023-05-04 Richard Biener <rguenther@suse.de>
9412 PR tree-optimization/109721
9413 * tree-vect-stmts.cc (vectorizable_operation): Make sure
9414 to test word_mode for all !target_support_p operations.
9416 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9419 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
9420 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
9421 (aarch64_mla<mode>): Rename to...
9422 (aarch64_mla<mode><vczle><vczbe>): ... This.
9423 (*aarch64_mla_elt<mode>): Rename to...
9424 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
9425 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
9426 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9427 (aarch64_mla_n<mode>): Rename to...
9428 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
9429 (aarch64_mls<mode>): Rename to...
9430 (aarch64_mls<mode><vczle><vczbe>): ... This.
9431 (*aarch64_mls_elt<mode>): Rename to...
9432 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
9433 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
9434 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9435 (aarch64_mls_n<mode>): Rename to...
9436 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
9437 (fma<mode>4): Rename to...
9438 (fma<mode>4<vczle><vczbe>): ... This.
9439 (*aarch64_fma4_elt<mode>): Rename to...
9440 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
9441 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
9442 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9443 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
9444 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
9445 (fnma<mode>4): Rename to...
9446 (fnma<mode>4<vczle><vczbe>): ... This.
9447 (*aarch64_fnma4_elt<mode>): Rename to...
9448 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
9449 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
9450 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9451 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
9452 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
9453 (aarch64_simd_bsl<mode>_internal): Rename to...
9454 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
9455 (*aarch64_simd_bsl<mode>_alt): Rename to...
9456 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
9458 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9461 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
9462 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
9463 (fabd<mode>3): Rename to...
9464 (fabd<mode>3<vczle><vczbe>): ... This.
9465 (aarch64_<optab>p<mode>): Rename to...
9466 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
9467 (aarch64_faddp<mode>): Rename to...
9468 (aarch64_faddp<mode><vczle><vczbe>): ... This.
9470 2023-05-04 Martin Liska <mliska@suse.cz>
9472 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
9473 (print_version): Use it.
9474 (generate_results): Likewise.
9476 2023-05-04 Richard Biener <rguenther@suse.de>
9478 * tree-cfg.h (last_stmt): Rename to ...
9479 (last_nondebug_stmt): ... this.
9480 * tree-cfg.cc (last_stmt): Rename to ...
9481 (last_nondebug_stmt): ... this.
9482 (assign_discriminators): Adjust.
9483 (group_case_labels_stmt): Likewise.
9484 (gimple_can_duplicate_bb_p): Likewise.
9485 (execute_fixup_cfg): Likewise.
9486 * auto-profile.cc (afdo_propagate_circuit): Likewise.
9487 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
9488 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
9489 (determine_parallel_type): Likewise.
9490 (adjust_context_and_scope): Likewise.
9491 (expand_task_call): Likewise.
9492 (remove_exit_barrier): Likewise.
9493 (expand_omp_taskreg): Likewise.
9494 (expand_omp_for_init_counts): Likewise.
9495 (expand_omp_for_init_vars): Likewise.
9496 (expand_omp_for_static_chunk): Likewise.
9497 (expand_omp_simd): Likewise.
9498 (expand_oacc_for): Likewise.
9499 (expand_omp_for): Likewise.
9500 (expand_omp_sections): Likewise.
9501 (expand_omp_atomic_fetch_op): Likewise.
9502 (expand_omp_atomic_cas): Likewise.
9503 (expand_omp_atomic): Likewise.
9504 (expand_omp_target): Likewise.
9505 (expand_omp): Likewise.
9506 (omp_make_gimple_edges): Likewise.
9507 * trans-mem.cc (tm_region_init): Likewise.
9508 * tree-inline.cc (redirect_all_calls): Likewise.
9509 * tree-parloops.cc (gen_parallel_loop): Likewise.
9510 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
9511 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
9513 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
9514 (may_eliminate_iv): Likewise.
9515 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
9516 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
9518 (estimate_numbers_of_iterations): Likewise.
9519 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
9520 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
9521 (set_predicates_for_bb): Likewise.
9522 (init_loop_unswitch_info): Likewise.
9523 (hoist_guard): Likewise.
9524 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
9525 (minmax_replacement): Likewise.
9526 * tree-ssa-reassoc.cc (update_range_test): Likewise.
9527 (optimize_range_tests_to_bit_test): Likewise.
9528 (optimize_range_tests_var_bound): Likewise.
9529 (optimize_range_tests): Likewise.
9530 (no_side_effect_bb): Likewise.
9531 (suitable_cond_bb): Likewise.
9532 (maybe_optimize_range_tests): Likewise.
9533 (reassociate_bb): Likewise.
9534 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
9536 2023-05-04 Jakub Jelinek <jakub@redhat.com>
9539 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
9540 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
9541 for it only if it still has TImode. Don't decide whether to call
9542 fix_debug_reg_uses based on whether SRC is ever set or not.
9544 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
9546 * config/cris/cris.cc (cris_split_constant): New function.
9547 * config/cris/cris.md (splitop): New iterator.
9548 (opsplit1): New define_peephole2.
9549 * config/cris/cris-protos.h (cris_split_constant): Declare.
9550 (cris_splittable_constant_p): New macro.
9552 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
9554 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
9557 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
9559 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
9560 lra_in_progress, not reload_in_progress.
9561 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
9562 * config/cris/constraints.md ("Q"): Ditto.
9564 2023-05-03 Andrew Pinski <apinski@marvell.com>
9566 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
9567 stats on removed number of statements and phis.
9569 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
9571 PR tree-optimization/109711
9572 * value-range.cc (irange::verify_range): Allow types of
9575 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
9578 * calls.cc (can_implement_as_sibling_call_p): Reject calls
9579 to __sanitizer_cov_trace_pc.
9581 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
9584 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
9585 a new ABI break parameter for GCC 14. Set it to the alignment
9586 of enums that have an underlying type. Take the true alignment
9587 of such enums from the TYPE_ALIGN of the underlying type's
9589 (aarch64_function_arg_boundary): Update accordingly.
9590 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
9591 Warn about ABI differences.
9593 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
9596 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
9597 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
9598 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
9599 (aarch64_gimplify_va_arg_expr): Likewise.
9601 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9603 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
9604 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
9605 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
9607 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
9608 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
9609 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
9610 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
9611 * config/arm/arm_mve.h (vhsubq): Remove.
9617 (vhsubq_u8): Remove.
9618 (vhsubq_n_u8): Remove.
9619 (vhaddq_u8): Remove.
9620 (vhaddq_n_u8): Remove.
9621 (vhsubq_s8): Remove.
9622 (vhsubq_n_s8): Remove.
9623 (vhaddq_s8): Remove.
9624 (vhaddq_n_s8): Remove.
9625 (vhsubq_u16): Remove.
9626 (vhsubq_n_u16): Remove.
9627 (vhaddq_u16): Remove.
9628 (vhaddq_n_u16): Remove.
9629 (vhsubq_s16): Remove.
9630 (vhsubq_n_s16): Remove.
9631 (vhaddq_s16): Remove.
9632 (vhaddq_n_s16): Remove.
9633 (vhsubq_u32): Remove.
9634 (vhsubq_n_u32): Remove.
9635 (vhaddq_u32): Remove.
9636 (vhaddq_n_u32): Remove.
9637 (vhsubq_s32): Remove.
9638 (vhsubq_n_s32): Remove.
9639 (vhaddq_s32): Remove.
9640 (vhaddq_n_s32): Remove.
9641 (vhaddq_m_n_s8): Remove.
9642 (vhaddq_m_n_s32): Remove.
9643 (vhaddq_m_n_s16): Remove.
9644 (vhaddq_m_n_u8): Remove.
9645 (vhaddq_m_n_u32): Remove.
9646 (vhaddq_m_n_u16): Remove.
9647 (vhaddq_m_s8): Remove.
9648 (vhaddq_m_s32): Remove.
9649 (vhaddq_m_s16): Remove.
9650 (vhaddq_m_u8): Remove.
9651 (vhaddq_m_u32): Remove.
9652 (vhaddq_m_u16): Remove.
9653 (vhsubq_m_n_s8): Remove.
9654 (vhsubq_m_n_s32): Remove.
9655 (vhsubq_m_n_s16): Remove.
9656 (vhsubq_m_n_u8): Remove.
9657 (vhsubq_m_n_u32): Remove.
9658 (vhsubq_m_n_u16): Remove.
9659 (vhsubq_m_s8): Remove.
9660 (vhsubq_m_s32): Remove.
9661 (vhsubq_m_s16): Remove.
9662 (vhsubq_m_u8): Remove.
9663 (vhsubq_m_u32): Remove.
9664 (vhsubq_m_u16): Remove.
9665 (vhaddq_x_n_s8): Remove.
9666 (vhaddq_x_n_s16): Remove.
9667 (vhaddq_x_n_s32): Remove.
9668 (vhaddq_x_n_u8): Remove.
9669 (vhaddq_x_n_u16): Remove.
9670 (vhaddq_x_n_u32): Remove.
9671 (vhaddq_x_s8): Remove.
9672 (vhaddq_x_s16): Remove.
9673 (vhaddq_x_s32): Remove.
9674 (vhaddq_x_u8): Remove.
9675 (vhaddq_x_u16): Remove.
9676 (vhaddq_x_u32): Remove.
9677 (vhsubq_x_n_s8): Remove.
9678 (vhsubq_x_n_s16): Remove.
9679 (vhsubq_x_n_s32): Remove.
9680 (vhsubq_x_n_u8): Remove.
9681 (vhsubq_x_n_u16): Remove.
9682 (vhsubq_x_n_u32): Remove.
9683 (vhsubq_x_s8): Remove.
9684 (vhsubq_x_s16): Remove.
9685 (vhsubq_x_s32): Remove.
9686 (vhsubq_x_u8): Remove.
9687 (vhsubq_x_u16): Remove.
9688 (vhsubq_x_u32): Remove.
9689 (__arm_vhsubq_u8): Remove.
9690 (__arm_vhsubq_n_u8): Remove.
9691 (__arm_vhaddq_u8): Remove.
9692 (__arm_vhaddq_n_u8): Remove.
9693 (__arm_vhsubq_s8): Remove.
9694 (__arm_vhsubq_n_s8): Remove.
9695 (__arm_vhaddq_s8): Remove.
9696 (__arm_vhaddq_n_s8): Remove.
9697 (__arm_vhsubq_u16): Remove.
9698 (__arm_vhsubq_n_u16): Remove.
9699 (__arm_vhaddq_u16): Remove.
9700 (__arm_vhaddq_n_u16): Remove.
9701 (__arm_vhsubq_s16): Remove.
9702 (__arm_vhsubq_n_s16): Remove.
9703 (__arm_vhaddq_s16): Remove.
9704 (__arm_vhaddq_n_s16): Remove.
9705 (__arm_vhsubq_u32): Remove.
9706 (__arm_vhsubq_n_u32): Remove.
9707 (__arm_vhaddq_u32): Remove.
9708 (__arm_vhaddq_n_u32): Remove.
9709 (__arm_vhsubq_s32): Remove.
9710 (__arm_vhsubq_n_s32): Remove.
9711 (__arm_vhaddq_s32): Remove.
9712 (__arm_vhaddq_n_s32): Remove.
9713 (__arm_vhaddq_m_n_s8): Remove.
9714 (__arm_vhaddq_m_n_s32): Remove.
9715 (__arm_vhaddq_m_n_s16): Remove.
9716 (__arm_vhaddq_m_n_u8): Remove.
9717 (__arm_vhaddq_m_n_u32): Remove.
9718 (__arm_vhaddq_m_n_u16): Remove.
9719 (__arm_vhaddq_m_s8): Remove.
9720 (__arm_vhaddq_m_s32): Remove.
9721 (__arm_vhaddq_m_s16): Remove.
9722 (__arm_vhaddq_m_u8): Remove.
9723 (__arm_vhaddq_m_u32): Remove.
9724 (__arm_vhaddq_m_u16): Remove.
9725 (__arm_vhsubq_m_n_s8): Remove.
9726 (__arm_vhsubq_m_n_s32): Remove.
9727 (__arm_vhsubq_m_n_s16): Remove.
9728 (__arm_vhsubq_m_n_u8): Remove.
9729 (__arm_vhsubq_m_n_u32): Remove.
9730 (__arm_vhsubq_m_n_u16): Remove.
9731 (__arm_vhsubq_m_s8): Remove.
9732 (__arm_vhsubq_m_s32): Remove.
9733 (__arm_vhsubq_m_s16): Remove.
9734 (__arm_vhsubq_m_u8): Remove.
9735 (__arm_vhsubq_m_u32): Remove.
9736 (__arm_vhsubq_m_u16): Remove.
9737 (__arm_vhaddq_x_n_s8): Remove.
9738 (__arm_vhaddq_x_n_s16): Remove.
9739 (__arm_vhaddq_x_n_s32): Remove.
9740 (__arm_vhaddq_x_n_u8): Remove.
9741 (__arm_vhaddq_x_n_u16): Remove.
9742 (__arm_vhaddq_x_n_u32): Remove.
9743 (__arm_vhaddq_x_s8): Remove.
9744 (__arm_vhaddq_x_s16): Remove.
9745 (__arm_vhaddq_x_s32): Remove.
9746 (__arm_vhaddq_x_u8): Remove.
9747 (__arm_vhaddq_x_u16): Remove.
9748 (__arm_vhaddq_x_u32): Remove.
9749 (__arm_vhsubq_x_n_s8): Remove.
9750 (__arm_vhsubq_x_n_s16): Remove.
9751 (__arm_vhsubq_x_n_s32): Remove.
9752 (__arm_vhsubq_x_n_u8): Remove.
9753 (__arm_vhsubq_x_n_u16): Remove.
9754 (__arm_vhsubq_x_n_u32): Remove.
9755 (__arm_vhsubq_x_s8): Remove.
9756 (__arm_vhsubq_x_s16): Remove.
9757 (__arm_vhsubq_x_s32): Remove.
9758 (__arm_vhsubq_x_u8): Remove.
9759 (__arm_vhsubq_x_u16): Remove.
9760 (__arm_vhsubq_x_u32): Remove.
9761 (__arm_vhsubq): Remove.
9762 (__arm_vhaddq): Remove.
9763 (__arm_vhaddq_m): Remove.
9764 (__arm_vhsubq_m): Remove.
9765 (__arm_vhaddq_x): Remove.
9766 (__arm_vhsubq_x): Remove.
9770 (vmulhq_u8): Remove.
9771 (vmulhq_s8): Remove.
9772 (vmulhq_u16): Remove.
9773 (vmulhq_s16): Remove.
9774 (vmulhq_u32): Remove.
9775 (vmulhq_s32): Remove.
9776 (vmulhq_m_s8): Remove.
9777 (vmulhq_m_s32): Remove.
9778 (vmulhq_m_s16): Remove.
9779 (vmulhq_m_u8): Remove.
9780 (vmulhq_m_u32): Remove.
9781 (vmulhq_m_u16): Remove.
9782 (vmulhq_x_s8): Remove.
9783 (vmulhq_x_s16): Remove.
9784 (vmulhq_x_s32): Remove.
9785 (vmulhq_x_u8): Remove.
9786 (vmulhq_x_u16): Remove.
9787 (vmulhq_x_u32): Remove.
9788 (__arm_vmulhq_u8): Remove.
9789 (__arm_vmulhq_s8): Remove.
9790 (__arm_vmulhq_u16): Remove.
9791 (__arm_vmulhq_s16): Remove.
9792 (__arm_vmulhq_u32): Remove.
9793 (__arm_vmulhq_s32): Remove.
9794 (__arm_vmulhq_m_s8): Remove.
9795 (__arm_vmulhq_m_s32): Remove.
9796 (__arm_vmulhq_m_s16): Remove.
9797 (__arm_vmulhq_m_u8): Remove.
9798 (__arm_vmulhq_m_u32): Remove.
9799 (__arm_vmulhq_m_u16): Remove.
9800 (__arm_vmulhq_x_s8): Remove.
9801 (__arm_vmulhq_x_s16): Remove.
9802 (__arm_vmulhq_x_s32): Remove.
9803 (__arm_vmulhq_x_u8): Remove.
9804 (__arm_vmulhq_x_u16): Remove.
9805 (__arm_vmulhq_x_u32): Remove.
9806 (__arm_vmulhq): Remove.
9807 (__arm_vmulhq_m): Remove.
9808 (__arm_vmulhq_x): Remove.
9813 (vqsubq_u8): Remove.
9814 (vqsubq_n_u8): Remove.
9815 (vqaddq_u8): Remove.
9816 (vqaddq_n_u8): Remove.
9817 (vqsubq_s8): Remove.
9818 (vqsubq_n_s8): Remove.
9819 (vqaddq_s8): Remove.
9820 (vqaddq_n_s8): Remove.
9821 (vqsubq_u16): Remove.
9822 (vqsubq_n_u16): Remove.
9823 (vqaddq_u16): Remove.
9824 (vqaddq_n_u16): Remove.
9825 (vqsubq_s16): Remove.
9826 (vqsubq_n_s16): Remove.
9827 (vqaddq_s16): Remove.
9828 (vqaddq_n_s16): Remove.
9829 (vqsubq_u32): Remove.
9830 (vqsubq_n_u32): Remove.
9831 (vqaddq_u32): Remove.
9832 (vqaddq_n_u32): Remove.
9833 (vqsubq_s32): Remove.
9834 (vqsubq_n_s32): Remove.
9835 (vqaddq_s32): Remove.
9836 (vqaddq_n_s32): Remove.
9837 (vqaddq_m_n_s8): Remove.
9838 (vqaddq_m_n_s32): Remove.
9839 (vqaddq_m_n_s16): Remove.
9840 (vqaddq_m_n_u8): Remove.
9841 (vqaddq_m_n_u32): Remove.
9842 (vqaddq_m_n_u16): Remove.
9843 (vqaddq_m_s8): Remove.
9844 (vqaddq_m_s32): Remove.
9845 (vqaddq_m_s16): Remove.
9846 (vqaddq_m_u8): Remove.
9847 (vqaddq_m_u32): Remove.
9848 (vqaddq_m_u16): Remove.
9849 (vqsubq_m_n_s8): Remove.
9850 (vqsubq_m_n_s32): Remove.
9851 (vqsubq_m_n_s16): Remove.
9852 (vqsubq_m_n_u8): Remove.
9853 (vqsubq_m_n_u32): Remove.
9854 (vqsubq_m_n_u16): Remove.
9855 (vqsubq_m_s8): Remove.
9856 (vqsubq_m_s32): Remove.
9857 (vqsubq_m_s16): Remove.
9858 (vqsubq_m_u8): Remove.
9859 (vqsubq_m_u32): Remove.
9860 (vqsubq_m_u16): Remove.
9861 (__arm_vqsubq_u8): Remove.
9862 (__arm_vqsubq_n_u8): Remove.
9863 (__arm_vqaddq_u8): Remove.
9864 (__arm_vqaddq_n_u8): Remove.
9865 (__arm_vqsubq_s8): Remove.
9866 (__arm_vqsubq_n_s8): Remove.
9867 (__arm_vqaddq_s8): Remove.
9868 (__arm_vqaddq_n_s8): Remove.
9869 (__arm_vqsubq_u16): Remove.
9870 (__arm_vqsubq_n_u16): Remove.
9871 (__arm_vqaddq_u16): Remove.
9872 (__arm_vqaddq_n_u16): Remove.
9873 (__arm_vqsubq_s16): Remove.
9874 (__arm_vqsubq_n_s16): Remove.
9875 (__arm_vqaddq_s16): Remove.
9876 (__arm_vqaddq_n_s16): Remove.
9877 (__arm_vqsubq_u32): Remove.
9878 (__arm_vqsubq_n_u32): Remove.
9879 (__arm_vqaddq_u32): Remove.
9880 (__arm_vqaddq_n_u32): Remove.
9881 (__arm_vqsubq_s32): Remove.
9882 (__arm_vqsubq_n_s32): Remove.
9883 (__arm_vqaddq_s32): Remove.
9884 (__arm_vqaddq_n_s32): Remove.
9885 (__arm_vqaddq_m_n_s8): Remove.
9886 (__arm_vqaddq_m_n_s32): Remove.
9887 (__arm_vqaddq_m_n_s16): Remove.
9888 (__arm_vqaddq_m_n_u8): Remove.
9889 (__arm_vqaddq_m_n_u32): Remove.
9890 (__arm_vqaddq_m_n_u16): Remove.
9891 (__arm_vqaddq_m_s8): Remove.
9892 (__arm_vqaddq_m_s32): Remove.
9893 (__arm_vqaddq_m_s16): Remove.
9894 (__arm_vqaddq_m_u8): Remove.
9895 (__arm_vqaddq_m_u32): Remove.
9896 (__arm_vqaddq_m_u16): Remove.
9897 (__arm_vqsubq_m_n_s8): Remove.
9898 (__arm_vqsubq_m_n_s32): Remove.
9899 (__arm_vqsubq_m_n_s16): Remove.
9900 (__arm_vqsubq_m_n_u8): Remove.
9901 (__arm_vqsubq_m_n_u32): Remove.
9902 (__arm_vqsubq_m_n_u16): Remove.
9903 (__arm_vqsubq_m_s8): Remove.
9904 (__arm_vqsubq_m_s32): Remove.
9905 (__arm_vqsubq_m_s16): Remove.
9906 (__arm_vqsubq_m_u8): Remove.
9907 (__arm_vqsubq_m_u32): Remove.
9908 (__arm_vqsubq_m_u16): Remove.
9909 (__arm_vqsubq): Remove.
9910 (__arm_vqaddq): Remove.
9911 (__arm_vqaddq_m): Remove.
9912 (__arm_vqsubq_m): Remove.
9914 (vqdmulhq_m): Remove.
9915 (vqdmulhq_s8): Remove.
9916 (vqdmulhq_n_s8): Remove.
9917 (vqdmulhq_s16): Remove.
9918 (vqdmulhq_n_s16): Remove.
9919 (vqdmulhq_s32): Remove.
9920 (vqdmulhq_n_s32): Remove.
9921 (vqdmulhq_m_n_s8): Remove.
9922 (vqdmulhq_m_n_s32): Remove.
9923 (vqdmulhq_m_n_s16): Remove.
9924 (vqdmulhq_m_s8): Remove.
9925 (vqdmulhq_m_s32): Remove.
9926 (vqdmulhq_m_s16): Remove.
9927 (__arm_vqdmulhq_s8): Remove.
9928 (__arm_vqdmulhq_n_s8): Remove.
9929 (__arm_vqdmulhq_s16): Remove.
9930 (__arm_vqdmulhq_n_s16): Remove.
9931 (__arm_vqdmulhq_s32): Remove.
9932 (__arm_vqdmulhq_n_s32): Remove.
9933 (__arm_vqdmulhq_m_n_s8): Remove.
9934 (__arm_vqdmulhq_m_n_s32): Remove.
9935 (__arm_vqdmulhq_m_n_s16): Remove.
9936 (__arm_vqdmulhq_m_s8): Remove.
9937 (__arm_vqdmulhq_m_s32): Remove.
9938 (__arm_vqdmulhq_m_s16): Remove.
9939 (__arm_vqdmulhq): Remove.
9940 (__arm_vqdmulhq_m): Remove.
9942 (vrhaddq_m): Remove.
9943 (vrhaddq_x): Remove.
9944 (vrhaddq_u8): Remove.
9945 (vrhaddq_s8): Remove.
9946 (vrhaddq_u16): Remove.
9947 (vrhaddq_s16): Remove.
9948 (vrhaddq_u32): Remove.
9949 (vrhaddq_s32): Remove.
9950 (vrhaddq_m_s8): Remove.
9951 (vrhaddq_m_s32): Remove.
9952 (vrhaddq_m_s16): Remove.
9953 (vrhaddq_m_u8): Remove.
9954 (vrhaddq_m_u32): Remove.
9955 (vrhaddq_m_u16): Remove.
9956 (vrhaddq_x_s8): Remove.
9957 (vrhaddq_x_s16): Remove.
9958 (vrhaddq_x_s32): Remove.
9959 (vrhaddq_x_u8): Remove.
9960 (vrhaddq_x_u16): Remove.
9961 (vrhaddq_x_u32): Remove.
9962 (__arm_vrhaddq_u8): Remove.
9963 (__arm_vrhaddq_s8): Remove.
9964 (__arm_vrhaddq_u16): Remove.
9965 (__arm_vrhaddq_s16): Remove.
9966 (__arm_vrhaddq_u32): Remove.
9967 (__arm_vrhaddq_s32): Remove.
9968 (__arm_vrhaddq_m_s8): Remove.
9969 (__arm_vrhaddq_m_s32): Remove.
9970 (__arm_vrhaddq_m_s16): Remove.
9971 (__arm_vrhaddq_m_u8): Remove.
9972 (__arm_vrhaddq_m_u32): Remove.
9973 (__arm_vrhaddq_m_u16): Remove.
9974 (__arm_vrhaddq_x_s8): Remove.
9975 (__arm_vrhaddq_x_s16): Remove.
9976 (__arm_vrhaddq_x_s32): Remove.
9977 (__arm_vrhaddq_x_u8): Remove.
9978 (__arm_vrhaddq_x_u16): Remove.
9979 (__arm_vrhaddq_x_u32): Remove.
9980 (__arm_vrhaddq): Remove.
9981 (__arm_vrhaddq_m): Remove.
9982 (__arm_vrhaddq_x): Remove.
9984 (vrmulhq_m): Remove.
9985 (vrmulhq_x): Remove.
9986 (vrmulhq_u8): Remove.
9987 (vrmulhq_s8): Remove.
9988 (vrmulhq_u16): Remove.
9989 (vrmulhq_s16): Remove.
9990 (vrmulhq_u32): Remove.
9991 (vrmulhq_s32): Remove.
9992 (vrmulhq_m_s8): Remove.
9993 (vrmulhq_m_s32): Remove.
9994 (vrmulhq_m_s16): Remove.
9995 (vrmulhq_m_u8): Remove.
9996 (vrmulhq_m_u32): Remove.
9997 (vrmulhq_m_u16): Remove.
9998 (vrmulhq_x_s8): Remove.
9999 (vrmulhq_x_s16): Remove.
10000 (vrmulhq_x_s32): Remove.
10001 (vrmulhq_x_u8): Remove.
10002 (vrmulhq_x_u16): Remove.
10003 (vrmulhq_x_u32): Remove.
10004 (__arm_vrmulhq_u8): Remove.
10005 (__arm_vrmulhq_s8): Remove.
10006 (__arm_vrmulhq_u16): Remove.
10007 (__arm_vrmulhq_s16): Remove.
10008 (__arm_vrmulhq_u32): Remove.
10009 (__arm_vrmulhq_s32): Remove.
10010 (__arm_vrmulhq_m_s8): Remove.
10011 (__arm_vrmulhq_m_s32): Remove.
10012 (__arm_vrmulhq_m_s16): Remove.
10013 (__arm_vrmulhq_m_u8): Remove.
10014 (__arm_vrmulhq_m_u32): Remove.
10015 (__arm_vrmulhq_m_u16): Remove.
10016 (__arm_vrmulhq_x_s8): Remove.
10017 (__arm_vrmulhq_x_s16): Remove.
10018 (__arm_vrmulhq_x_s32): Remove.
10019 (__arm_vrmulhq_x_u8): Remove.
10020 (__arm_vrmulhq_x_u16): Remove.
10021 (__arm_vrmulhq_x_u32): Remove.
10022 (__arm_vrmulhq): Remove.
10023 (__arm_vrmulhq_m): Remove.
10024 (__arm_vrmulhq_x): Remove.
10026 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10028 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
10029 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
10030 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
10031 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
10032 * config/arm/mve.md (mve_vabdq_<supf><mode>)
10033 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
10034 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
10035 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
10036 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
10037 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
10038 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
10040 (@mve_<mve_insn>q_<supf><mode>): ... this.
10041 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
10042 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
10043 gen_mve_vhaddq / gen_mve_vrhaddq.
10045 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10047 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
10048 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
10049 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
10050 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
10051 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
10052 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
10053 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
10054 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
10055 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
10056 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
10057 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
10058 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
10059 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10061 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10063 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
10064 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
10066 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
10067 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
10068 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
10069 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
10070 (mve_vqsubq_n_<supf><mode>): Merge into ...
10071 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10073 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10075 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
10076 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
10077 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
10078 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
10079 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
10080 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
10081 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
10082 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
10083 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
10084 (mve_vshlq_m_<supf><mode>): Merged into
10085 @mve_<mve_insn>q_m_<supf><mode>.
10086 (mve_vabdq_m_<supf><mode>): Likewise.
10087 (mve_vhaddq_m_<supf><mode>): Likewise.
10088 (mve_vhsubq_m_<supf><mode>): Likewise.
10089 (mve_vmaxq_m_<supf><mode>): Likewise.
10090 (mve_vminq_m_<supf><mode>): Likewise.
10091 (mve_vmulhq_m_<supf><mode>): Likewise.
10092 (mve_vqaddq_m_<supf><mode>): Likewise.
10093 (mve_vqrshlq_m_<supf><mode>): Likewise.
10094 (mve_vqshlq_m_<supf><mode>): Likewise.
10095 (mve_vqsubq_m_<supf><mode>): Likewise.
10096 (mve_vrhaddq_m_<supf><mode>): Likewise.
10097 (mve_vrmulhq_m_<supf><mode>): Likewise.
10098 (mve_vrshlq_m_<supf><mode>): Likewise.
10099 (mve_vqdmladhq_m_s<mode>): Likewise.
10100 (mve_vqdmladhxq_m_s<mode>): Likewise.
10101 (mve_vqdmlsdhq_m_s<mode>): Likewise.
10102 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
10103 (mve_vqdmulhq_m_s<mode>): Likewise.
10104 (mve_vqrdmladhq_m_s<mode>): Likewise.
10105 (mve_vqrdmladhxq_m_s<mode>): Likewise.
10106 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
10107 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
10108 (mve_vqrdmulhq_m_s<mode>): Likewise.
10110 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10112 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
10113 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
10114 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
10115 * config/arm/arm_mve.h (vcreateq_f16): Remove.
10116 (vcreateq_f32): Remove.
10117 (vcreateq_u8): Remove.
10118 (vcreateq_u16): Remove.
10119 (vcreateq_u32): Remove.
10120 (vcreateq_u64): Remove.
10121 (vcreateq_s8): Remove.
10122 (vcreateq_s16): Remove.
10123 (vcreateq_s32): Remove.
10124 (vcreateq_s64): Remove.
10125 (__arm_vcreateq_u8): Remove.
10126 (__arm_vcreateq_u16): Remove.
10127 (__arm_vcreateq_u32): Remove.
10128 (__arm_vcreateq_u64): Remove.
10129 (__arm_vcreateq_s8): Remove.
10130 (__arm_vcreateq_s16): Remove.
10131 (__arm_vcreateq_s32): Remove.
10132 (__arm_vcreateq_s64): Remove.
10133 (__arm_vcreateq_f16): Remove.
10134 (__arm_vcreateq_f32): Remove.
10136 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10138 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
10139 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
10140 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
10141 (@mve_<mve_insn>q_f<mode>): ... this.
10142 (mve_vcreateq_<supf><mode>): Rename into ...
10143 (@mve_<mve_insn>q_<supf><mode>): ... this.
10145 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10147 * config/arm/arm-mve-builtins-shapes.cc (create): New.
10148 * config/arm/arm-mve-builtins-shapes.h: (create): New.
10150 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10152 * config/arm/arm-mve-builtins-functions.h (class
10153 unspec_mve_function_exact_insn): New.
10155 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10157 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
10159 * config/arm/arm-mve-builtins-base.def (vorrq): New.
10160 * config/arm/arm-mve-builtins-base.h (vorrq): New.
10161 * config/arm/arm-mve-builtins.cc
10162 (function_instance::has_inactive_argument): Handle vorrq.
10163 * config/arm/arm_mve.h (vorrq): Remove.
10164 (vorrq_m_n): Remove.
10167 (vorrq_u8): Remove.
10168 (vorrq_s8): Remove.
10169 (vorrq_u16): Remove.
10170 (vorrq_s16): Remove.
10171 (vorrq_u32): Remove.
10172 (vorrq_s32): Remove.
10173 (vorrq_n_u16): Remove.
10174 (vorrq_f16): Remove.
10175 (vorrq_n_s16): Remove.
10176 (vorrq_n_u32): Remove.
10177 (vorrq_f32): Remove.
10178 (vorrq_n_s32): Remove.
10179 (vorrq_m_n_s16): Remove.
10180 (vorrq_m_n_u16): Remove.
10181 (vorrq_m_n_s32): Remove.
10182 (vorrq_m_n_u32): Remove.
10183 (vorrq_m_s8): Remove.
10184 (vorrq_m_s32): Remove.
10185 (vorrq_m_s16): Remove.
10186 (vorrq_m_u8): Remove.
10187 (vorrq_m_u32): Remove.
10188 (vorrq_m_u16): Remove.
10189 (vorrq_m_f32): Remove.
10190 (vorrq_m_f16): Remove.
10191 (vorrq_x_s8): Remove.
10192 (vorrq_x_s16): Remove.
10193 (vorrq_x_s32): Remove.
10194 (vorrq_x_u8): Remove.
10195 (vorrq_x_u16): Remove.
10196 (vorrq_x_u32): Remove.
10197 (vorrq_x_f16): Remove.
10198 (vorrq_x_f32): Remove.
10199 (__arm_vorrq_u8): Remove.
10200 (__arm_vorrq_s8): Remove.
10201 (__arm_vorrq_u16): Remove.
10202 (__arm_vorrq_s16): Remove.
10203 (__arm_vorrq_u32): Remove.
10204 (__arm_vorrq_s32): Remove.
10205 (__arm_vorrq_n_u16): Remove.
10206 (__arm_vorrq_n_s16): Remove.
10207 (__arm_vorrq_n_u32): Remove.
10208 (__arm_vorrq_n_s32): Remove.
10209 (__arm_vorrq_m_n_s16): Remove.
10210 (__arm_vorrq_m_n_u16): Remove.
10211 (__arm_vorrq_m_n_s32): Remove.
10212 (__arm_vorrq_m_n_u32): Remove.
10213 (__arm_vorrq_m_s8): Remove.
10214 (__arm_vorrq_m_s32): Remove.
10215 (__arm_vorrq_m_s16): Remove.
10216 (__arm_vorrq_m_u8): Remove.
10217 (__arm_vorrq_m_u32): Remove.
10218 (__arm_vorrq_m_u16): Remove.
10219 (__arm_vorrq_x_s8): Remove.
10220 (__arm_vorrq_x_s16): Remove.
10221 (__arm_vorrq_x_s32): Remove.
10222 (__arm_vorrq_x_u8): Remove.
10223 (__arm_vorrq_x_u16): Remove.
10224 (__arm_vorrq_x_u32): Remove.
10225 (__arm_vorrq_f16): Remove.
10226 (__arm_vorrq_f32): Remove.
10227 (__arm_vorrq_m_f32): Remove.
10228 (__arm_vorrq_m_f16): Remove.
10229 (__arm_vorrq_x_f16): Remove.
10230 (__arm_vorrq_x_f32): Remove.
10231 (__arm_vorrq): Remove.
10232 (__arm_vorrq_m_n): Remove.
10233 (__arm_vorrq_m): Remove.
10234 (__arm_vorrq_x): Remove.
10236 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10238 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
10239 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
10240 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
10241 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
10243 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10245 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
10246 (vandq,veorq): New.
10247 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
10248 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
10249 * config/arm/arm_mve.h (vandq): Remove.
10252 (vandq_u8): Remove.
10253 (vandq_s8): Remove.
10254 (vandq_u16): Remove.
10255 (vandq_s16): Remove.
10256 (vandq_u32): Remove.
10257 (vandq_s32): Remove.
10258 (vandq_f16): Remove.
10259 (vandq_f32): Remove.
10260 (vandq_m_s8): Remove.
10261 (vandq_m_s32): Remove.
10262 (vandq_m_s16): Remove.
10263 (vandq_m_u8): Remove.
10264 (vandq_m_u32): Remove.
10265 (vandq_m_u16): Remove.
10266 (vandq_m_f32): Remove.
10267 (vandq_m_f16): Remove.
10268 (vandq_x_s8): Remove.
10269 (vandq_x_s16): Remove.
10270 (vandq_x_s32): Remove.
10271 (vandq_x_u8): Remove.
10272 (vandq_x_u16): Remove.
10273 (vandq_x_u32): Remove.
10274 (vandq_x_f16): Remove.
10275 (vandq_x_f32): Remove.
10276 (__arm_vandq_u8): Remove.
10277 (__arm_vandq_s8): Remove.
10278 (__arm_vandq_u16): Remove.
10279 (__arm_vandq_s16): Remove.
10280 (__arm_vandq_u32): Remove.
10281 (__arm_vandq_s32): Remove.
10282 (__arm_vandq_m_s8): Remove.
10283 (__arm_vandq_m_s32): Remove.
10284 (__arm_vandq_m_s16): Remove.
10285 (__arm_vandq_m_u8): Remove.
10286 (__arm_vandq_m_u32): Remove.
10287 (__arm_vandq_m_u16): Remove.
10288 (__arm_vandq_x_s8): Remove.
10289 (__arm_vandq_x_s16): Remove.
10290 (__arm_vandq_x_s32): Remove.
10291 (__arm_vandq_x_u8): Remove.
10292 (__arm_vandq_x_u16): Remove.
10293 (__arm_vandq_x_u32): Remove.
10294 (__arm_vandq_f16): Remove.
10295 (__arm_vandq_f32): Remove.
10296 (__arm_vandq_m_f32): Remove.
10297 (__arm_vandq_m_f16): Remove.
10298 (__arm_vandq_x_f16): Remove.
10299 (__arm_vandq_x_f32): Remove.
10300 (__arm_vandq): Remove.
10301 (__arm_vandq_m): Remove.
10302 (__arm_vandq_x): Remove.
10305 (veorq_u8): Remove.
10306 (veorq_s8): Remove.
10307 (veorq_u16): Remove.
10308 (veorq_s16): Remove.
10309 (veorq_u32): Remove.
10310 (veorq_s32): Remove.
10311 (veorq_f16): Remove.
10312 (veorq_f32): Remove.
10313 (veorq_m_s8): Remove.
10314 (veorq_m_s32): Remove.
10315 (veorq_m_s16): Remove.
10316 (veorq_m_u8): Remove.
10317 (veorq_m_u32): Remove.
10318 (veorq_m_u16): Remove.
10319 (veorq_m_f32): Remove.
10320 (veorq_m_f16): Remove.
10321 (veorq_x_s8): Remove.
10322 (veorq_x_s16): Remove.
10323 (veorq_x_s32): Remove.
10324 (veorq_x_u8): Remove.
10325 (veorq_x_u16): Remove.
10326 (veorq_x_u32): Remove.
10327 (veorq_x_f16): Remove.
10328 (veorq_x_f32): Remove.
10329 (__arm_veorq_u8): Remove.
10330 (__arm_veorq_s8): Remove.
10331 (__arm_veorq_u16): Remove.
10332 (__arm_veorq_s16): Remove.
10333 (__arm_veorq_u32): Remove.
10334 (__arm_veorq_s32): Remove.
10335 (__arm_veorq_m_s8): Remove.
10336 (__arm_veorq_m_s32): Remove.
10337 (__arm_veorq_m_s16): Remove.
10338 (__arm_veorq_m_u8): Remove.
10339 (__arm_veorq_m_u32): Remove.
10340 (__arm_veorq_m_u16): Remove.
10341 (__arm_veorq_x_s8): Remove.
10342 (__arm_veorq_x_s16): Remove.
10343 (__arm_veorq_x_s32): Remove.
10344 (__arm_veorq_x_u8): Remove.
10345 (__arm_veorq_x_u16): Remove.
10346 (__arm_veorq_x_u32): Remove.
10347 (__arm_veorq_f16): Remove.
10348 (__arm_veorq_f32): Remove.
10349 (__arm_veorq_m_f32): Remove.
10350 (__arm_veorq_m_f16): Remove.
10351 (__arm_veorq_x_f16): Remove.
10352 (__arm_veorq_x_f32): Remove.
10353 (__arm_veorq): Remove.
10354 (__arm_veorq_m): Remove.
10355 (__arm_veorq_x): Remove.
10357 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10359 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
10360 (MVE_FP_M_BINARY_LOGIC): New.
10361 (MVE_INT_M_N_BINARY_LOGIC): New.
10362 (MVE_INT_N_BINARY_LOGIC): New.
10363 (mve_insn): Add vand, veor, vorr, vbic.
10364 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
10365 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
10366 (mve_vbicq_m_<supf><mode>): Merge into ...
10367 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10368 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
10369 (mve_vbicq_m_f<mode>): Merge into ...
10370 (@mve_<mve_insn>q_m_f<mode>): ... this.
10371 (mve_vorrq_n_<supf><mode>)
10372 (mve_vbicq_n_<supf><mode>): Merge into ...
10373 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10374 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
10376 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10378 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10380 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
10381 * config/arm/arm-mve-builtins-shapes.h (binary): New.
10383 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10385 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
10387 (vaddq, vmulq, vsubq): New.
10388 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
10389 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
10390 * config/arm/arm_mve.h (vaddq): Remove.
10393 (vaddq_n_u8): Remove.
10394 (vaddq_n_s8): Remove.
10395 (vaddq_n_u16): Remove.
10396 (vaddq_n_s16): Remove.
10397 (vaddq_n_u32): Remove.
10398 (vaddq_n_s32): Remove.
10399 (vaddq_n_f16): Remove.
10400 (vaddq_n_f32): Remove.
10401 (vaddq_m_n_s8): Remove.
10402 (vaddq_m_n_s32): Remove.
10403 (vaddq_m_n_s16): Remove.
10404 (vaddq_m_n_u8): Remove.
10405 (vaddq_m_n_u32): Remove.
10406 (vaddq_m_n_u16): Remove.
10407 (vaddq_m_s8): Remove.
10408 (vaddq_m_s32): Remove.
10409 (vaddq_m_s16): Remove.
10410 (vaddq_m_u8): Remove.
10411 (vaddq_m_u32): Remove.
10412 (vaddq_m_u16): Remove.
10413 (vaddq_m_f32): Remove.
10414 (vaddq_m_f16): Remove.
10415 (vaddq_m_n_f32): Remove.
10416 (vaddq_m_n_f16): Remove.
10417 (vaddq_s8): Remove.
10418 (vaddq_s16): Remove.
10419 (vaddq_s32): Remove.
10420 (vaddq_u8): Remove.
10421 (vaddq_u16): Remove.
10422 (vaddq_u32): Remove.
10423 (vaddq_f16): Remove.
10424 (vaddq_f32): Remove.
10425 (vaddq_x_s8): Remove.
10426 (vaddq_x_s16): Remove.
10427 (vaddq_x_s32): Remove.
10428 (vaddq_x_n_s8): Remove.
10429 (vaddq_x_n_s16): Remove.
10430 (vaddq_x_n_s32): Remove.
10431 (vaddq_x_u8): Remove.
10432 (vaddq_x_u16): Remove.
10433 (vaddq_x_u32): Remove.
10434 (vaddq_x_n_u8): Remove.
10435 (vaddq_x_n_u16): Remove.
10436 (vaddq_x_n_u32): Remove.
10437 (vaddq_x_f16): Remove.
10438 (vaddq_x_f32): Remove.
10439 (vaddq_x_n_f16): Remove.
10440 (vaddq_x_n_f32): Remove.
10441 (__arm_vaddq_n_u8): Remove.
10442 (__arm_vaddq_n_s8): Remove.
10443 (__arm_vaddq_n_u16): Remove.
10444 (__arm_vaddq_n_s16): Remove.
10445 (__arm_vaddq_n_u32): Remove.
10446 (__arm_vaddq_n_s32): Remove.
10447 (__arm_vaddq_m_n_s8): Remove.
10448 (__arm_vaddq_m_n_s32): Remove.
10449 (__arm_vaddq_m_n_s16): Remove.
10450 (__arm_vaddq_m_n_u8): Remove.
10451 (__arm_vaddq_m_n_u32): Remove.
10452 (__arm_vaddq_m_n_u16): Remove.
10453 (__arm_vaddq_m_s8): Remove.
10454 (__arm_vaddq_m_s32): Remove.
10455 (__arm_vaddq_m_s16): Remove.
10456 (__arm_vaddq_m_u8): Remove.
10457 (__arm_vaddq_m_u32): Remove.
10458 (__arm_vaddq_m_u16): Remove.
10459 (__arm_vaddq_s8): Remove.
10460 (__arm_vaddq_s16): Remove.
10461 (__arm_vaddq_s32): Remove.
10462 (__arm_vaddq_u8): Remove.
10463 (__arm_vaddq_u16): Remove.
10464 (__arm_vaddq_u32): Remove.
10465 (__arm_vaddq_x_s8): Remove.
10466 (__arm_vaddq_x_s16): Remove.
10467 (__arm_vaddq_x_s32): Remove.
10468 (__arm_vaddq_x_n_s8): Remove.
10469 (__arm_vaddq_x_n_s16): Remove.
10470 (__arm_vaddq_x_n_s32): Remove.
10471 (__arm_vaddq_x_u8): Remove.
10472 (__arm_vaddq_x_u16): Remove.
10473 (__arm_vaddq_x_u32): Remove.
10474 (__arm_vaddq_x_n_u8): Remove.
10475 (__arm_vaddq_x_n_u16): Remove.
10476 (__arm_vaddq_x_n_u32): Remove.
10477 (__arm_vaddq_n_f16): Remove.
10478 (__arm_vaddq_n_f32): Remove.
10479 (__arm_vaddq_m_f32): Remove.
10480 (__arm_vaddq_m_f16): Remove.
10481 (__arm_vaddq_m_n_f32): Remove.
10482 (__arm_vaddq_m_n_f16): Remove.
10483 (__arm_vaddq_f16): Remove.
10484 (__arm_vaddq_f32): Remove.
10485 (__arm_vaddq_x_f16): Remove.
10486 (__arm_vaddq_x_f32): Remove.
10487 (__arm_vaddq_x_n_f16): Remove.
10488 (__arm_vaddq_x_n_f32): Remove.
10489 (__arm_vaddq): Remove.
10490 (__arm_vaddq_m): Remove.
10491 (__arm_vaddq_x): Remove.
10495 (vmulq_u8): Remove.
10496 (vmulq_n_u8): Remove.
10497 (vmulq_s8): Remove.
10498 (vmulq_n_s8): Remove.
10499 (vmulq_u16): Remove.
10500 (vmulq_n_u16): Remove.
10501 (vmulq_s16): Remove.
10502 (vmulq_n_s16): Remove.
10503 (vmulq_u32): Remove.
10504 (vmulq_n_u32): Remove.
10505 (vmulq_s32): Remove.
10506 (vmulq_n_s32): Remove.
10507 (vmulq_n_f16): Remove.
10508 (vmulq_f16): Remove.
10509 (vmulq_n_f32): Remove.
10510 (vmulq_f32): Remove.
10511 (vmulq_m_n_s8): Remove.
10512 (vmulq_m_n_s32): Remove.
10513 (vmulq_m_n_s16): Remove.
10514 (vmulq_m_n_u8): Remove.
10515 (vmulq_m_n_u32): Remove.
10516 (vmulq_m_n_u16): Remove.
10517 (vmulq_m_s8): Remove.
10518 (vmulq_m_s32): Remove.
10519 (vmulq_m_s16): Remove.
10520 (vmulq_m_u8): Remove.
10521 (vmulq_m_u32): Remove.
10522 (vmulq_m_u16): Remove.
10523 (vmulq_m_f32): Remove.
10524 (vmulq_m_f16): Remove.
10525 (vmulq_m_n_f32): Remove.
10526 (vmulq_m_n_f16): Remove.
10527 (vmulq_x_s8): Remove.
10528 (vmulq_x_s16): Remove.
10529 (vmulq_x_s32): Remove.
10530 (vmulq_x_n_s8): Remove.
10531 (vmulq_x_n_s16): Remove.
10532 (vmulq_x_n_s32): Remove.
10533 (vmulq_x_u8): Remove.
10534 (vmulq_x_u16): Remove.
10535 (vmulq_x_u32): Remove.
10536 (vmulq_x_n_u8): Remove.
10537 (vmulq_x_n_u16): Remove.
10538 (vmulq_x_n_u32): Remove.
10539 (vmulq_x_f16): Remove.
10540 (vmulq_x_f32): Remove.
10541 (vmulq_x_n_f16): Remove.
10542 (vmulq_x_n_f32): Remove.
10543 (__arm_vmulq_u8): Remove.
10544 (__arm_vmulq_n_u8): Remove.
10545 (__arm_vmulq_s8): Remove.
10546 (__arm_vmulq_n_s8): Remove.
10547 (__arm_vmulq_u16): Remove.
10548 (__arm_vmulq_n_u16): Remove.
10549 (__arm_vmulq_s16): Remove.
10550 (__arm_vmulq_n_s16): Remove.
10551 (__arm_vmulq_u32): Remove.
10552 (__arm_vmulq_n_u32): Remove.
10553 (__arm_vmulq_s32): Remove.
10554 (__arm_vmulq_n_s32): Remove.
10555 (__arm_vmulq_m_n_s8): Remove.
10556 (__arm_vmulq_m_n_s32): Remove.
10557 (__arm_vmulq_m_n_s16): Remove.
10558 (__arm_vmulq_m_n_u8): Remove.
10559 (__arm_vmulq_m_n_u32): Remove.
10560 (__arm_vmulq_m_n_u16): Remove.
10561 (__arm_vmulq_m_s8): Remove.
10562 (__arm_vmulq_m_s32): Remove.
10563 (__arm_vmulq_m_s16): Remove.
10564 (__arm_vmulq_m_u8): Remove.
10565 (__arm_vmulq_m_u32): Remove.
10566 (__arm_vmulq_m_u16): Remove.
10567 (__arm_vmulq_x_s8): Remove.
10568 (__arm_vmulq_x_s16): Remove.
10569 (__arm_vmulq_x_s32): Remove.
10570 (__arm_vmulq_x_n_s8): Remove.
10571 (__arm_vmulq_x_n_s16): Remove.
10572 (__arm_vmulq_x_n_s32): Remove.
10573 (__arm_vmulq_x_u8): Remove.
10574 (__arm_vmulq_x_u16): Remove.
10575 (__arm_vmulq_x_u32): Remove.
10576 (__arm_vmulq_x_n_u8): Remove.
10577 (__arm_vmulq_x_n_u16): Remove.
10578 (__arm_vmulq_x_n_u32): Remove.
10579 (__arm_vmulq_n_f16): Remove.
10580 (__arm_vmulq_f16): Remove.
10581 (__arm_vmulq_n_f32): Remove.
10582 (__arm_vmulq_f32): Remove.
10583 (__arm_vmulq_m_f32): Remove.
10584 (__arm_vmulq_m_f16): Remove.
10585 (__arm_vmulq_m_n_f32): Remove.
10586 (__arm_vmulq_m_n_f16): Remove.
10587 (__arm_vmulq_x_f16): Remove.
10588 (__arm_vmulq_x_f32): Remove.
10589 (__arm_vmulq_x_n_f16): Remove.
10590 (__arm_vmulq_x_n_f32): Remove.
10591 (__arm_vmulq): Remove.
10592 (__arm_vmulq_m): Remove.
10593 (__arm_vmulq_x): Remove.
10597 (vsubq_n_f16): Remove.
10598 (vsubq_n_f32): Remove.
10599 (vsubq_u8): Remove.
10600 (vsubq_n_u8): Remove.
10601 (vsubq_s8): Remove.
10602 (vsubq_n_s8): Remove.
10603 (vsubq_u16): Remove.
10604 (vsubq_n_u16): Remove.
10605 (vsubq_s16): Remove.
10606 (vsubq_n_s16): Remove.
10607 (vsubq_u32): Remove.
10608 (vsubq_n_u32): Remove.
10609 (vsubq_s32): Remove.
10610 (vsubq_n_s32): Remove.
10611 (vsubq_f16): Remove.
10612 (vsubq_f32): Remove.
10613 (vsubq_m_s8): Remove.
10614 (vsubq_m_u8): Remove.
10615 (vsubq_m_s16): Remove.
10616 (vsubq_m_u16): Remove.
10617 (vsubq_m_s32): Remove.
10618 (vsubq_m_u32): Remove.
10619 (vsubq_m_n_s8): Remove.
10620 (vsubq_m_n_s32): Remove.
10621 (vsubq_m_n_s16): Remove.
10622 (vsubq_m_n_u8): Remove.
10623 (vsubq_m_n_u32): Remove.
10624 (vsubq_m_n_u16): Remove.
10625 (vsubq_m_f32): Remove.
10626 (vsubq_m_f16): Remove.
10627 (vsubq_m_n_f32): Remove.
10628 (vsubq_m_n_f16): Remove.
10629 (vsubq_x_s8): Remove.
10630 (vsubq_x_s16): Remove.
10631 (vsubq_x_s32): Remove.
10632 (vsubq_x_n_s8): Remove.
10633 (vsubq_x_n_s16): Remove.
10634 (vsubq_x_n_s32): Remove.
10635 (vsubq_x_u8): Remove.
10636 (vsubq_x_u16): Remove.
10637 (vsubq_x_u32): Remove.
10638 (vsubq_x_n_u8): Remove.
10639 (vsubq_x_n_u16): Remove.
10640 (vsubq_x_n_u32): Remove.
10641 (vsubq_x_f16): Remove.
10642 (vsubq_x_f32): Remove.
10643 (vsubq_x_n_f16): Remove.
10644 (vsubq_x_n_f32): Remove.
10645 (__arm_vsubq_u8): Remove.
10646 (__arm_vsubq_n_u8): Remove.
10647 (__arm_vsubq_s8): Remove.
10648 (__arm_vsubq_n_s8): Remove.
10649 (__arm_vsubq_u16): Remove.
10650 (__arm_vsubq_n_u16): Remove.
10651 (__arm_vsubq_s16): Remove.
10652 (__arm_vsubq_n_s16): Remove.
10653 (__arm_vsubq_u32): Remove.
10654 (__arm_vsubq_n_u32): Remove.
10655 (__arm_vsubq_s32): Remove.
10656 (__arm_vsubq_n_s32): Remove.
10657 (__arm_vsubq_m_s8): Remove.
10658 (__arm_vsubq_m_u8): Remove.
10659 (__arm_vsubq_m_s16): Remove.
10660 (__arm_vsubq_m_u16): Remove.
10661 (__arm_vsubq_m_s32): Remove.
10662 (__arm_vsubq_m_u32): Remove.
10663 (__arm_vsubq_m_n_s8): Remove.
10664 (__arm_vsubq_m_n_s32): Remove.
10665 (__arm_vsubq_m_n_s16): Remove.
10666 (__arm_vsubq_m_n_u8): Remove.
10667 (__arm_vsubq_m_n_u32): Remove.
10668 (__arm_vsubq_m_n_u16): Remove.
10669 (__arm_vsubq_x_s8): Remove.
10670 (__arm_vsubq_x_s16): Remove.
10671 (__arm_vsubq_x_s32): Remove.
10672 (__arm_vsubq_x_n_s8): Remove.
10673 (__arm_vsubq_x_n_s16): Remove.
10674 (__arm_vsubq_x_n_s32): Remove.
10675 (__arm_vsubq_x_u8): Remove.
10676 (__arm_vsubq_x_u16): Remove.
10677 (__arm_vsubq_x_u32): Remove.
10678 (__arm_vsubq_x_n_u8): Remove.
10679 (__arm_vsubq_x_n_u16): Remove.
10680 (__arm_vsubq_x_n_u32): Remove.
10681 (__arm_vsubq_n_f16): Remove.
10682 (__arm_vsubq_n_f32): Remove.
10683 (__arm_vsubq_f16): Remove.
10684 (__arm_vsubq_f32): Remove.
10685 (__arm_vsubq_m_f32): Remove.
10686 (__arm_vsubq_m_f16): Remove.
10687 (__arm_vsubq_m_n_f32): Remove.
10688 (__arm_vsubq_m_n_f16): Remove.
10689 (__arm_vsubq_x_f16): Remove.
10690 (__arm_vsubq_x_f32): Remove.
10691 (__arm_vsubq_x_n_f16): Remove.
10692 (__arm_vsubq_x_n_f32): Remove.
10693 (__arm_vsubq): Remove.
10694 (__arm_vsubq_m): Remove.
10695 (__arm_vsubq_x): Remove.
10696 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
10698 (vmulq_u, vmulq_s, vmulq_f): Remove.
10699 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
10700 (mve_vmulq_<supf><mode>): Remove.
10702 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10704 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
10705 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
10706 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
10708 * config/arm/mve.md
10709 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
10711 (@mve_<mve_insn>q_n_f<mode>): ... this.
10712 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
10713 (mve_vsubq_n_<supf><mode>): Factorize into ...
10714 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10715 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
10717 (mve_<mve_addsubmul>q<mode>): ... this.
10718 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
10720 (mve_<mve_addsubmul>q_f<mode>): ... this.
10721 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
10722 (mve_vsubq_m_<supf><mode>): Factorize into ...
10723 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
10724 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
10725 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
10726 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10727 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
10729 (@mve_<mve_insn>q_m_f<mode>): ... this.
10730 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
10731 (mve_vsubq_m_n_f<mode>): Factorize into ...
10732 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10734 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10736 * config/arm/arm-mve-builtins-functions.h (class
10737 unspec_based_mve_function_base): New.
10738 (class unspec_based_mve_function_exact_insn): New.
10740 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
10742 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
10743 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
10745 2023-05-03 Murray Steele <murray.steele@arm.com>
10746 Christophe Lyon <christophe.lyon@arm.com>
10748 * config/arm/arm-mve-builtins-base.cc (class
10749 vuninitializedq_impl): New.
10750 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
10751 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
10753 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
10754 * config/arm/arm-mve-builtins-shapes.h (inherent): New
10756 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
10757 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
10758 (__arm_vuninitializedq_u8): Remove.
10759 (__arm_vuninitializedq_u16): Remove.
10760 (__arm_vuninitializedq_u32): Remove.
10761 (__arm_vuninitializedq_u64): Remove.
10762 (__arm_vuninitializedq_s8): Remove.
10763 (__arm_vuninitializedq_s16): Remove.
10764 (__arm_vuninitializedq_s32): Remove.
10765 (__arm_vuninitializedq_s64): Remove.
10766 (__arm_vuninitializedq_f16): Remove.
10767 (__arm_vuninitializedq_f32): Remove.
10769 2023-05-03 Murray Steele <murray.steele@arm.com>
10770 Christophe Lyon <christophe.lyon@arm.com>
10772 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
10773 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
10774 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
10775 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
10776 (parse_type): Likewise.
10777 (parse_signature): Likewise.
10778 (build_one): Likewise.
10779 (build_all): Likewise.
10780 (overloaded_base): New struct.
10781 (unary_convert_def): Likewise.
10782 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
10783 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
10785 (TYPES_reinterpret_unsigned1): Likewise.
10786 (TYPES_reinterpret_integer): Likewise.
10787 (TYPES_reinterpret_integer1): Likewise.
10788 (TYPES_reinterpret_float1): Likewise.
10789 (TYPES_reinterpret_float): Likewise.
10790 (reinterpret_integer): New.
10791 (reinterpret_float): New.
10792 (handle_arm_mve_h): Register builtins.
10793 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
10794 (vreinterpretq_s32): Likewise.
10795 (vreinterpretq_s64): Likewise.
10796 (vreinterpretq_s8): Likewise.
10797 (vreinterpretq_u16): Likewise.
10798 (vreinterpretq_u32): Likewise.
10799 (vreinterpretq_u64): Likewise.
10800 (vreinterpretq_u8): Likewise.
10801 (vreinterpretq_f16): Likewise.
10802 (vreinterpretq_f32): Likewise.
10803 (vreinterpretq_s16_s32): Likewise.
10804 (vreinterpretq_s16_s64): Likewise.
10805 (vreinterpretq_s16_s8): Likewise.
10806 (vreinterpretq_s16_u16): Likewise.
10807 (vreinterpretq_s16_u32): Likewise.
10808 (vreinterpretq_s16_u64): Likewise.
10809 (vreinterpretq_s16_u8): Likewise.
10810 (vreinterpretq_s32_s16): Likewise.
10811 (vreinterpretq_s32_s64): Likewise.
10812 (vreinterpretq_s32_s8): Likewise.
10813 (vreinterpretq_s32_u16): Likewise.
10814 (vreinterpretq_s32_u32): Likewise.
10815 (vreinterpretq_s32_u64): Likewise.
10816 (vreinterpretq_s32_u8): Likewise.
10817 (vreinterpretq_s64_s16): Likewise.
10818 (vreinterpretq_s64_s32): Likewise.
10819 (vreinterpretq_s64_s8): Likewise.
10820 (vreinterpretq_s64_u16): Likewise.
10821 (vreinterpretq_s64_u32): Likewise.
10822 (vreinterpretq_s64_u64): Likewise.
10823 (vreinterpretq_s64_u8): Likewise.
10824 (vreinterpretq_s8_s16): Likewise.
10825 (vreinterpretq_s8_s32): Likewise.
10826 (vreinterpretq_s8_s64): Likewise.
10827 (vreinterpretq_s8_u16): Likewise.
10828 (vreinterpretq_s8_u32): Likewise.
10829 (vreinterpretq_s8_u64): Likewise.
10830 (vreinterpretq_s8_u8): Likewise.
10831 (vreinterpretq_u16_s16): Likewise.
10832 (vreinterpretq_u16_s32): Likewise.
10833 (vreinterpretq_u16_s64): Likewise.
10834 (vreinterpretq_u16_s8): Likewise.
10835 (vreinterpretq_u16_u32): Likewise.
10836 (vreinterpretq_u16_u64): Likewise.
10837 (vreinterpretq_u16_u8): Likewise.
10838 (vreinterpretq_u32_s16): Likewise.
10839 (vreinterpretq_u32_s32): Likewise.
10840 (vreinterpretq_u32_s64): Likewise.
10841 (vreinterpretq_u32_s8): Likewise.
10842 (vreinterpretq_u32_u16): Likewise.
10843 (vreinterpretq_u32_u64): Likewise.
10844 (vreinterpretq_u32_u8): Likewise.
10845 (vreinterpretq_u64_s16): Likewise.
10846 (vreinterpretq_u64_s32): Likewise.
10847 (vreinterpretq_u64_s64): Likewise.
10848 (vreinterpretq_u64_s8): Likewise.
10849 (vreinterpretq_u64_u16): Likewise.
10850 (vreinterpretq_u64_u32): Likewise.
10851 (vreinterpretq_u64_u8): Likewise.
10852 (vreinterpretq_u8_s16): Likewise.
10853 (vreinterpretq_u8_s32): Likewise.
10854 (vreinterpretq_u8_s64): Likewise.
10855 (vreinterpretq_u8_s8): Likewise.
10856 (vreinterpretq_u8_u16): Likewise.
10857 (vreinterpretq_u8_u32): Likewise.
10858 (vreinterpretq_u8_u64): Likewise.
10859 (vreinterpretq_s32_f16): Likewise.
10860 (vreinterpretq_s32_f32): Likewise.
10861 (vreinterpretq_u16_f16): Likewise.
10862 (vreinterpretq_u16_f32): Likewise.
10863 (vreinterpretq_u32_f16): Likewise.
10864 (vreinterpretq_u32_f32): Likewise.
10865 (vreinterpretq_u64_f16): Likewise.
10866 (vreinterpretq_u64_f32): Likewise.
10867 (vreinterpretq_u8_f16): Likewise.
10868 (vreinterpretq_u8_f32): Likewise.
10869 (vreinterpretq_f16_f32): Likewise.
10870 (vreinterpretq_f16_s16): Likewise.
10871 (vreinterpretq_f16_s32): Likewise.
10872 (vreinterpretq_f16_s64): Likewise.
10873 (vreinterpretq_f16_s8): Likewise.
10874 (vreinterpretq_f16_u16): Likewise.
10875 (vreinterpretq_f16_u32): Likewise.
10876 (vreinterpretq_f16_u64): Likewise.
10877 (vreinterpretq_f16_u8): Likewise.
10878 (vreinterpretq_f32_f16): Likewise.
10879 (vreinterpretq_f32_s16): Likewise.
10880 (vreinterpretq_f32_s32): Likewise.
10881 (vreinterpretq_f32_s64): Likewise.
10882 (vreinterpretq_f32_s8): Likewise.
10883 (vreinterpretq_f32_u16): Likewise.
10884 (vreinterpretq_f32_u32): Likewise.
10885 (vreinterpretq_f32_u64): Likewise.
10886 (vreinterpretq_f32_u8): Likewise.
10887 (vreinterpretq_s16_f16): Likewise.
10888 (vreinterpretq_s16_f32): Likewise.
10889 (vreinterpretq_s64_f16): Likewise.
10890 (vreinterpretq_s64_f32): Likewise.
10891 (vreinterpretq_s8_f16): Likewise.
10892 (vreinterpretq_s8_f32): Likewise.
10893 (__arm_vreinterpretq_f16): Likewise.
10894 (__arm_vreinterpretq_f32): Likewise.
10895 (__arm_vreinterpretq_s16): Likewise.
10896 (__arm_vreinterpretq_s32): Likewise.
10897 (__arm_vreinterpretq_s64): Likewise.
10898 (__arm_vreinterpretq_s8): Likewise.
10899 (__arm_vreinterpretq_u16): Likewise.
10900 (__arm_vreinterpretq_u32): Likewise.
10901 (__arm_vreinterpretq_u64): Likewise.
10902 (__arm_vreinterpretq_u8): Likewise.
10903 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
10904 (__arm_vreinterpretq_s16_s64): Likewise.
10905 (__arm_vreinterpretq_s16_s8): Likewise.
10906 (__arm_vreinterpretq_s16_u16): Likewise.
10907 (__arm_vreinterpretq_s16_u32): Likewise.
10908 (__arm_vreinterpretq_s16_u64): Likewise.
10909 (__arm_vreinterpretq_s16_u8): Likewise.
10910 (__arm_vreinterpretq_s32_s16): Likewise.
10911 (__arm_vreinterpretq_s32_s64): Likewise.
10912 (__arm_vreinterpretq_s32_s8): Likewise.
10913 (__arm_vreinterpretq_s32_u16): Likewise.
10914 (__arm_vreinterpretq_s32_u32): Likewise.
10915 (__arm_vreinterpretq_s32_u64): Likewise.
10916 (__arm_vreinterpretq_s32_u8): Likewise.
10917 (__arm_vreinterpretq_s64_s16): Likewise.
10918 (__arm_vreinterpretq_s64_s32): Likewise.
10919 (__arm_vreinterpretq_s64_s8): Likewise.
10920 (__arm_vreinterpretq_s64_u16): Likewise.
10921 (__arm_vreinterpretq_s64_u32): Likewise.
10922 (__arm_vreinterpretq_s64_u64): Likewise.
10923 (__arm_vreinterpretq_s64_u8): Likewise.
10924 (__arm_vreinterpretq_s8_s16): Likewise.
10925 (__arm_vreinterpretq_s8_s32): Likewise.
10926 (__arm_vreinterpretq_s8_s64): Likewise.
10927 (__arm_vreinterpretq_s8_u16): Likewise.
10928 (__arm_vreinterpretq_s8_u32): Likewise.
10929 (__arm_vreinterpretq_s8_u64): Likewise.
10930 (__arm_vreinterpretq_s8_u8): Likewise.
10931 (__arm_vreinterpretq_u16_s16): Likewise.
10932 (__arm_vreinterpretq_u16_s32): Likewise.
10933 (__arm_vreinterpretq_u16_s64): Likewise.
10934 (__arm_vreinterpretq_u16_s8): Likewise.
10935 (__arm_vreinterpretq_u16_u32): Likewise.
10936 (__arm_vreinterpretq_u16_u64): Likewise.
10937 (__arm_vreinterpretq_u16_u8): Likewise.
10938 (__arm_vreinterpretq_u32_s16): Likewise.
10939 (__arm_vreinterpretq_u32_s32): Likewise.
10940 (__arm_vreinterpretq_u32_s64): Likewise.
10941 (__arm_vreinterpretq_u32_s8): Likewise.
10942 (__arm_vreinterpretq_u32_u16): Likewise.
10943 (__arm_vreinterpretq_u32_u64): Likewise.
10944 (__arm_vreinterpretq_u32_u8): Likewise.
10945 (__arm_vreinterpretq_u64_s16): Likewise.
10946 (__arm_vreinterpretq_u64_s32): Likewise.
10947 (__arm_vreinterpretq_u64_s64): Likewise.
10948 (__arm_vreinterpretq_u64_s8): Likewise.
10949 (__arm_vreinterpretq_u64_u16): Likewise.
10950 (__arm_vreinterpretq_u64_u32): Likewise.
10951 (__arm_vreinterpretq_u64_u8): Likewise.
10952 (__arm_vreinterpretq_u8_s16): Likewise.
10953 (__arm_vreinterpretq_u8_s32): Likewise.
10954 (__arm_vreinterpretq_u8_s64): Likewise.
10955 (__arm_vreinterpretq_u8_s8): Likewise.
10956 (__arm_vreinterpretq_u8_u16): Likewise.
10957 (__arm_vreinterpretq_u8_u32): Likewise.
10958 (__arm_vreinterpretq_u8_u64): Likewise.
10959 (__arm_vreinterpretq_s32_f16): Likewise.
10960 (__arm_vreinterpretq_s32_f32): Likewise.
10961 (__arm_vreinterpretq_s16_f16): Likewise.
10962 (__arm_vreinterpretq_s16_f32): Likewise.
10963 (__arm_vreinterpretq_s64_f16): Likewise.
10964 (__arm_vreinterpretq_s64_f32): Likewise.
10965 (__arm_vreinterpretq_s8_f16): Likewise.
10966 (__arm_vreinterpretq_s8_f32): Likewise.
10967 (__arm_vreinterpretq_u16_f16): Likewise.
10968 (__arm_vreinterpretq_u16_f32): Likewise.
10969 (__arm_vreinterpretq_u32_f16): Likewise.
10970 (__arm_vreinterpretq_u32_f32): Likewise.
10971 (__arm_vreinterpretq_u64_f16): Likewise.
10972 (__arm_vreinterpretq_u64_f32): Likewise.
10973 (__arm_vreinterpretq_u8_f16): Likewise.
10974 (__arm_vreinterpretq_u8_f32): Likewise.
10975 (__arm_vreinterpretq_f16_f32): Likewise.
10976 (__arm_vreinterpretq_f16_s16): Likewise.
10977 (__arm_vreinterpretq_f16_s32): Likewise.
10978 (__arm_vreinterpretq_f16_s64): Likewise.
10979 (__arm_vreinterpretq_f16_s8): Likewise.
10980 (__arm_vreinterpretq_f16_u16): Likewise.
10981 (__arm_vreinterpretq_f16_u32): Likewise.
10982 (__arm_vreinterpretq_f16_u64): Likewise.
10983 (__arm_vreinterpretq_f16_u8): Likewise.
10984 (__arm_vreinterpretq_f32_f16): Likewise.
10985 (__arm_vreinterpretq_f32_s16): Likewise.
10986 (__arm_vreinterpretq_f32_s32): Likewise.
10987 (__arm_vreinterpretq_f32_s64): Likewise.
10988 (__arm_vreinterpretq_f32_s8): Likewise.
10989 (__arm_vreinterpretq_f32_u16): Likewise.
10990 (__arm_vreinterpretq_f32_u32): Likewise.
10991 (__arm_vreinterpretq_f32_u64): Likewise.
10992 (__arm_vreinterpretq_f32_u8): Likewise.
10993 (__arm_vreinterpretq_s16): Likewise.
10994 (__arm_vreinterpretq_s32): Likewise.
10995 (__arm_vreinterpretq_s64): Likewise.
10996 (__arm_vreinterpretq_s8): Likewise.
10997 (__arm_vreinterpretq_u16): Likewise.
10998 (__arm_vreinterpretq_u32): Likewise.
10999 (__arm_vreinterpretq_u64): Likewise.
11000 (__arm_vreinterpretq_u8): Likewise.
11001 (__arm_vreinterpretq_f16): Likewise.
11002 (__arm_vreinterpretq_f32): Likewise.
11003 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
11004 * config/arm/unspecs.md: (REINTERPRET): New unspec.
11006 2023-05-03 Murray Steele <murray.steele@arm.com>
11007 Christophe Lyon <christophe.lyon@arm.com>
11008 Christophe Lyon <christophe.lyon@arm.com
11010 * config.gcc: Add arm-mve-builtins-base.o and
11011 arm-mve-builtins-shapes.o to extra_objs.
11012 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
11014 (arm_expand_builtin): Likewise
11015 (arm_check_builtin_call): Likewise
11016 (arm_describe_resolver): Likewise.
11017 * config/arm/arm-builtins.h (enum resolver_ident): Add
11019 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
11020 (arm_resolve_overloaded_builtin): Handle MVE builtins.
11021 (arm_register_target_pragmas): Register arm_check_builtin_call.
11022 * config/arm/arm-mve-builtins.cc (class registered_function): New
11024 (struct registered_function_hasher): New struct.
11025 (pred_suffixes): New table.
11026 (mode_suffixes): New table.
11027 (type_suffix_info): New table.
11028 (TYPES_float16): New.
11029 (TYPES_all_float): New.
11030 (TYPES_integer_8): New.
11031 (TYPES_integer_8_16): New.
11032 (TYPES_integer_16_32): New.
11033 (TYPES_integer_32): New.
11034 (TYPES_signed_16_32): New.
11035 (TYPES_signed_32): New.
11036 (TYPES_all_signed): New.
11037 (TYPES_all_unsigned): New.
11038 (TYPES_all_integer): New.
11039 (TYPES_all_integer_with_64): New.
11040 (DEF_VECTOR_TYPE): New.
11041 (DEF_DOUBLE_TYPE): New.
11042 (DEF_MVE_TYPES_ARRAY): New.
11043 (all_integer): New.
11044 (all_integer_with_64): New.
11048 (all_unsigned): New.
11050 (integer_8_16): New.
11051 (integer_16_32): New.
11053 (signed_16_32): New.
11055 (register_vector_type): Use void_type_node for mve.fp-only types when
11056 mve.fp is not enabled.
11057 (register_builtin_tuple_types): Likewise.
11058 (handle_arm_mve_h): New function..
11059 (matches_type_p): Likewise..
11060 (report_out_of_range): Likewise.
11061 (report_not_enum): Likewise.
11062 (report_missing_float): Likewise.
11063 (report_non_ice): Likewise.
11064 (check_requires_float): Likewise.
11065 (function_instance::hash): Likewise
11066 (function_instance::call_properties): Likewise.
11067 (function_instance::reads_global_state_p): Likewise.
11068 (function_instance::modifies_global_state_p): Likewise.
11069 (function_instance::could_trap_p): Likewise.
11070 (function_instance::has_inactive_argument): Likewise.
11071 (registered_function_hasher::hash): Likewise.
11072 (registered_function_hasher::equal): Likewise.
11073 (function_builder::function_builder): Likewise.
11074 (function_builder::~function_builder): Likewise.
11075 (function_builder::append_name): Likewise.
11076 (function_builder::finish_name): Likewise.
11077 (function_builder::get_name): Likewise.
11078 (add_attribute): Likewise.
11079 (function_builder::get_attributes): Likewise.
11080 (function_builder::add_function): Likewise.
11081 (function_builder::add_unique_function): Likewise.
11082 (function_builder::add_overloaded_function): Likewise.
11083 (function_builder::add_overloaded_functions): Likewise.
11084 (function_builder::register_function_group): Likewise.
11085 (function_call_info::function_call_info): Likewise.
11086 (function_resolver::function_resolver): Likewise.
11087 (function_resolver::get_vector_type): Likewise.
11088 (function_resolver::get_scalar_type_name): Likewise.
11089 (function_resolver::get_argument_type): Likewise.
11090 (function_resolver::scalar_argument_p): Likewise.
11091 (function_resolver::report_no_such_form): Likewise.
11092 (function_resolver::lookup_form): Likewise.
11093 (function_resolver::resolve_to): Likewise.
11094 (function_resolver::infer_vector_or_tuple_type): Likewise.
11095 (function_resolver::infer_vector_type): Likewise.
11096 (function_resolver::require_vector_or_scalar_type): Likewise.
11097 (function_resolver::require_vector_type): Likewise.
11098 (function_resolver::require_matching_vector_type): Likewise.
11099 (function_resolver::require_derived_vector_type): Likewise.
11100 (function_resolver::require_derived_scalar_type): Likewise.
11101 (function_resolver::require_integer_immediate): Likewise.
11102 (function_resolver::require_scalar_type): Likewise.
11103 (function_resolver::check_num_arguments): Likewise.
11104 (function_resolver::check_gp_argument): Likewise.
11105 (function_resolver::finish_opt_n_resolution): Likewise.
11106 (function_resolver::resolve_unary): Likewise.
11107 (function_resolver::resolve_unary_n): Likewise.
11108 (function_resolver::resolve_uniform): Likewise.
11109 (function_resolver::resolve_uniform_opt_n): Likewise.
11110 (function_resolver::resolve): Likewise.
11111 (function_checker::function_checker): Likewise.
11112 (function_checker::argument_exists_p): Likewise.
11113 (function_checker::require_immediate): Likewise.
11114 (function_checker::require_immediate_enum): Likewise.
11115 (function_checker::require_immediate_range): Likewise.
11116 (function_checker::check): Likewise.
11117 (gimple_folder::gimple_folder): Likewise.
11118 (gimple_folder::fold): Likewise.
11119 (function_expander::function_expander): Likewise.
11120 (function_expander::direct_optab_handler): Likewise.
11121 (function_expander::get_fallback_value): Likewise.
11122 (function_expander::get_reg_target): Likewise.
11123 (function_expander::add_output_operand): Likewise.
11124 (function_expander::add_input_operand): Likewise.
11125 (function_expander::add_integer_operand): Likewise.
11126 (function_expander::generate_insn): Likewise.
11127 (function_expander::use_exact_insn): Likewise.
11128 (function_expander::use_unpred_insn): Likewise.
11129 (function_expander::use_pred_x_insn): Likewise.
11130 (function_expander::use_cond_insn): Likewise.
11131 (function_expander::map_to_rtx_codes): Likewise.
11132 (function_expander::expand): Likewise.
11133 (resolve_overloaded_builtin): Likewise.
11134 (check_builtin_call): Likewise.
11135 (gimple_fold_builtin): Likewise.
11136 (expand_builtin): Likewise.
11137 (gt_ggc_mx): Likewise.
11138 (gt_pch_nx): Likewise.
11139 (gt_pch_nx): Likewise.
11140 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
11151 (offset): New mode.
11152 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
11153 (CP_READ_FPCR): Likewise.
11154 (CP_RAISE_FP_EXCEPTIONS): Likewise.
11155 (CP_READ_MEMORY): Likewise.
11156 (CP_WRITE_MEMORY): Likewise.
11157 (enum units_index): New enum.
11158 (enum predication_index): New.
11159 (enum type_class_index): New.
11160 (enum mode_suffix_index): New enum.
11161 (enum type_suffix_index): New.
11162 (struct mode_suffix_info): New struct.
11163 (struct type_suffix_info): New.
11164 (struct function_group_info): Likewise.
11165 (class function_instance): Likewise.
11166 (class registered_function): Likewise.
11167 (class function_builder): Likewise.
11168 (class function_call_info): Likewise.
11169 (class function_resolver): Likewise.
11170 (class function_checker): Likewise.
11171 (class gimple_folder): Likewise.
11172 (class function_expander): Likewise.
11173 (get_mve_pred16_t): Likewise.
11174 (find_mode_suffix): New function.
11175 (class function_base): Likewise.
11176 (class function_shape): Likewise.
11177 (function_instance::operator==): New function.
11178 (function_instance::operator!=): Likewise.
11179 (function_instance::vectors_per_tuple): Likewise.
11180 (function_instance::mode_suffix): Likewise.
11181 (function_instance::type_suffix): Likewise.
11182 (function_instance::scalar_type): Likewise.
11183 (function_instance::vector_type): Likewise.
11184 (function_instance::tuple_type): Likewise.
11185 (function_instance::vector_mode): Likewise.
11186 (function_call_info::function_returns_void_p): Likewise.
11187 (function_base::call_properties): Likewise.
11188 * config/arm/arm-protos.h (enum arm_builtin_class): Add
11190 (handle_arm_mve_h): New.
11191 (resolve_overloaded_builtin): New.
11192 (check_builtin_call): New.
11193 (gimple_fold_builtin): New.
11194 (expand_builtin): New.
11195 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
11196 arm_gimple_fold_builtin.
11197 (arm_gimple_fold_builtin): New function.
11198 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
11199 * config/arm/predicates.md (arm_any_register_operand): New predicate.
11200 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
11201 (arm-mve-builtins-shapes.o): New target.
11202 (arm-mve-builtins-base.o): New target.
11203 * config/arm/arm-mve-builtins-base.cc: New file.
11204 * config/arm/arm-mve-builtins-base.def: New file.
11205 * config/arm/arm-mve-builtins-base.h: New file.
11206 * config/arm/arm-mve-builtins-functions.h: New file.
11207 * config/arm/arm-mve-builtins-shapes.cc: New file.
11208 * config/arm/arm-mve-builtins-shapes.h: New file.
11210 2023-05-03 Murray Steele <murray.steele@arm.com>
11211 Christophe Lyon <christophe.lyon@arm.com>
11212 Christophe Lyon <christophe.lyon@arm.com>
11214 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
11216 (arm_init_builtin): Use arm_general_add_builtin_function instead
11217 of arm_add_builtin_function.
11218 (arm_init_acle_builtins): Likewise.
11219 (arm_init_mve_builtins): Likewise.
11220 (arm_init_crypto_builtins): Likewise.
11221 (arm_init_builtins): Likewise.
11222 (arm_general_builtin_decl): New function.
11223 (arm_builtin_decl): Defer to numberspace-specialized functions.
11224 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
11225 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
11226 (arm_general_expand_builtin_1): ... specialize for general builtins.
11227 (arm_expand_acle_builtin): Use arm_general_expand_builtin
11228 instead of arm_expand_builtin.
11229 (arm_expand_mve_builtin): Likewise.
11230 (arm_expand_neon_builtin): Likewise.
11231 (arm_expand_vfp_builtin): Likewise.
11232 (arm_general_expand_builtin): New function.
11233 (arm_expand_builtin): Specialize for general builtins.
11234 (arm_general_check_builtin_call): New function.
11235 (arm_check_builtin_call): Specialize for general builtins.
11236 (arm_describe_resolver): Validate numberspace.
11237 (arm_cde_end_args): Likewise.
11238 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
11239 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
11241 2023-05-03 Martin Liska <mliska@suse.cz>
11244 * config/riscv/sync.md: Add gcc_unreachable to a switch.
11246 2023-05-03 Richard Biener <rguenther@suse.de>
11248 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
11249 (patch_loop_exit): Likewise.
11250 (connect_loops): Likewise.
11251 (split_loop): Likewise.
11252 (control_dep_semi_invariant_p): Likewise.
11253 (do_split_loop_on_cond): Likewise.
11254 (split_loop_on_cond): Likewise.
11255 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
11257 (simplify_loop_version): Likewise.
11258 (evaluate_bbs): Likewise.
11259 (find_loop_guard): Likewise.
11260 (clean_up_after_unswitching): Likewise.
11261 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
11263 (optimize_spaceship): Take a gcond * argument, avoid
11265 (math_opts_dom_walker::after_dom_children): Adjust call to
11266 optimize_spaceship.
11267 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
11268 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
11271 2023-05-03 Andreas Schwab <schwab@suse.de>
11273 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
11275 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11277 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
11279 (class vlseg): New class.
11280 (class vsseg): Ditto.
11281 (class vlsseg): Ditto.
11282 (class vssseg): Ditto.
11283 (class seg_indexed_load): Ditto.
11284 (class seg_indexed_store): Ditto.
11285 (class vlsegff): Ditto.
11287 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11288 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
11298 * config/riscv/riscv-vector-builtins-shapes.cc (struct
11299 seg_loadstore_def): Ditto.
11300 (struct seg_indexed_loadstore_def): Ditto.
11301 (struct seg_fault_load_def): Ditto.
11303 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
11304 * config/riscv/riscv-vector-builtins.cc
11305 (function_builder::append_nf): New function.
11306 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
11307 Change ptr from double into float.
11308 (vfloat32m1x3_t): Ditto.
11309 (vfloat32m1x4_t): Ditto.
11310 (vfloat32m1x5_t): Ditto.
11311 (vfloat32m1x6_t): Ditto.
11312 (vfloat32m1x7_t): Ditto.
11313 (vfloat32m1x8_t): Ditto.
11314 (vfloat32m2x2_t): Ditto.
11315 (vfloat32m2x3_t): Ditto.
11316 (vfloat32m2x4_t): Ditto.
11317 (vfloat32m4x2_t): Ditto.
11318 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
11319 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
11321 * config/riscv/riscv.md: Add segment instructions.
11322 * config/riscv/vector-iterators.md: Support segment intrinsics.
11323 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
11325 (@pred_unit_strided_store<mode>): Ditto.
11326 (@pred_strided_load<mode>): Ditto.
11327 (@pred_strided_store<mode>): Ditto.
11328 (@pred_fault_load<mode>): Ditto.
11329 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
11330 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
11331 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
11332 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
11333 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
11334 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
11335 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
11336 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
11337 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
11338 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
11339 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
11340 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
11341 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
11342 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
11344 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11346 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
11347 tuple type support.
11349 (floattype): Ditto.
11351 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
11352 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
11354 (vget): Add tuple type vget.
11355 * config/riscv/riscv-vector-builtins-types.def
11356 (DEF_RVV_TUPLE_OPS): New macro.
11357 (vint8mf8x2_t): Ditto.
11358 (vuint8mf8x2_t): Ditto.
11359 (vint8mf8x3_t): Ditto.
11360 (vuint8mf8x3_t): Ditto.
11361 (vint8mf8x4_t): Ditto.
11362 (vuint8mf8x4_t): Ditto.
11363 (vint8mf8x5_t): Ditto.
11364 (vuint8mf8x5_t): Ditto.
11365 (vint8mf8x6_t): Ditto.
11366 (vuint8mf8x6_t): Ditto.
11367 (vint8mf8x7_t): Ditto.
11368 (vuint8mf8x7_t): Ditto.
11369 (vint8mf8x8_t): Ditto.
11370 (vuint8mf8x8_t): Ditto.
11371 (vint8mf4x2_t): Ditto.
11372 (vuint8mf4x2_t): Ditto.
11373 (vint8mf4x3_t): Ditto.
11374 (vuint8mf4x3_t): Ditto.
11375 (vint8mf4x4_t): Ditto.
11376 (vuint8mf4x4_t): Ditto.
11377 (vint8mf4x5_t): Ditto.
11378 (vuint8mf4x5_t): Ditto.
11379 (vint8mf4x6_t): Ditto.
11380 (vuint8mf4x6_t): Ditto.
11381 (vint8mf4x7_t): Ditto.
11382 (vuint8mf4x7_t): Ditto.
11383 (vint8mf4x8_t): Ditto.
11384 (vuint8mf4x8_t): Ditto.
11385 (vint8mf2x2_t): Ditto.
11386 (vuint8mf2x2_t): Ditto.
11387 (vint8mf2x3_t): Ditto.
11388 (vuint8mf2x3_t): Ditto.
11389 (vint8mf2x4_t): Ditto.
11390 (vuint8mf2x4_t): Ditto.
11391 (vint8mf2x5_t): Ditto.
11392 (vuint8mf2x5_t): Ditto.
11393 (vint8mf2x6_t): Ditto.
11394 (vuint8mf2x6_t): Ditto.
11395 (vint8mf2x7_t): Ditto.
11396 (vuint8mf2x7_t): Ditto.
11397 (vint8mf2x8_t): Ditto.
11398 (vuint8mf2x8_t): Ditto.
11399 (vint8m1x2_t): Ditto.
11400 (vuint8m1x2_t): Ditto.
11401 (vint8m1x3_t): Ditto.
11402 (vuint8m1x3_t): Ditto.
11403 (vint8m1x4_t): Ditto.
11404 (vuint8m1x4_t): Ditto.
11405 (vint8m1x5_t): Ditto.
11406 (vuint8m1x5_t): Ditto.
11407 (vint8m1x6_t): Ditto.
11408 (vuint8m1x6_t): Ditto.
11409 (vint8m1x7_t): Ditto.
11410 (vuint8m1x7_t): Ditto.
11411 (vint8m1x8_t): Ditto.
11412 (vuint8m1x8_t): Ditto.
11413 (vint8m2x2_t): Ditto.
11414 (vuint8m2x2_t): Ditto.
11415 (vint8m2x3_t): Ditto.
11416 (vuint8m2x3_t): Ditto.
11417 (vint8m2x4_t): Ditto.
11418 (vuint8m2x4_t): Ditto.
11419 (vint8m4x2_t): Ditto.
11420 (vuint8m4x2_t): Ditto.
11421 (vint16mf4x2_t): Ditto.
11422 (vuint16mf4x2_t): Ditto.
11423 (vint16mf4x3_t): Ditto.
11424 (vuint16mf4x3_t): Ditto.
11425 (vint16mf4x4_t): Ditto.
11426 (vuint16mf4x4_t): Ditto.
11427 (vint16mf4x5_t): Ditto.
11428 (vuint16mf4x5_t): Ditto.
11429 (vint16mf4x6_t): Ditto.
11430 (vuint16mf4x6_t): Ditto.
11431 (vint16mf4x7_t): Ditto.
11432 (vuint16mf4x7_t): Ditto.
11433 (vint16mf4x8_t): Ditto.
11434 (vuint16mf4x8_t): Ditto.
11435 (vint16mf2x2_t): Ditto.
11436 (vuint16mf2x2_t): Ditto.
11437 (vint16mf2x3_t): Ditto.
11438 (vuint16mf2x3_t): Ditto.
11439 (vint16mf2x4_t): Ditto.
11440 (vuint16mf2x4_t): Ditto.
11441 (vint16mf2x5_t): Ditto.
11442 (vuint16mf2x5_t): Ditto.
11443 (vint16mf2x6_t): Ditto.
11444 (vuint16mf2x6_t): Ditto.
11445 (vint16mf2x7_t): Ditto.
11446 (vuint16mf2x7_t): Ditto.
11447 (vint16mf2x8_t): Ditto.
11448 (vuint16mf2x8_t): Ditto.
11449 (vint16m1x2_t): Ditto.
11450 (vuint16m1x2_t): Ditto.
11451 (vint16m1x3_t): Ditto.
11452 (vuint16m1x3_t): Ditto.
11453 (vint16m1x4_t): Ditto.
11454 (vuint16m1x4_t): Ditto.
11455 (vint16m1x5_t): Ditto.
11456 (vuint16m1x5_t): Ditto.
11457 (vint16m1x6_t): Ditto.
11458 (vuint16m1x6_t): Ditto.
11459 (vint16m1x7_t): Ditto.
11460 (vuint16m1x7_t): Ditto.
11461 (vint16m1x8_t): Ditto.
11462 (vuint16m1x8_t): Ditto.
11463 (vint16m2x2_t): Ditto.
11464 (vuint16m2x2_t): Ditto.
11465 (vint16m2x3_t): Ditto.
11466 (vuint16m2x3_t): Ditto.
11467 (vint16m2x4_t): Ditto.
11468 (vuint16m2x4_t): Ditto.
11469 (vint16m4x2_t): Ditto.
11470 (vuint16m4x2_t): Ditto.
11471 (vint32mf2x2_t): Ditto.
11472 (vuint32mf2x2_t): Ditto.
11473 (vint32mf2x3_t): Ditto.
11474 (vuint32mf2x3_t): Ditto.
11475 (vint32mf2x4_t): Ditto.
11476 (vuint32mf2x4_t): Ditto.
11477 (vint32mf2x5_t): Ditto.
11478 (vuint32mf2x5_t): Ditto.
11479 (vint32mf2x6_t): Ditto.
11480 (vuint32mf2x6_t): Ditto.
11481 (vint32mf2x7_t): Ditto.
11482 (vuint32mf2x7_t): Ditto.
11483 (vint32mf2x8_t): Ditto.
11484 (vuint32mf2x8_t): Ditto.
11485 (vint32m1x2_t): Ditto.
11486 (vuint32m1x2_t): Ditto.
11487 (vint32m1x3_t): Ditto.
11488 (vuint32m1x3_t): Ditto.
11489 (vint32m1x4_t): Ditto.
11490 (vuint32m1x4_t): Ditto.
11491 (vint32m1x5_t): Ditto.
11492 (vuint32m1x5_t): Ditto.
11493 (vint32m1x6_t): Ditto.
11494 (vuint32m1x6_t): Ditto.
11495 (vint32m1x7_t): Ditto.
11496 (vuint32m1x7_t): Ditto.
11497 (vint32m1x8_t): Ditto.
11498 (vuint32m1x8_t): Ditto.
11499 (vint32m2x2_t): Ditto.
11500 (vuint32m2x2_t): Ditto.
11501 (vint32m2x3_t): Ditto.
11502 (vuint32m2x3_t): Ditto.
11503 (vint32m2x4_t): Ditto.
11504 (vuint32m2x4_t): Ditto.
11505 (vint32m4x2_t): Ditto.
11506 (vuint32m4x2_t): Ditto.
11507 (vint64m1x2_t): Ditto.
11508 (vuint64m1x2_t): Ditto.
11509 (vint64m1x3_t): Ditto.
11510 (vuint64m1x3_t): Ditto.
11511 (vint64m1x4_t): Ditto.
11512 (vuint64m1x4_t): Ditto.
11513 (vint64m1x5_t): Ditto.
11514 (vuint64m1x5_t): Ditto.
11515 (vint64m1x6_t): Ditto.
11516 (vuint64m1x6_t): Ditto.
11517 (vint64m1x7_t): Ditto.
11518 (vuint64m1x7_t): Ditto.
11519 (vint64m1x8_t): Ditto.
11520 (vuint64m1x8_t): Ditto.
11521 (vint64m2x2_t): Ditto.
11522 (vuint64m2x2_t): Ditto.
11523 (vint64m2x3_t): Ditto.
11524 (vuint64m2x3_t): Ditto.
11525 (vint64m2x4_t): Ditto.
11526 (vuint64m2x4_t): Ditto.
11527 (vint64m4x2_t): Ditto.
11528 (vuint64m4x2_t): Ditto.
11529 (vfloat32mf2x2_t): Ditto.
11530 (vfloat32mf2x3_t): Ditto.
11531 (vfloat32mf2x4_t): Ditto.
11532 (vfloat32mf2x5_t): Ditto.
11533 (vfloat32mf2x6_t): Ditto.
11534 (vfloat32mf2x7_t): Ditto.
11535 (vfloat32mf2x8_t): Ditto.
11536 (vfloat32m1x2_t): Ditto.
11537 (vfloat32m1x3_t): Ditto.
11538 (vfloat32m1x4_t): Ditto.
11539 (vfloat32m1x5_t): Ditto.
11540 (vfloat32m1x6_t): Ditto.
11541 (vfloat32m1x7_t): Ditto.
11542 (vfloat32m1x8_t): Ditto.
11543 (vfloat32m2x2_t): Ditto.
11544 (vfloat32m2x3_t): Ditto.
11545 (vfloat32m2x4_t): Ditto.
11546 (vfloat32m4x2_t): Ditto.
11547 (vfloat64m1x2_t): Ditto.
11548 (vfloat64m1x3_t): Ditto.
11549 (vfloat64m1x4_t): Ditto.
11550 (vfloat64m1x5_t): Ditto.
11551 (vfloat64m1x6_t): Ditto.
11552 (vfloat64m1x7_t): Ditto.
11553 (vfloat64m1x8_t): Ditto.
11554 (vfloat64m2x2_t): Ditto.
11555 (vfloat64m2x3_t): Ditto.
11556 (vfloat64m2x4_t): Ditto.
11557 (vfloat64m4x2_t): Ditto.
11558 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
11560 (DEF_RVV_TYPE_INDEX): Ditto.
11561 (rvv_arg_type_info::get_tuple_subpart_type): New function.
11562 (DEF_RVV_TUPLE_TYPE): New macro.
11563 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
11564 Adapt for tuple vget/vset support.
11565 (vint8mf4_t): Ditto.
11566 (vuint8mf4_t): Ditto.
11567 (vint8mf2_t): Ditto.
11568 (vuint8mf2_t): Ditto.
11569 (vint8m1_t): Ditto.
11570 (vuint8m1_t): Ditto.
11571 (vint8m2_t): Ditto.
11572 (vuint8m2_t): Ditto.
11573 (vint8m4_t): Ditto.
11574 (vuint8m4_t): Ditto.
11575 (vint8m8_t): Ditto.
11576 (vuint8m8_t): Ditto.
11577 (vint16mf4_t): Ditto.
11578 (vuint16mf4_t): Ditto.
11579 (vint16mf2_t): Ditto.
11580 (vuint16mf2_t): Ditto.
11581 (vint16m1_t): Ditto.
11582 (vuint16m1_t): Ditto.
11583 (vint16m2_t): Ditto.
11584 (vuint16m2_t): Ditto.
11585 (vint16m4_t): Ditto.
11586 (vuint16m4_t): Ditto.
11587 (vint16m8_t): Ditto.
11588 (vuint16m8_t): Ditto.
11589 (vint32mf2_t): Ditto.
11590 (vuint32mf2_t): Ditto.
11591 (vint32m1_t): Ditto.
11592 (vuint32m1_t): Ditto.
11593 (vint32m2_t): Ditto.
11594 (vuint32m2_t): Ditto.
11595 (vint32m4_t): Ditto.
11596 (vuint32m4_t): Ditto.
11597 (vint32m8_t): Ditto.
11598 (vuint32m8_t): Ditto.
11599 (vint64m1_t): Ditto.
11600 (vuint64m1_t): Ditto.
11601 (vint64m2_t): Ditto.
11602 (vuint64m2_t): Ditto.
11603 (vint64m4_t): Ditto.
11604 (vuint64m4_t): Ditto.
11605 (vint64m8_t): Ditto.
11606 (vuint64m8_t): Ditto.
11607 (vfloat32mf2_t): Ditto.
11608 (vfloat32m1_t): Ditto.
11609 (vfloat32m2_t): Ditto.
11610 (vfloat32m4_t): Ditto.
11611 (vfloat32m8_t): Ditto.
11612 (vfloat64m1_t): Ditto.
11613 (vfloat64m2_t): Ditto.
11614 (vfloat64m4_t): Ditto.
11615 (vfloat64m8_t): Ditto.
11616 (tuple_subpart): Add tuple subpart base type.
11617 * config/riscv/riscv-vector-builtins.h (struct
11618 rvv_arg_type_info): Ditto.
11619 (tuple_type_field): New function.
11621 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11623 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
11624 (RVV_TUPLE_PARTIAL_MODES): Ditto.
11625 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
11628 (get_subpart_mode): Ditto.
11629 (get_tuple_mode): Ditto.
11630 (expand_tuple_move): Ditto.
11631 * config/riscv/riscv-v.cc (ENTRY): New macro.
11632 (TUPLE_ENTRY): Ditto.
11633 (get_nf): New function.
11634 (get_subpart_mode): Ditto.
11635 (get_tuple_mode): Ditto.
11636 (expand_tuple_move): Ditto.
11637 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
11639 (register_tuple_type): New function
11640 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
11642 (vint8mf8x2_t): New macro.
11643 (vuint8mf8x2_t): Ditto.
11644 (vint8mf8x3_t): Ditto.
11645 (vuint8mf8x3_t): Ditto.
11646 (vint8mf8x4_t): Ditto.
11647 (vuint8mf8x4_t): Ditto.
11648 (vint8mf8x5_t): Ditto.
11649 (vuint8mf8x5_t): Ditto.
11650 (vint8mf8x6_t): Ditto.
11651 (vuint8mf8x6_t): Ditto.
11652 (vint8mf8x7_t): Ditto.
11653 (vuint8mf8x7_t): Ditto.
11654 (vint8mf8x8_t): Ditto.
11655 (vuint8mf8x8_t): Ditto.
11656 (vint8mf4x2_t): Ditto.
11657 (vuint8mf4x2_t): Ditto.
11658 (vint8mf4x3_t): Ditto.
11659 (vuint8mf4x3_t): Ditto.
11660 (vint8mf4x4_t): Ditto.
11661 (vuint8mf4x4_t): Ditto.
11662 (vint8mf4x5_t): Ditto.
11663 (vuint8mf4x5_t): Ditto.
11664 (vint8mf4x6_t): Ditto.
11665 (vuint8mf4x6_t): Ditto.
11666 (vint8mf4x7_t): Ditto.
11667 (vuint8mf4x7_t): Ditto.
11668 (vint8mf4x8_t): Ditto.
11669 (vuint8mf4x8_t): Ditto.
11670 (vint8mf2x2_t): Ditto.
11671 (vuint8mf2x2_t): Ditto.
11672 (vint8mf2x3_t): Ditto.
11673 (vuint8mf2x3_t): Ditto.
11674 (vint8mf2x4_t): Ditto.
11675 (vuint8mf2x4_t): Ditto.
11676 (vint8mf2x5_t): Ditto.
11677 (vuint8mf2x5_t): Ditto.
11678 (vint8mf2x6_t): Ditto.
11679 (vuint8mf2x6_t): Ditto.
11680 (vint8mf2x7_t): Ditto.
11681 (vuint8mf2x7_t): Ditto.
11682 (vint8mf2x8_t): Ditto.
11683 (vuint8mf2x8_t): Ditto.
11684 (vint8m1x2_t): Ditto.
11685 (vuint8m1x2_t): Ditto.
11686 (vint8m1x3_t): Ditto.
11687 (vuint8m1x3_t): Ditto.
11688 (vint8m1x4_t): Ditto.
11689 (vuint8m1x4_t): Ditto.
11690 (vint8m1x5_t): Ditto.
11691 (vuint8m1x5_t): Ditto.
11692 (vint8m1x6_t): Ditto.
11693 (vuint8m1x6_t): Ditto.
11694 (vint8m1x7_t): Ditto.
11695 (vuint8m1x7_t): Ditto.
11696 (vint8m1x8_t): Ditto.
11697 (vuint8m1x8_t): Ditto.
11698 (vint8m2x2_t): Ditto.
11699 (vuint8m2x2_t): Ditto.
11700 (vint8m2x3_t): Ditto.
11701 (vuint8m2x3_t): Ditto.
11702 (vint8m2x4_t): Ditto.
11703 (vuint8m2x4_t): Ditto.
11704 (vint8m4x2_t): Ditto.
11705 (vuint8m4x2_t): Ditto.
11706 (vint16mf4x2_t): Ditto.
11707 (vuint16mf4x2_t): Ditto.
11708 (vint16mf4x3_t): Ditto.
11709 (vuint16mf4x3_t): Ditto.
11710 (vint16mf4x4_t): Ditto.
11711 (vuint16mf4x4_t): Ditto.
11712 (vint16mf4x5_t): Ditto.
11713 (vuint16mf4x5_t): Ditto.
11714 (vint16mf4x6_t): Ditto.
11715 (vuint16mf4x6_t): Ditto.
11716 (vint16mf4x7_t): Ditto.
11717 (vuint16mf4x7_t): Ditto.
11718 (vint16mf4x8_t): Ditto.
11719 (vuint16mf4x8_t): Ditto.
11720 (vint16mf2x2_t): Ditto.
11721 (vuint16mf2x2_t): Ditto.
11722 (vint16mf2x3_t): Ditto.
11723 (vuint16mf2x3_t): Ditto.
11724 (vint16mf2x4_t): Ditto.
11725 (vuint16mf2x4_t): Ditto.
11726 (vint16mf2x5_t): Ditto.
11727 (vuint16mf2x5_t): Ditto.
11728 (vint16mf2x6_t): Ditto.
11729 (vuint16mf2x6_t): Ditto.
11730 (vint16mf2x7_t): Ditto.
11731 (vuint16mf2x7_t): Ditto.
11732 (vint16mf2x8_t): Ditto.
11733 (vuint16mf2x8_t): Ditto.
11734 (vint16m1x2_t): Ditto.
11735 (vuint16m1x2_t): Ditto.
11736 (vint16m1x3_t): Ditto.
11737 (vuint16m1x3_t): Ditto.
11738 (vint16m1x4_t): Ditto.
11739 (vuint16m1x4_t): Ditto.
11740 (vint16m1x5_t): Ditto.
11741 (vuint16m1x5_t): Ditto.
11742 (vint16m1x6_t): Ditto.
11743 (vuint16m1x6_t): Ditto.
11744 (vint16m1x7_t): Ditto.
11745 (vuint16m1x7_t): Ditto.
11746 (vint16m1x8_t): Ditto.
11747 (vuint16m1x8_t): Ditto.
11748 (vint16m2x2_t): Ditto.
11749 (vuint16m2x2_t): Ditto.
11750 (vint16m2x3_t): Ditto.
11751 (vuint16m2x3_t): Ditto.
11752 (vint16m2x4_t): Ditto.
11753 (vuint16m2x4_t): Ditto.
11754 (vint16m4x2_t): Ditto.
11755 (vuint16m4x2_t): Ditto.
11756 (vint32mf2x2_t): Ditto.
11757 (vuint32mf2x2_t): Ditto.
11758 (vint32mf2x3_t): Ditto.
11759 (vuint32mf2x3_t): Ditto.
11760 (vint32mf2x4_t): Ditto.
11761 (vuint32mf2x4_t): Ditto.
11762 (vint32mf2x5_t): Ditto.
11763 (vuint32mf2x5_t): Ditto.
11764 (vint32mf2x6_t): Ditto.
11765 (vuint32mf2x6_t): Ditto.
11766 (vint32mf2x7_t): Ditto.
11767 (vuint32mf2x7_t): Ditto.
11768 (vint32mf2x8_t): Ditto.
11769 (vuint32mf2x8_t): Ditto.
11770 (vint32m1x2_t): Ditto.
11771 (vuint32m1x2_t): Ditto.
11772 (vint32m1x3_t): Ditto.
11773 (vuint32m1x3_t): Ditto.
11774 (vint32m1x4_t): Ditto.
11775 (vuint32m1x4_t): Ditto.
11776 (vint32m1x5_t): Ditto.
11777 (vuint32m1x5_t): Ditto.
11778 (vint32m1x6_t): Ditto.
11779 (vuint32m1x6_t): Ditto.
11780 (vint32m1x7_t): Ditto.
11781 (vuint32m1x7_t): Ditto.
11782 (vint32m1x8_t): Ditto.
11783 (vuint32m1x8_t): Ditto.
11784 (vint32m2x2_t): Ditto.
11785 (vuint32m2x2_t): Ditto.
11786 (vint32m2x3_t): Ditto.
11787 (vuint32m2x3_t): Ditto.
11788 (vint32m2x4_t): Ditto.
11789 (vuint32m2x4_t): Ditto.
11790 (vint32m4x2_t): Ditto.
11791 (vuint32m4x2_t): Ditto.
11792 (vint64m1x2_t): Ditto.
11793 (vuint64m1x2_t): Ditto.
11794 (vint64m1x3_t): Ditto.
11795 (vuint64m1x3_t): Ditto.
11796 (vint64m1x4_t): Ditto.
11797 (vuint64m1x4_t): Ditto.
11798 (vint64m1x5_t): Ditto.
11799 (vuint64m1x5_t): Ditto.
11800 (vint64m1x6_t): Ditto.
11801 (vuint64m1x6_t): Ditto.
11802 (vint64m1x7_t): Ditto.
11803 (vuint64m1x7_t): Ditto.
11804 (vint64m1x8_t): Ditto.
11805 (vuint64m1x8_t): Ditto.
11806 (vint64m2x2_t): Ditto.
11807 (vuint64m2x2_t): Ditto.
11808 (vint64m2x3_t): Ditto.
11809 (vuint64m2x3_t): Ditto.
11810 (vint64m2x4_t): Ditto.
11811 (vuint64m2x4_t): Ditto.
11812 (vint64m4x2_t): Ditto.
11813 (vuint64m4x2_t): Ditto.
11814 (vfloat32mf2x2_t): Ditto.
11815 (vfloat32mf2x3_t): Ditto.
11816 (vfloat32mf2x4_t): Ditto.
11817 (vfloat32mf2x5_t): Ditto.
11818 (vfloat32mf2x6_t): Ditto.
11819 (vfloat32mf2x7_t): Ditto.
11820 (vfloat32mf2x8_t): Ditto.
11821 (vfloat32m1x2_t): Ditto.
11822 (vfloat32m1x3_t): Ditto.
11823 (vfloat32m1x4_t): Ditto.
11824 (vfloat32m1x5_t): Ditto.
11825 (vfloat32m1x6_t): Ditto.
11826 (vfloat32m1x7_t): Ditto.
11827 (vfloat32m1x8_t): Ditto.
11828 (vfloat32m2x2_t): Ditto.
11829 (vfloat32m2x3_t): Ditto.
11830 (vfloat32m2x4_t): Ditto.
11831 (vfloat32m4x2_t): Ditto.
11832 (vfloat64m1x2_t): Ditto.
11833 (vfloat64m1x3_t): Ditto.
11834 (vfloat64m1x4_t): Ditto.
11835 (vfloat64m1x5_t): Ditto.
11836 (vfloat64m1x6_t): Ditto.
11837 (vfloat64m1x7_t): Ditto.
11838 (vfloat64m1x8_t): Ditto.
11839 (vfloat64m2x2_t): Ditto.
11840 (vfloat64m2x3_t): Ditto.
11841 (vfloat64m2x4_t): Ditto.
11842 (vfloat64m4x2_t): Ditto.
11843 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
11845 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
11846 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
11848 (TUPLE_ENTRY): Ditto.
11849 (riscv_v_ext_mode_p): New function.
11850 (riscv_v_adjust_nunits): Add tuple mode adjustment.
11851 (riscv_classify_address): Ditto.
11852 (riscv_binary_cost): Ditto.
11853 (riscv_rtx_costs): Ditto.
11854 (riscv_secondary_memory_needed): Ditto.
11855 (riscv_hard_regno_nregs): Ditto.
11856 (riscv_hard_regno_mode_ok): Ditto.
11857 (riscv_vector_mode_supported_p): Ditto.
11858 (riscv_regmode_natural_size): Ditto.
11859 (riscv_array_mode): New function.
11860 (TARGET_ARRAY_MODE): New target hook.
11861 * config/riscv/riscv.md: Add tuple modes.
11862 * config/riscv/vector-iterators.md: Ditto.
11863 * config/riscv/vector.md (mov<mode>): Add tuple modes data
11865 (*mov<VT:mode>_<P:mode>): Ditto.
11867 2023-05-03 Richard Biener <rguenther@suse.de>
11869 * cse.cc (cse_insn): Track an equivalence to the destination
11870 separately and delay using src_related for it.
11872 2023-05-03 Richard Biener <rguenther@suse.de>
11874 * cse.cc (HASH): Turn into inline function and mix
11875 in another HASH_SHIFT bits.
11876 (SAFE_HASH): Likewise.
11878 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11881 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
11882 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
11884 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11887 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
11888 (add<mode>3<vczle><vczbe>): ... This.
11889 (sub<mode>3): Rename to...
11890 (sub<mode>3<vczle><vczbe>): ... This.
11891 (mul<mode>3): Rename to...
11892 (mul<mode>3<vczle><vczbe>): ... This.
11893 (*div<mode>3): Rename to...
11894 (*div<mode>3<vczle><vczbe>): ... This.
11895 (neg<mode>2): Rename to...
11896 (neg<mode>2<vczle><vczbe>): ... This.
11897 (abs<mode>2): Rename to...
11898 (abs<mode>2<vczle><vczbe>): ... This.
11899 (<frint_pattern><mode>2): Rename to...
11900 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
11901 (<fmaxmin><mode>3): Rename to...
11902 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
11903 (*sqrt<mode>2): Rename to...
11904 (*sqrt<mode>2<vczle><vczbe>): ... This.
11906 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
11908 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
11910 2023-05-03 Martin Liska <mliska@suse.cz>
11912 PR tree-optimization/109693
11913 * value-range-storage.cc (vrange_allocator::vrange_allocator):
11914 Remove unused field.
11915 * value-range-storage.h: Likewise.
11917 2023-05-02 Andrew Pinski <apinski@marvell.com>
11919 * tree-ssa-phiopt.cc (move_stmt): New function.
11920 (match_simplify_replacement): Use move_stmt instead
11921 of the inlined version.
11923 2023-05-02 Andrew Pinski <apinski@marvell.com>
11925 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
11928 2023-05-02 Andrew Pinski <apinski@marvell.com>
11930 PR tree-optimization/109702
11931 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
11932 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
11934 2023-05-02 Andrew Pinski <apinski@marvell.com>
11937 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
11938 insn_and_split pattern.
11940 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11942 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
11945 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11947 * config/riscv/sync.md (mem_thread_fence_1): Change fence
11948 depending on the given memory model.
11950 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11952 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
11953 riscv_union_memmodels function to sync.md.
11954 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
11955 get the union of two memmodels in sync.md.
11956 (riscv_print_operand): Add %I and %J flags that output the
11957 optimal LR/SC flag bits for a given memory model.
11958 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
11959 bits on SC op and replace with optimized %I, %J flags.
11961 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11963 * config/riscv/riscv.cc
11964 (riscv_memmodel_needs_amo_release): Change function name.
11965 (riscv_print_operand): Remove unneeded %F case.
11966 * config/riscv/sync.md: Remove unneeded fences.
11968 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11971 * config/riscv/sync.md (atomic_store<mode>): Use simple store
11972 instruction in combination with fence(s).
11974 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11976 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
11977 of %A to include release bits.
11979 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11981 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
11982 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
11985 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11987 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
11988 sequentially consistent LR.aqrl/SC.rl pairs.
11990 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11992 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
11993 sanitize memmodel input with memmodel_base.
11995 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
11996 Pan Li <pan2.li@intel.com>
11999 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
12001 2023-05-02 Romain Naour <romain.naour@gmail.com>
12003 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
12006 2023-05-02 Martin Liska <mliska@suse.cz>
12008 * doc/invoke.texi: Update documentation based on param.opt file.
12010 2023-05-02 Richard Biener <rguenther@suse.de>
12012 PR tree-optimization/109672
12013 * tree-vect-stmts.cc (vectorizable_operation): For plus,
12014 minus and negate always check the vector mode is word mode.
12016 2023-05-01 Andrew Pinski <apinski@marvell.com>
12018 * tree-ssa-phiopt.cc: Update comment about
12019 how the transformation are implemented.
12021 2023-05-01 Jeff Law <jlaw@ventanamicro>
12023 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
12025 2023-05-01 Jeff Law <jlaw@ventanamicro>
12027 * config/cris/cris.cc (TARGET_LRA_P): Remove.
12028 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
12029 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
12030 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
12031 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
12032 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
12034 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
12036 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
12037 * print-tree.cc (print_decl_identifier): Implement it.
12038 * toplev.cc (output_stack_usage_1): Use it.
12040 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12042 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
12045 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12047 * value-range.h (irange::set_nonzero): Inline.
12049 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12051 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
12053 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
12054 invalid_range, as it is an inverse range.
12055 * tree-vrp.cc (find_case_label_range): Avoid trees.
12056 * value-range.cc (irange::irange_set): Delete.
12057 (irange::irange_set_1bit_anti_range): Delete.
12058 (irange::irange_set_anti_range): Delete.
12059 (irange::set): Cleanup.
12060 * value-range.h (class irange): Remove irange_set,
12061 irange_set_anti_range, irange_set_1bit_anti_range.
12062 (irange::set_undefined): Remove set to m_type.
12064 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12066 * range-op.cc (update_known_bitmask): Adjust for irange containing
12067 wide_ints internally.
12068 * tree-ssanames.cc (set_nonzero_bits): Same.
12069 * tree-ssanames.h (set_nonzero_bits): Same.
12070 * value-range-storage.cc (irange_storage::set_irange): Same.
12071 (irange_storage::get_irange): Same.
12072 * value-range.cc (irange::operator=): Same.
12073 (irange::irange_set): Same.
12074 (irange::irange_set_1bit_anti_range): Same.
12075 (irange::irange_set_anti_range): Same.
12076 (irange::set): Same.
12077 (irange::verify_range): Same.
12078 (irange::contains_p): Same.
12079 (irange::irange_single_pair_union): Same.
12080 (irange::union_): Same.
12081 (irange::irange_contains_p): Same.
12082 (irange::intersect): Same.
12083 (irange::invert): Same.
12084 (irange::set_range_from_nonzero_bits): Same.
12085 (irange::set_nonzero_bits): Same.
12086 (mask_to_wi): Same.
12087 (irange::intersect_nonzero_bits): Same.
12088 (irange::union_nonzero_bits): Same.
12091 (tree_range): Same.
12092 (range_tests_strict_enum): Same.
12093 (range_tests_misc): Same.
12094 (range_tests_nonzero_bits): Same.
12095 * value-range.h (irange::type): Same.
12096 (irange::varying_compatible_p): Same.
12097 (irange::irange): Same.
12098 (int_range::int_range): Same.
12099 (irange::set_undefined): Same.
12100 (irange::set_varying): Same.
12101 (irange::lower_bound): Same.
12102 (irange::upper_bound): Same.
12104 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12106 * gimple-range-fold.cc (tree_lower_bound): Delete.
12107 (tree_upper_bound): Delete.
12108 (vrp_val_max): Delete.
12109 (vrp_val_min): Delete.
12110 (fold_using_range::range_of_ssa_name_with_loop_info): Call
12111 range_of_var_in_loop.
12112 * vr-values.cc (valid_value_p): Delete.
12113 (fix_overflow): Delete.
12114 (get_scev_info): New.
12115 (bounds_of_var_in_loop): Refactor into...
12116 (induction_variable_may_overflow_p): ...this,
12117 (range_from_loop_direction): ...and this,
12118 (range_of_var_in_loop): ...and this.
12119 * vr-values.h (bounds_of_var_in_loop): Delete.
12120 (range_of_var_in_loop): New.
12122 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12124 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
12126 (vrp_val_max): New.
12127 (vrp_val_min): New.
12128 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
12129 * range-op.cc (max_limit): Same.
12131 (plus_minus_ranges): Same.
12132 (operator_rshift::op1_range): Same.
12133 (operator_cast::inside_domain_p): Same.
12134 * value-range.cc (vrp_val_is_max): Delete.
12135 (vrp_val_is_min): Delete.
12136 (range_tests_misc): Use irange_val_*.
12137 * value-range.h (vrp_val_is_min): Delete.
12138 (vrp_val_is_max): Delete.
12139 (vrp_val_max): Delete.
12140 (irange_val_min): New.
12141 (vrp_val_min): Delete.
12142 (irange_val_max): New.
12143 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
12145 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12147 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
12148 * gimple-fold.cc (size_must_be_zero_p): Same.
12149 * gimple-loop-versioning.cc
12150 (loop_versioning::prune_loop_conditions): Same.
12151 * gimple-range-edge.cc (gcond_edge_range): Same.
12152 (gimple_outgoing_range::calc_switch_ranges): Same.
12153 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
12154 (adjust_realpart_expr): Same.
12155 (fold_using_range::range_of_address): Same.
12156 (fold_using_range::relation_fold_and_or): Same.
12157 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
12158 (range_is_either_true_or_false): Same.
12159 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
12160 (cfn_clz::fold_range): Same.
12161 (cfn_ctz::fold_range): Same.
12162 * gimple-range-tests.cc (class test_expr_eval): Same.
12163 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
12164 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
12165 (propagate_vr_across_jump_function): Same.
12166 (decide_whether_version_node): Same.
12167 * ipa-prop.cc (ipa_get_value_range): Same.
12168 * ipa-prop.h (ipa_range_set_and_normalize): Same.
12169 * range-op.cc (get_shift_range): Same.
12170 (value_range_from_overflowed_bounds): Same.
12171 (value_range_with_overflow): Same.
12172 (create_possibly_reversed_range): Same.
12173 (equal_op1_op2_relation): Same.
12174 (not_equal_op1_op2_relation): Same.
12175 (lt_op1_op2_relation): Same.
12176 (le_op1_op2_relation): Same.
12177 (gt_op1_op2_relation): Same.
12178 (ge_op1_op2_relation): Same.
12179 (operator_mult::op1_range): Same.
12180 (operator_exact_divide::op1_range): Same.
12181 (operator_lshift::op1_range): Same.
12182 (operator_rshift::op1_range): Same.
12183 (operator_cast::op1_range): Same.
12184 (operator_logical_and::fold_range): Same.
12185 (set_nonzero_range_from_mask): Same.
12186 (operator_bitwise_or::op1_range): Same.
12187 (operator_bitwise_xor::op1_range): Same.
12188 (operator_addr_expr::fold_range): Same.
12189 (pointer_plus_operator::wi_fold): Same.
12190 (pointer_or_operator::op1_range): Same.
12197 (range_op_cast_tests): Same.
12198 (range_op_lshift_tests): Same.
12199 (range_op_rshift_tests): Same.
12200 (range_op_bitwise_and_tests): Same.
12201 (range_relational_tests): Same.
12202 * range.cc (range_zero): Same.
12203 (range_nonzero): Same.
12204 * range.h (range_true): Same.
12205 (range_false): Same.
12206 (range_true_and_false): Same.
12207 * tree-data-ref.cc (split_constant_offset_1): Same.
12208 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
12209 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
12210 (find_unswitching_predicates_for_bb): Same.
12211 * tree-ssa-phiopt.cc (value_replacement): Same.
12212 * tree-ssa-threadbackward.cc
12213 (back_threader::find_taken_edge_cond): Same.
12214 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
12215 * tree-vrp.cc (find_case_label_range): Same.
12216 * value-query.cc (range_query::get_tree_range): Same.
12217 * value-range.cc (irange::set_nonnegative): Same.
12218 (frange::contains_p): Same.
12219 (frange::singleton_p): Same.
12220 (frange::internal_singleton_p): Same.
12221 (irange::irange_set): Same.
12222 (irange::irange_set_1bit_anti_range): Same.
12223 (irange::irange_set_anti_range): Same.
12224 (irange::set): Same.
12225 (irange::operator==): Same.
12226 (irange::singleton_p): Same.
12227 (irange::contains_p): Same.
12228 (irange::set_range_from_nonzero_bits): Same.
12229 (DEFINE_INT_RANGE_INSTANCE): Same.
12239 (range_uint128): New.
12240 (range_uchar): New.
12242 (build_range3): Convert to irange wide_int API.
12243 (range_tests_irange3): Same.
12244 (range_tests_int_range_max): Same.
12245 (range_tests_strict_enum): Same.
12246 (range_tests_misc): Same.
12247 (range_tests_nonzero_bits): Same.
12248 (range_tests_nan): Same.
12249 (range_tests_signed_zeros): Same.
12250 * value-range.h (Value_Range::Value_Range): Same.
12251 (irange::set): Same.
12252 (irange::nonzero_p): Same.
12253 (irange::contains_p): Same.
12254 (range_includes_zero_p): Same.
12255 (irange::set_nonzero): Same.
12256 (irange::set_zero): Same.
12257 (contains_zero_p): Same.
12258 (frange::contains_p): Same.
12260 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
12261 (bounds_of_var_in_loop): Same.
12262 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12264 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12266 * value-range.cc (irange::irange_union): Rename to...
12267 (irange::union_): ...this.
12268 (irange::irange_intersect): Rename to...
12269 (irange::intersect): ...this.
12270 * value-range.h (irange::union_): Delete.
12271 (irange::intersect): Delete.
12273 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12275 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
12277 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12279 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
12281 (compare_ranges): Delete.
12282 (compare_range_with_value): Delete.
12283 (bounds_of_var_in_loop): Tidy up by using ranger API.
12284 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
12285 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
12286 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
12287 strict_overflow_p and only_ranges.
12288 (simplify_using_ranges::legacy_fold_cond): Adjust call to
12289 legacy_fold_cond_overflow.
12290 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
12292 (range_fits_type_p): Rename value_range to irange.
12293 * vr-values.h (range_fits_type_p): Adjust prototype.
12295 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12297 * value-range.cc (irange::irange_set_anti_range): Remove uses of
12298 tree_lower_bound and tree_upper_bound.
12299 (irange::verify_range): Same.
12300 (irange::operator==): Same.
12301 (irange::singleton_p): Same.
12302 * value-range.h (irange::tree_lower_bound): Delete.
12303 (irange::tree_upper_bound): Delete.
12304 (irange::lower_bound): Delete.
12305 (irange::upper_bound): Delete.
12306 (irange::zero_p): Remove uses of tree_lower_bound and
12309 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12311 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
12313 (determine_value_range): Same.
12314 (record_nonwrapping_iv): Same.
12315 (infer_loop_bounds_from_signedness): Same.
12316 (scev_var_range_cant_overflow): Same.
12317 * tree-vrp.cc (operand_less_p): Delete.
12318 * tree-vrp.h (operand_less_p): Delete.
12319 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
12320 (irange::value_inside_range): Delete.
12321 * value-range.h (vrange::kind): Delete.
12322 (irange::num_pairs): Remove check of m_kind.
12323 (irange::min): Delete.
12324 (irange::max): Delete.
12326 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12328 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
12329 for vrange_storage.
12330 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
12331 (sbr_vector::grow): Same.
12332 (sbr_vector::set_bb_range): Same.
12333 (sbr_vector::get_bb_range): Same.
12334 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
12335 (sbr_sparse_bitmap::set_bb_range): Same.
12336 (sbr_sparse_bitmap::get_bb_range): Same.
12337 (block_range_cache::block_range_cache): Same.
12338 (ssa_global_cache::ssa_global_cache): Same.
12339 (ssa_global_cache::get_global_range): Same.
12340 (ssa_global_cache::set_global_range): Same.
12341 * gimple-range-cache.h: Same.
12342 * gimple-range-edge.cc
12343 (gimple_outgoing_range::gimple_outgoing_range): Same.
12344 (gimple_outgoing_range::switch_edge_range): Same.
12345 (gimple_outgoing_range::calc_switch_ranges): Same.
12346 * gimple-range-edge.h: Same.
12347 * gimple-range-infer.cc
12348 (infer_range_manager::infer_range_manager): Same.
12349 (infer_range_manager::get_nonzero): Same.
12350 (infer_range_manager::maybe_adjust_range): Same.
12351 (infer_range_manager::add_range): Same.
12352 * gimple-range-infer.h: Rename obstack_vrange_allocator to
12354 * tree-core.h (struct irange_storage_slot): Remove.
12355 (struct tree_ssa_name): Remove irange_info and frange_info. Make
12356 range_info a pointer to vrange_storage.
12357 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
12358 (range_info_alloc): Same.
12359 (range_info_free): Same.
12360 (range_info_get_range): Same.
12361 (range_info_set_range): Same.
12362 (get_nonzero_bits): Same.
12363 * value-query.cc (get_ssa_name_range_info): Same.
12364 * value-range-storage.cc (class vrange_internal_alloc): New.
12365 (class vrange_obstack_alloc): New.
12366 (class vrange_ggc_alloc): New.
12367 (vrange_allocator::vrange_allocator): New.
12368 (vrange_allocator::~vrange_allocator): New.
12369 (vrange_storage::alloc_slot): New.
12370 (vrange_allocator::alloc): New.
12371 (vrange_allocator::free): New.
12372 (vrange_allocator::clone): New.
12373 (vrange_allocator::clone_varying): New.
12374 (vrange_allocator::clone_undefined): New.
12375 (vrange_storage::alloc): New.
12376 (vrange_storage::set_vrange): Remove slot argument.
12377 (vrange_storage::get_vrange): Same.
12378 (vrange_storage::fits_p): Same.
12379 (vrange_storage::equal_p): New.
12380 (irange_storage::write_lengths_address): New.
12381 (irange_storage::lengths_address): New.
12382 (irange_storage_slot::alloc_slot): Remove.
12383 (irange_storage::alloc): New.
12384 (irange_storage_slot::irange_storage_slot): Remove.
12385 (irange_storage::irange_storage): New.
12386 (write_wide_int): New.
12387 (irange_storage_slot::set_irange): Remove.
12388 (irange_storage::set_irange): New.
12389 (read_wide_int): New.
12390 (irange_storage_slot::get_irange): Remove.
12391 (irange_storage::get_irange): New.
12392 (irange_storage_slot::size): Remove.
12393 (irange_storage::equal_p): New.
12394 (irange_storage_slot::num_wide_ints_needed): Remove.
12395 (irange_storage::size): New.
12396 (irange_storage_slot::fits_p): Remove.
12397 (irange_storage::fits_p): New.
12398 (irange_storage_slot::dump): Remove.
12399 (irange_storage::dump): New.
12400 (frange_storage_slot::alloc_slot): Remove.
12401 (frange_storage::alloc): New.
12402 (frange_storage_slot::set_frange): Remove.
12403 (frange_storage::set_frange): New.
12404 (frange_storage_slot::get_frange): Remove.
12405 (frange_storage::get_frange): New.
12406 (frange_storage_slot::fits_p): Remove.
12407 (frange_storage::equal_p): New.
12408 (frange_storage::fits_p): New.
12409 (ggc_vrange_allocator): New.
12410 (ggc_alloc_vrange_storage): New.
12411 * value-range-storage.h (class vrange_storage): Rewrite.
12412 (class irange_storage): Rewrite.
12413 (class frange_storage): Rewrite.
12414 (class obstack_vrange_allocator): Remove.
12415 (class ggc_vrange_allocator): Remove.
12416 (vrange_allocator::alloc_vrange): Remove.
12417 (vrange_allocator::alloc_irange): Remove.
12418 (vrange_allocator::alloc_frange): Remove.
12419 (ggc_alloc_vrange_storage): New.
12420 * value-range.h (class irange): Rename vrange_allocator to
12422 (class frange): Same.
12424 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
12426 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
12427 inc to avoid clobbering the carry flag.
12429 2023-04-30 Andrew Pinski <apinski@marvell.com>
12431 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
12432 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
12434 2023-04-30 Andrew Pinski <apinski@marvell.com>
12436 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12437 Allow some builtin/internal function calls which
12438 are known not to trap/throw.
12439 (phiopt_worker::match_simplify_replacement):
12440 Use name instead of getting the lhs again.
12442 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
12444 * configure: Regenerate.
12445 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
12447 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
12449 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
12450 emit_insn_if_valid_for_reload.
12451 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
12452 to be recognized, also try emitting a parallel that clobbers
12453 TARGET_FLAGS_REGNUM, as applicable.
12455 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
12457 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
12459 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
12460 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
12462 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
12464 * config/stormy16/stormy16.md (any_lshift): New code iterator.
12465 (any_or_plus): Likewise.
12466 (any_rotate): Likewise.
12467 (*<any_lshift>_and_internal): New define_insn_and_split to
12468 recognize a logical shift followed by an AND, and split it
12469 again after reload.
12470 (*swpn): New define_insn matching xstormy16's swpn.
12471 (*swpn_zext): New define_insn recognizing swpn followed by
12472 zero_extendqihi2, i.e. with the high byte set to zero.
12473 (*swpn_sext): Likewise, for swpn followed by cbw.
12474 (*swpn_sext_2): Likewise, for an alternate RTL form.
12475 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
12476 sequence is split in the correct place to recognize the *swpn_zext
12477 followed by any_or_plus (ior, xor or plus) instruction.
12479 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
12482 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
12483 (lm32-*-uclinux*): Likewise.
12485 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
12487 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
12488 for riscv_use_save_libcall.
12489 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
12490 (riscv_compute_frame_info): restructure to decouple stack allocation
12491 for rv32e w/o save-restore.
12493 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
12495 * doc/install.texi: Fix documentation typo
12497 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
12499 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
12500 (u): Add div/udiv cases.
12501 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
12502 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
12504 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
12505 (thead_c906_tune_info): Likewise.
12506 (optimize_size_tune_info): Likewise.
12507 (riscv_use_divmod_expander): New function.
12508 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
12510 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
12512 * config/riscv/bitmanip.md: Added clmulr instruction.
12513 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
12514 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
12516 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
12517 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
12518 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
12519 functions to riscv-cmo.def.
12520 * config/riscv/generic.md: Add clmul to list of instructions
12521 using the generic_imul reservation.
12523 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12525 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
12527 2023-04-28 Andrew Pinski <apinski@marvell.com>
12529 PR tree-optimization/100958
12530 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
12531 (pass_phiopt::execute): Don't call two_value_replacement.
12532 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
12533 handle what two_value_replacement did.
12535 2023-04-28 Andrew Pinski <apinski@marvell.com>
12537 * match.pd: Add patterns for
12538 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
12540 2023-04-28 Andrew Pinski <apinski@marvell.com>
12542 * match.pd: Factor out the deciding the min/max from
12543 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
12545 * fold-const.cc (minmax_from_comparison): this new function.
12546 * fold-const.h (minmax_from_comparison): New prototype.
12548 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
12550 PR rtl-optimization/109476
12551 * lower-subreg.cc: Include explow.h for force_reg.
12552 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
12553 If decomposing a suitable LSHIFTRT and we're not splitting
12554 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
12555 instead of setting a high part SUBREG to zero, which helps combine.
12556 (decompose_multiword_subregs): Update call to resolve_shift_zext.
12558 2023-04-28 Richard Biener <rguenther@suse.de>
12560 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
12562 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
12563 gather-scatter info and cost emulated scatters accordingly.
12564 (get_load_store_type): Support emulated scatters.
12565 (vectorizable_store): Likewise. Emulate them by extracting
12566 scalar offsets and data, doing scalar stores.
12568 2023-04-28 Richard Biener <rguenther@suse.de>
12570 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
12571 Tame down element extracts and scalar loads for gather/scatter
12572 similar to elementwise strided accesses.
12574 2023-04-28 Pan Li <pan2.li@intel.com>
12575 kito-cheng <kito.cheng@sifive.com>
12577 * config/riscv/vector.md: Add new define split to perform
12578 the simplification.
12580 2023-04-28 Richard Biener <rguenther@suse.de>
12583 * ipa-param-manipulation.cc
12584 (ipa_param_body_adjustments::modify_expression): Allow
12585 conversion of a register to a non-register type. Elide
12586 conversions inside BIT_FIELD_REFs.
12588 2023-04-28 Richard Biener <rguenther@suse.de>
12590 PR tree-optimization/109644
12591 * tree-cfg.cc (verify_types_in_gimple_reference): Check
12592 register constraints on the outermost VIEW_CONVERT_EXPR
12593 only. Do not allow register or invariant bases on
12594 multi-level or possibly variable index handled components.
12596 2023-04-28 Richard Biener <rguenther@suse.de>
12598 * gimplify.cc (gimplify_compound_lval): When there's a
12599 non-register type produced by one of the handled component
12600 operations make sure we get a non-register base.
12602 2023-04-28 Richard Biener <rguenther@suse.de>
12604 PR tree-optimization/108752
12605 * tree-vect-generic.cc (build_replicated_const): Rename
12606 to build_replicated_int_cst and move to tree.{h,cc}.
12607 (do_plus_minus): Adjust.
12608 (do_negate): Likewise.
12609 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
12610 arithmetic vector operations in lowered form.
12611 * tree.h (build_replicated_int_cst): Declare.
12612 * tree.cc (build_replicated_int_cst): Moved from
12613 tree-vect-generic.cc build_replicated_const.
12615 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12618 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
12619 (aarch64_rbit<mode><vczle><vczbe>): ... This.
12620 (neg<mode>2): Rename to...
12621 (neg<mode>2<vczle><vczbe>): ... This.
12622 (abs<mode>2): Rename to...
12623 (abs<mode>2<vczle><vczbe>): ... This.
12624 (aarch64_abs<mode>): Rename to...
12625 (aarch64_abs<mode><vczle><vczbe>): ... This.
12626 (one_cmpl<mode>2): Rename to...
12627 (one_cmpl<mode>2<vczle><vczbe>): ... This.
12628 (clrsb<mode>2): Rename to...
12629 (clrsb<mode>2<vczle><vczbe>): ... This.
12630 (clz<mode>2): Rename to...
12631 (clz<mode>2<vczle><vczbe>): ... This.
12632 (popcount<mode>2): Rename to...
12633 (popcount<mode>2<vczle><vczbe>): ... This.
12635 2023-04-28 Jakub Jelinek <jakub@redhat.com>
12637 * gimple-range-op.cc (class cfn_sqrt): New type.
12638 (op_cfn_sqrt): New variable.
12639 (gimple_range_op_handler::maybe_builtin_call): Handle
12640 CASE_CFN_SQRT{,_FN}.
12642 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
12643 Jakub Jelinek <jakub@redhat.com>
12645 * value-range.h (frange_nextafter): Declare.
12646 * gimple-range-op.cc (class cfn_sincos): New.
12647 (op_cfn_sin, op_cfn_cos): New variables.
12648 (gimple_range_op_handler::maybe_builtin_call): Handle
12649 CASE_CFN_{SIN,COS}{,_FN}.
12651 2023-04-28 Jakub Jelinek <jakub@redhat.com>
12653 * target.def (libm_function_max_error): New target hook.
12654 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
12655 * doc/tm.texi: Regenerated.
12656 * targhooks.h (default_libm_function_max_error,
12657 glibc_linux_libm_function_max_error): Declare.
12658 * targhooks.cc: Include case-cfn-macros.h.
12659 (default_libm_function_max_error,
12660 glibc_linux_libm_function_max_error): New functions.
12661 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12662 * config/linux-protos.h (linux_libm_function_max_error): Declare.
12663 * config/linux.cc: Include target.h and targhooks.h.
12664 (linux_libm_function_max_error): New function.
12665 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
12666 (arc_libm_function_max_error): New function.
12667 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12668 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
12669 (ix86_libm_function_max_error): New function.
12670 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12671 * config/rs6000/rs6000-protos.h
12672 (rs6000_linux_libm_function_max_error): Declare.
12673 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
12674 and case-cfn-macros.h.
12675 (rs6000_linux_libm_function_max_error): New function.
12676 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12677 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12678 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
12679 (or1k_libm_function_max_error): New function.
12680 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12682 2023-04-28 Alexandre Oliva <oliva@adacore.com>
12684 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
12685 Move detach value calls...
12686 (pass_harden_conditional_branches::execute): ... here.
12687 (pass_harden_compares::execute): Detach values before
12690 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
12692 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
12693 (cml<addsub_as><mode>4): Likewise.
12694 (vec_addsub<mode>3): Likewise.
12695 (cadd<rot><mode>3): Likewise.
12696 (vec_fmaddsub<mode>4): Likewise.
12697 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
12699 2023-04-27 Andrew Pinski <apinski@marvell.com>
12701 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
12702 up to 2 min/max expressions in the sequence/match code.
12704 2023-04-27 Andrew Pinski <apinski@marvell.com>
12706 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
12708 * tree-eh.cc (operation_could_trap_helper_p): Treate
12709 MIN_EXPR/MAX_EXPR similar as other comparisons.
12711 2023-04-27 Andrew Pinski <apinski@marvell.com>
12713 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
12715 (cond_if_else_store_replacement): Likewise.
12716 (get_non_trapping): Likewise.
12717 (store_elim_worker): Move into ...
12718 (pass_cselim::execute): This.
12720 2023-04-27 Andrew Pinski <apinski@marvell.com>
12722 * tree-ssa-phiopt.cc (two_value_replacement): Remove
12724 (match_simplify_replacement): Likewise.
12725 (factor_out_conditional_conversion): Likewise.
12726 (value_replacement): Likewise.
12727 (minmax_replacement): Likewise.
12728 (spaceship_replacement): Likewise.
12729 (cond_removal_in_builtin_zero_pattern): Likewise.
12730 (hoist_adjacent_loads): Likewise.
12731 (tree_ssa_phiopt_worker): Move into ...
12732 (pass_phiopt::execute): this.
12734 2023-04-27 Andrew Pinski <apinski@marvell.com>
12736 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
12737 do_store_elim argument and split that part out to ...
12738 (store_elim_worker): This new function.
12739 (pass_cselim::execute): Call store_elim_worker.
12740 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
12742 2023-04-27 Jan Hubicka <jh@suse.cz>
12744 * cfgloopmanip.h (unloop_loops): Export.
12745 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
12746 that no longer loop.
12747 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
12748 vectors of loops to unloop.
12749 (canonicalize_induction_variables): Free vectors here.
12750 (tree_unroll_loops_completely): Free vectors here.
12752 2023-04-27 Richard Biener <rguenther@suse.de>
12754 PR tree-optimization/109170
12755 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
12756 Handle __builtin_expect and similar via cfn_pass_through_arg1
12757 and inspecting the calls fnspec.
12758 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
12759 and BUILT_IN_EXPECT_WITH_PROBABILITY.
12761 2023-04-27 Alexandre Oliva <oliva@adacore.com>
12763 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
12765 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
12767 PR tree-optimization/109639
12768 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
12769 (propagate_vr_across_jump_function): Same.
12770 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
12771 * ipa-prop.h (ipa_range_set_and_normalize): New.
12772 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
12774 2023-04-27 Richard Biener <rguenther@suse.de>
12776 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
12777 create a CTOR operand in the result when simplifying GIMPLE.
12779 2023-04-27 Richard Biener <rguenther@suse.de>
12781 * gimplify.cc (gimplify_compound_lval): When the base
12782 gimplified to a register make sure to split up chains
12785 2023-04-27 Richard Biener <rguenther@suse.de>
12788 * ipa-param-manipulation.h
12789 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
12791 * ipa-param-manipulation.cc
12792 (ipa_param_body_adjustments::modify_expression): Likewise.
12793 When we need a conversion and the replacement is a register
12794 split the conversion out.
12795 (ipa_param_body_adjustments::modify_assignment): Pass
12796 extra_stmts to RHS modify_expression.
12798 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
12800 * doc/extend.texi (Zero Length): Describe example.
12802 2023-04-27 Richard Biener <rguenther@suse.de>
12804 PR tree-optimization/109594
12805 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
12806 what we rewrite to a register based on the above.
12808 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
12810 * config/riscv/riscv.cc: Fix whitespace.
12811 * config/riscv/sync.md: Fix whitespace.
12813 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
12815 PR tree-optimization/108697
12816 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
12817 not clear the vector on an out of range query.
12818 (ssa_cache::dump): Use dump_range_query instead of get_range.
12819 (ssa_cache::dump_range_query): New.
12820 (ssa_lazy_cache::dump_range_query): New.
12821 (ssa_lazy_cache::set_range): New.
12822 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
12823 (class ssa_lazy_cache): New.
12824 (ssa_lazy_cache::ssa_lazy_cache): New.
12825 (ssa_lazy_cache::~ssa_lazy_cache): New.
12826 (ssa_lazy_cache::get_range): New.
12827 (ssa_lazy_cache::clear_range): New.
12828 (ssa_lazy_cache::clear): New.
12829 (ssa_lazy_cache::dump): New.
12830 * gimple-range-path.cc (path_range_query::path_range_query): Do
12831 not allocate a ssa_cache object nor has_cache bitmap.
12832 (path_range_query::~path_range_query): Do not free objects.
12833 (path_range_query::clear_cache): Remove.
12834 (path_range_query::get_cache): Adjust.
12835 (path_range_query::set_cache): Remove.
12836 (path_range_query::dump): Don't call through a pointer.
12837 (path_range_query::internal_range_of_expr): Set cache directly.
12838 (path_range_query::reset_path): Clear cache directly.
12839 (path_range_query::ssa_range_in_phi): Fold with globals only.
12840 (path_range_query::compute_ranges_in_phis): Simply set range.
12841 (path_range_query::compute_ranges_in_block): Call cache directly.
12842 * gimple-range-path.h (class path_range_query): Replace bitmap
12843 and cache pointer with lazy cache object.
12844 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
12846 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
12848 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
12849 (ssa_cache::~ssa_cache): Rename.
12850 (ssa_cache::has_range): New.
12851 (ssa_cache::get_range): Rename.
12852 (ssa_cache::set_range): Rename.
12853 (ssa_cache::clear_range): Rename.
12854 (ssa_cache::clear): Rename.
12855 (ssa_cache::dump): Rename and use get_range.
12856 (ranger_cache::get_global_range): Use get_range and set_range.
12857 (ranger_cache::range_of_def): Use get_range.
12858 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
12859 (class ranger_cache): Use ssa_cache.
12860 * gimple-range-path.cc (path_range_query::path_range_query): Use
12862 (path_range_query::get_cache): Use get_range.
12863 (path_range_query::set_cache): Use set_range.
12864 * gimple-range-path.h (class path_range_query): Use ssa_cache.
12865 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
12866 (assume_query::range_of_expr): Use get_range.
12867 (assume_query::assume_query): Use set_range.
12868 (assume_query::calculate_op): Use get_range and set_range.
12869 * gimple-range.h (class assume_query): Use ssa_cache.
12871 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
12873 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
12874 and local to optionally zero memory.
12875 (br_vector::grow): Only zero memory if flag is set.
12876 (class sbr_lazy_vector): New.
12877 (sbr_lazy_vector::sbr_lazy_vector): New.
12878 (sbr_lazy_vector::set_bb_range): New.
12879 (sbr_lazy_vector::get_bb_range): New.
12880 (sbr_lazy_vector::bb_range_p): New.
12881 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
12882 * gimple-range-gori.cc (gori_map::calculate_gori): Use
12883 param_vrp_switch_limit.
12884 (gori_compute::gori_compute): Use param_vrp_switch_limit.
12885 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
12886 (vrp_switch_limit): Rename from evrp_switch_limit.
12887 (vrp_vector_threshold): New.
12889 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
12891 * value-relation.cc (dom_oracle::query_relation): Check early for lack
12893 * value-relation.h (equiv_oracle::has_equiv_p): New.
12895 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
12897 PR tree-optimization/109417
12898 * gimple-range-gori.cc (range_def_chain::register_dependency):
12899 Save the ssa version number, not the pointer.
12900 (gori_compute::may_recompute_p): No need to check if a dependency
12901 is in the free list.
12902 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
12903 fields to be unsigned int instead of trees.
12904 (ange_def_chain::depend1): Adjust.
12905 (ange_def_chain::depend2): Adjust.
12906 * gimple-range.h: Include "ssa.h" to inline ssa_name().
12908 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
12910 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
12911 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
12912 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
12914 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
12917 * config/riscv/riscv-protos.h: Add helper function stubs.
12918 * config/riscv/riscv.cc: Add helper functions for subword masking.
12919 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
12920 -mno-inline-atomics.
12921 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
12922 fetch_and_nand, CAS, and exchange ops.
12923 * doc/invoke.texi: Add blurb regarding new command-line flags
12924 -minline-atomics and -mno-inline-atomics.
12926 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12928 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
12929 Reimplement using standard RTL codes instead of unspec.
12930 (aarch64_rshrn2<mode>_insn_be): Likewise.
12931 (aarch64_rshrn2<mode>): Adjust for the above.
12932 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
12934 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12936 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
12937 with standard RTL codes instead of an UNSPEC.
12938 (aarch64_rshrn<mode>_insn_be): Likewise.
12939 (aarch64_rshrn<mode>): Adjust for the above.
12940 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
12942 2023-04-26 Pan Li <pan2.li@intel.com>
12943 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12945 * config/riscv/riscv.cc (riscv_classify_address): Allow
12946 const0_rtx for the RVV load/store.
12948 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12950 * range-op.cc (range_op_cast_tests): Remove legacy support.
12951 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
12952 * value-range.cc (irange::operator=): Same.
12953 (get_legacy_range): Same.
12954 (irange::copy_legacy_to_multi_range): Delete.
12955 (irange::copy_to_legacy): Delete.
12956 (irange::irange_set_anti_range): Delete.
12957 (irange::set): Remove legacy support.
12958 (irange::verify_range): Same.
12959 (irange::legacy_lower_bound): Delete.
12960 (irange::legacy_upper_bound): Delete.
12961 (irange::legacy_equal_p): Delete.
12962 (irange::operator==): Remove legacy support.
12963 (irange::singleton_p): Same.
12964 (irange::value_inside_range): Same.
12965 (irange::contains_p): Same.
12966 (intersect_ranges): Delete.
12967 (irange::legacy_intersect): Delete.
12968 (union_ranges): Delete.
12969 (irange::legacy_union): Delete.
12970 (irange::legacy_verbose_union_): Delete.
12971 (irange::legacy_verbose_intersect): Delete.
12972 (irange::irange_union): Remove legacy support.
12973 (irange::irange_intersect): Same.
12974 (irange::intersect): Same.
12975 (irange::invert): Same.
12976 (ranges_from_anti_range): Delete.
12977 (gt_pch_nx): Adjust for legacy removal.
12979 (range_tests_legacy): Delete.
12980 (range_tests_misc): Adjust for legacy removal.
12981 (range_tests): Same.
12982 * value-range.h (class irange): Same.
12983 (irange::legacy_mode_p): Delete.
12984 (ranges_from_anti_range): Delete.
12985 (irange::nonzero_p): Adjust for legacy removal.
12986 (irange::lower_bound): Same.
12987 (irange::upper_bound): Same.
12988 (irange::union_): Same.
12989 (irange::intersect): Same.
12990 (irange::set_nonzero): Same.
12991 (irange::set_zero): Same.
12992 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12994 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12996 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
12997 of range_has_numeric_bounds_p with irange API.
12998 (range_has_numeric_bounds_p): Delete.
12999 * value-range.h (range_has_numeric_bounds_p): Delete.
13001 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13003 * tree-data-ref.cc (compute_distributive_range): Replace uses of
13004 range_int_cst_p with irange API.
13005 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
13006 * tree-vrp.h (range_int_cst_p): Delete.
13007 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
13008 range_int_cst_p with irange API.
13009 (vr_set_zero_nonzero_bits): Same.
13010 (range_fits_type_p): Same.
13011 (simplify_using_ranges::simplify_casted_cond): Same.
13012 * tree-vrp.cc (range_int_cst_p): Remove.
13014 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13016 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
13018 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13020 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
13021 API uses to new API.
13022 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
13023 * internal-fn.cc (get_min_precision): Same.
13025 * tree-affine.cc (expr_to_aff_combination): Same.
13026 * tree-data-ref.cc (dr_step_indicator): Same.
13027 * tree-dfa.cc (get_ref_base_and_extent): Same.
13028 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
13029 * tree-ssa-phiopt.cc (two_value_replacement): Same.
13030 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
13031 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
13032 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
13033 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
13034 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
13035 * tree.cc (get_range_pos_neg): Same.
13037 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13039 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
13040 vrange::dump instead of ad-hoc dumper.
13041 * tree-ssa-strlen.cc (dump_strlen_info): Same.
13042 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
13045 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13047 * range-op.cc (operator_cast::op1_range): Use
13048 create_possibly_reversed_range.
13049 (operator_bitwise_and::simple_op1_range_solver): Same.
13050 * value-range.cc (swap_out_of_order_endpoints): Delete.
13051 (irange::set): Remove call to swap_out_of_order_endpoints.
13053 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13055 * builtins.cc (determine_block_size): Convert use of legacy API to
13057 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
13058 (array_bounds_checker::check_array_ref): Same.
13059 * gimple-ssa-warn-restrict.cc
13060 (builtin_memref::extend_offset_range): Same.
13061 * ipa-cp.cc (ipcp_store_vr_results): Same.
13062 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
13063 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
13064 (ipa_write_jump_function): Same.
13065 * pointer-query.cc (get_size_range): Same.
13066 * tree-data-ref.cc (split_constant_offset): Same.
13067 * tree-ssa-strlen.cc (get_range): Same.
13068 (maybe_diag_stxncpy_trunc): Same.
13069 (strlen_pass::get_len_or_size): Same.
13070 (strlen_pass::count_nonzero_bytes_addr): Same.
13071 * tree-vect-patterns.cc (vect_get_range_info): Same.
13072 * value-range.cc (irange::maybe_anti_range): Remove.
13073 (get_legacy_range): New.
13074 (irange::copy_to_legacy): Use get_legacy_range.
13075 (ranges_from_anti_range): Same.
13076 * value-range.h (class irange): Remove maybe_anti_range.
13077 (get_legacy_range): New.
13078 * vr-values.cc (check_for_binary_op_overflow): Convert use of
13079 legacy API to get_legacy_range.
13080 (compare_ranges): Same.
13081 (compare_range_with_value): Same.
13082 (bounds_of_var_in_loop): Same.
13083 (find_case_label_ranges): Same.
13084 (simplify_using_ranges::simplify_switch_using_ranges): Same.
13086 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13088 * value-range-pretty-print.cc (vrange_printer::visit): Remove
13090 * value-range.cc (irange::constant_p): Remove.
13091 (irange::get_nonzero_bits_from_range): Remove constant_p use.
13092 * value-range.h (class irange): Remove constant_p.
13093 (irange::num_pairs): Remove constant_p use.
13095 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13097 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
13099 (irange::set): Same.
13100 (irange::legacy_lower_bound): Same.
13101 (irange::legacy_upper_bound): Same.
13102 (irange::contains_p): Same.
13103 (range_tests_legacy): Same.
13104 (irange::normalize_addresses): Remove.
13105 (irange::normalize_symbolics): Remove.
13106 (irange::symbolic_p): Remove.
13107 * value-range.h (class irange): Remove symbolic_p,
13108 normalize_symbolics, and normalize_addresses.
13109 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
13110 Remove symbolics support.
13112 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13114 * value-range.cc (irange::may_contain_p): Remove.
13115 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
13116 usage with contains_p.
13117 * vr-values.cc (compare_range_with_value): Same.
13119 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13121 * tree-vrp.cc (supported_types_p): Remove.
13122 (defined_ranges_p): Remove.
13123 (range_fold_binary_expr): Remove.
13124 (range_fold_unary_expr): Remove.
13125 * tree-vrp.h (range_fold_unary_expr): Remove.
13126 (range_fold_binary_expr): Remove.
13128 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13130 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
13131 (ipa_value_range_from_jfunc): Same.
13132 (propagate_vr_across_jump_function): Same.
13133 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
13134 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
13135 * vr-values.cc (bounds_of_var_in_loop): Same.
13137 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13139 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
13140 Add irange argument.
13141 (check_out_of_bounds_and_warn): Remove check for vr.
13142 (array_bounds_checker::check_array_ref): Remove pointer qualifier
13143 for vr and adjust accordingly.
13144 * gimple-array-bounds.h (get_value_range): Add irange argument.
13145 * value-query.cc (class equiv_allocator): Delete.
13146 (range_query::get_value_range): Delete.
13147 (range_query::range_query): Remove allocator access.
13148 (range_query::~range_query): Same.
13149 * value-query.h (get_value_range): Delete.
13151 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
13152 call to get_value_range.
13153 (check_for_binary_op_overflow): Same.
13154 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
13155 (simplify_using_ranges::simplify_abs_using_ranges): Same.
13156 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
13157 (simplify_using_ranges::simplify_casted_cond): Same.
13158 (simplify_using_ranges::simplify_switch_using_ranges): Same.
13159 (simplify_using_ranges::two_valued_val_range_p): Same.
13161 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13164 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
13166 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
13167 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
13168 (simplify_using_ranges::legacy_fold_cond): ...this.
13169 (simplify_using_ranges::fold_cond): Rename
13170 vrp_evaluate_conditional_warnv_with_ops to
13171 legacy_fold_cond_overflow.
13172 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
13173 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
13174 legacy_fold_cond_overflow respectively.
13176 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
13178 * vr-values.cc (get_vr_for_comparison): Remove.
13179 (compare_name_with_value): Same.
13180 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
13181 compare_name_with_value.
13182 * vr-values.h: Remove compare_name_with_value.
13183 Remove get_vr_for_comparison.
13185 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
13187 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
13188 (bswapsi2): New define_insn.
13189 (swaphi): New define_insn to exchange two registers (swpw).
13190 (define_peephole2): Recognize exchange of registers as swaphi.
13192 2023-04-26 Richard Biener <rguenther@suse.de>
13194 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
13196 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
13197 * predict.cc (apply_return_prediction): Likewise.
13198 * sese.cc (set_ifsese_condition): Likewise. Simplify.
13199 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
13200 (make_edges_bb): Likewise.
13201 (make_cond_expr_edges): Likewise.
13202 (end_recording_case_labels): Likewise.
13203 (make_gimple_asm_edges): Likewise.
13204 (cleanup_dead_labels): Likewise.
13205 (group_case_labels): Likewise.
13206 (gimple_can_merge_blocks_p): Likewise.
13207 (gimple_merge_blocks): Likewise.
13208 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
13209 (gimple_duplicate_sese_tail): Avoid last_stmt.
13210 (find_loop_dist_alias): Likewise.
13211 (gimple_block_ends_with_condjump_p): Likewise.
13212 (gimple_purge_dead_eh_edges): Likewise.
13213 (gimple_purge_dead_abnormal_call_edges): Likewise.
13214 (pass_warn_function_return::execute): Likewise.
13215 (execute_fixup_cfg): Likewise.
13216 * tree-eh.cc (redirect_eh_edge_1): Likewise.
13217 (pass_lower_resx::execute): Likewise.
13218 (pass_lower_eh_dispatch::execute): Likewise.
13219 (cleanup_empty_eh): Likewise.
13220 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
13221 (predicate_bbs): Likewise.
13222 (ifcvt_split_critical_edges): Likewise.
13223 * tree-loop-distribution.cc (create_edge_for_control_dependence):
13225 (loop_distribution::transform_reduction_loop): Likewise.
13226 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
13227 (try_transform_to_exit_first_loop_alt): Likewise.
13228 (transform_to_exit_first_loop): Likewise.
13229 (create_parallel_loop): Likewise.
13230 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
13231 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
13232 (eliminate_unnecessary_stmts): Likewise.
13234 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
13236 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
13237 (pass_tree_ifcombine::execute): Likewise.
13238 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
13239 (should_duplicate_loop_header_p): Likewise.
13240 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
13241 (tree_estimate_loop_size): Likewise.
13242 (try_unroll_loop_completely): Likewise.
13243 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
13244 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
13245 (canonicalize_loop_ivs): Likewise.
13246 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
13247 (bound_difference): Likewise.
13248 (number_of_iterations_popcount): Likewise.
13249 (number_of_iterations_cltz): Likewise.
13250 (number_of_iterations_cltz_complement): Likewise.
13251 (simplify_using_initial_conditions): Likewise.
13252 (number_of_iterations_exit_assumptions): Likewise.
13253 (loop_niter_by_eval): Likewise.
13254 (estimate_numbers_of_iterations): Likewise.
13256 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13258 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
13260 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
13263 * config/rs6000/rs6000-builtins.def
13264 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
13265 __builtin_vsx_scalar_cmp_exp_qp_lt,
13266 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
13269 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
13272 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
13273 easy_vector_constant with const_vector_each_byte_same, add
13274 handlings in preparation for !easy_vector_constant, and update
13275 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
13276 * config/rs6000/predicates.md (const_vector_each_byte_same): New
13279 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13281 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
13282 (*pred_ltge<mode>_merge_tie_mask): Ditto.
13283 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
13284 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
13285 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
13286 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
13287 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
13289 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13291 * config/riscv/vector.md: Fix redundant vmv1r.v.
13293 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13295 * config/riscv/vector.md: Fix RA constraint.
13297 2023-04-26 Pan Li <pan2.li@intel.com>
13300 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
13301 check for vn_reference equal.
13303 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13305 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
13306 auto-vectorization preference.
13307 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
13308 auto-vectorization.
13309 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
13311 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
13313 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
13314 and bclridisi_nottwobits patterns.
13315 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
13316 predicate to avoid splitting arith constants.
13317 (const_nottwobits_not_arith_operand): New predicate.
13319 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
13321 * recog.cc (peep2_attempt, peep2_update_life): Correct
13322 head-comment description of parameter match_len.
13324 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
13326 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
13327 riscv_split_symbol() drop in_splitter arg.
13328 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
13329 riscv_split_symbol() drop in_splitter arg.
13330 riscv_force_temporary() drop in_splitter arg.
13331 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
13332 riscv_split_symbol() drop in_splitter arg.
13334 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
13336 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
13337 superfluous debug temporaries for single GIMPLE assignments.
13339 2023-04-25 Richard Biener <rguenther@suse.de>
13341 PR tree-optimization/109609
13342 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
13344 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
13345 the size given by arg_max_access_size_given_by_arg_p as
13346 maximum, not exact, size.
13348 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13351 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
13352 (orn<mode>3<vczle><vczbe>): ... This.
13353 (bic<mode>3): Rename to...
13354 (bic<mode>3<vczle><vczbe>): ... This.
13355 (<su><maxmin><mode>3): Rename to...
13356 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
13358 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13360 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
13361 * config/aarch64/iterators.md (VQDIV): New mode iterator.
13362 (vnx2di): New mode attribute.
13364 2023-04-25 Richard Biener <rguenther@suse.de>
13366 PR rtl-optimization/109585
13367 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
13369 2023-04-25 Jakub Jelinek <jakub@redhat.com>
13372 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
13373 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
13374 is larger than signed int maximum.
13376 2023-04-25 Martin Liska <mliska@suse.cz>
13378 * doc/gcov.texi: Document the new "calls" field and document
13379 the API bump. Mention also "block_ids" for lines.
13380 * gcov.cc (output_intermediate_json_line): Output info about
13381 calls and extend branches as well.
13382 (generate_results): Bump version to 2.
13383 (output_line_details): Use block ID instead of a non-sensual
13386 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
13388 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
13389 length attribute for the first (memory operand) alternative.
13391 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
13393 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
13394 * config/aarch64/constraints.md: Make "Umn" relaxed memory
13396 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
13398 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
13400 * value-range.cc (frange::set): Adjust constructor.
13401 * value-range.h (nan_state::nan_state): Replace default
13402 constructor with one taking an argument.
13404 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
13406 * ipa-cp.cc (ipa_range_contains_p): New.
13407 (decide_whether_version_node): Use it.
13409 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13411 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
13412 simplify two successive VEC_PERM_EXPRs with same VLA mask,
13413 where mask chooses elements in reverse order.
13415 2023-04-24 Andrew Pinski <apinski@marvell.com>
13417 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
13418 and support diamond shaped basic block form.
13419 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
13421 2023-04-24 Andrew Pinski <apinski@marvell.com>
13423 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
13424 Instead of calling last_and_only_stmt, look for the last statement
13427 2023-04-24 Andrew Pinski <apinski@marvell.com>
13429 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
13431 (match_simplify_replacement): Call
13432 empty_bb_or_one_feeding_into_p instead of doing it inline.
13434 2023-04-24 Andrew Pinski <apinski@marvell.com>
13436 PR tree-optimization/68894
13437 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
13438 continue for the do_hoist_loads diamond case.
13440 2023-04-24 Andrew Pinski <apinski@marvell.com>
13442 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
13443 code for better code readability.
13445 2023-04-24 Andrew Pinski <apinski@marvell.com>
13447 PR tree-optimization/109604
13448 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
13449 diamond form check from ...
13450 (minmax_replacement): Here.
13452 2023-04-24 Patrick Palka <ppalka@redhat.com>
13454 * tree.cc (strip_array_types): Don't define here.
13455 (is_typedef_decl): Don't define here.
13456 (typedef_variant_p): Don't define here.
13457 * tree.h (strip_array_types): Define here.
13458 (is_typedef_decl): Define here.
13459 (typedef_variant_p): Define here.
13461 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
13463 * doc/generic.texi (OpenMP): Add != to allowed
13464 conditions and state that vars can be unsigned.
13465 * tree.def (OMP_FOR): Likewise.
13467 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13469 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
13471 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
13473 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
13474 Remove explicit Solaris 11 references.
13476 (Options specification, --with-gnu-as): as and gas always differ
13478 Remove /usr/ccs/bin reference.
13479 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
13480 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
13481 (*-*-solaris2*): ... here.
13482 Update bundled GCC versions.
13483 Don't refer to pre-built binaries.
13484 Remove /bin/sh warning.
13485 Update assembler, linker recommendations.
13486 Document GNAT bootstrap compiler.
13487 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
13488 (sparc64-*-solaris2*): Move content...
13489 (sparcv9-*-solaris2*): ...here.
13490 Add GDC for 64-bit bootstrap compilers.
13492 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13495 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
13497 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
13500 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13502 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
13503 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
13504 (aarch64_<su>abal2<mode>): New define_expand.
13505 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
13506 (aarch64_rtx_costs): Handle ABD rtxes.
13507 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
13508 * config/aarch64/iterators.md (ABAL2): Delete.
13509 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
13511 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13513 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
13514 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
13515 (<sur>sadv16qi): Rename to...
13516 (<su>sadv16qi): ... This. Adjust for the above.
13517 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
13518 (<su>sad<vsi2qi>): ... This. Adjust for the above.
13519 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
13520 * config/aarch64/iterators.md (ABAL): Delete.
13521 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
13523 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13525 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
13526 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
13527 (aarch64_<su>abdl2<mode>): New define_expand.
13528 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
13529 * config/aarch64/iterators.md (ABDL2): Delete.
13530 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
13532 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13534 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
13535 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
13537 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
13538 * config/aarch64/iterators.md (ABDL): Delete.
13539 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
13541 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13543 * config/aarch64/aarch64-simd.md
13544 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
13546 2023-04-24 Richard Biener <rguenther@suse.de>
13548 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
13550 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
13552 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
13553 (set_switch_stmt_execution_predicate): Likewise.
13554 (phi_result_unknown_predicate): Likewise.
13555 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
13556 (ipa_analyze_indirect_call_uses): Likewise.
13557 * predict.cc (predict_iv_comparison): Likewise.
13558 (predict_extra_loop_exits): Likewise.
13559 (predict_loops): Likewise.
13560 (tree_predict_by_opcode): Likewise.
13561 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
13563 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
13564 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
13565 (replace_phi_edge_with_variable): Likewise.
13566 (two_value_replacement): Likewise.
13567 (value_replacement): Likewise.
13568 (minmax_replacement): Likewise.
13569 (spaceship_replacement): Likewise.
13570 (cond_removal_in_builtin_zero_pattern): Likewise.
13571 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
13572 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
13573 (vn_phi_lookup): Likewise.
13574 (vn_phi_insert): Likewise.
13575 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
13576 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
13578 (back_threader_profitability::possibly_profitable_path_p):
13580 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
13582 * tree-switch-conversion.cc (pass_convert_switch::execute):
13584 (pass_lower_switch<O0>::execute): Likewise.
13585 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
13586 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
13587 * tree-vect-slp.cc (vect_slp_function): Likewise.
13588 * tree-vect-stmts.cc (cfun_returns): Likewise.
13589 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
13590 (vect_loop_dist_alias_call): Likewise.
13592 2023-04-24 Richard Biener <rguenther@suse.de>
13594 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
13596 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13598 * config/riscv/riscv-vsetvl.cc
13599 (vector_infos_manager::all_avail_in_compatible_p): New function.
13600 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
13601 * config/riscv/riscv-vsetvl.h: New function.
13603 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13605 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
13606 comment for cleanup_insns.
13608 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13610 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
13611 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
13612 with the fault first load property.
13614 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13616 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
13617 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
13619 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13622 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
13623 (aarch64_addp<mode><vczle><vczbe>): ... This.
13625 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
13627 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
13628 provide reasonable values for common arithmetic operations and
13629 immediate operands (in several machine modes).
13631 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
13633 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
13634 format specifier to output high_part register name of SImode reg.
13635 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
13636 (zero_extendqihi2): Fix lengths, consistent formatting and add
13637 "and Rx,#255" alternative, for documentation purposes.
13638 (zero_extendhisi2): New define_insn.
13640 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
13642 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
13643 SImode shifts by two by performing a single bit SImode shift twice.
13645 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
13647 PR tree-optimization/109593
13648 * value-range.cc (frange::operator==): Handle NANs.
13650 2023-04-23 liuhongt <hongtao.liu@intel.com>
13652 PR rtl-optimization/108707
13653 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
13654 GENERAL_REGS when preferred reg_class is not known.
13656 2023-04-22 Andrew Pinski <apinski@marvell.com>
13658 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
13659 Change the code around slightly to move diamond
13660 handling for do_store_elim/do_hoist_loads out of
13663 2023-04-22 Andrew Pinski <apinski@marvell.com>
13665 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
13666 Remove check on empty_block_p.
13668 2023-04-22 Jakub Jelinek <jakub@redhat.com>
13670 PR bootstrap/109589
13671 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
13672 * realmpfr.h (class auto_mpfr): Likewise.
13674 2023-04-22 Jakub Jelinek <jakub@redhat.com>
13676 PR tree-optimization/109583
13677 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
13678 if vec_mode is not VECTOR_MODE_P.
13680 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
13681 Ondrej Kubanek <kubanek0ondrej@gmail.com>
13683 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
13684 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
13685 loop profile and bounds after header duplication.
13686 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
13687 Break out from try_peel_loop; fix handling of 0 iterations.
13688 (try_peel_loop): Use adjust_loop_info_after_peeling.
13690 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
13692 PR tree-optimization/109546
13693 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
13694 not fold conditions with ADDR_EXPR early.
13696 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13698 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
13699 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
13701 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
13702 (*aarch64_<optab><mode>3_zero): Define.
13703 (*aarch64_<optab><mode>3_cssc): Likewise.
13704 * config/aarch64/iterators.md (maxminand): New code attribute.
13706 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13709 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
13710 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
13712 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
13713 (aarch64_override_options_internal): Handle the above.
13714 (aarch64_output_load_tp): New function.
13715 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
13716 aarch64_output_load_tp.
13717 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
13718 (mtp=): New option.
13719 * doc/invoke.texi (AArch64 Options): Document -mtp=.
13721 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13724 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
13725 (add_vec_concat_subst_be): Likewise.
13728 (add<mode>3): Rename to...
13729 (add<mode>3<vczle><vczbe>): ... This.
13730 (sub<mode>3): Rename to...
13731 (sub<mode>3<vczle><vczbe>): ... This.
13732 (mul<mode>3): Rename to...
13733 (mul<mode>3<vczle><vczbe>): ... This.
13734 (and<mode>3): Rename to...
13735 (and<mode>3<vczle><vczbe>): ... This.
13736 (ior<mode>3): Rename to...
13737 (ior<mode>3<vczle><vczbe>): ... This.
13738 (xor<mode>3): Rename to...
13739 (xor<mode>3<vczle><vczbe>): ... This.
13740 * config/aarch64/iterators.md (VDZ): Define.
13742 2023-04-21 Patrick Palka <ppalka@redhat.com>
13744 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
13747 2023-04-21 Jan Hubicka <jh@suse.cz>
13749 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
13752 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
13754 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
13755 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
13757 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13759 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
13760 force_reg instead of copy_to_mode_reg.
13761 (aarch64_expand_vector_init): Likewise.
13763 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
13765 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
13766 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
13767 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
13768 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
13769 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
13770 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
13771 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
13772 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
13773 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
13774 * config/i386/predicates.md (index_register_operand):
13775 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
13776 * config/i386/i386.cc (ix86_legitimate_address_p): Use
13777 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
13778 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
13780 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
13781 Ondrej Kubanek <kubanek0ondrej@gmail.com>
13783 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
13786 2023-04-21 Richard Biener <rguenther@suse.de>
13788 * is-a.h (safe_is_a): New.
13790 2023-04-21 Richard Biener <rguenther@suse.de>
13792 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
13793 (gphi_iterator::operator*): Likewise.
13795 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
13796 Michal Jires <michal@jires.eu>
13798 * ipa-inline.cc (class inline_badness): New class.
13799 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
13801 (update_edge_key): Update.
13802 (lookup_recursive_calls): Likewise.
13803 (recursive_inlining): Likewise.
13804 (add_new_edges_to_heap): Likewise.
13805 (inline_small_functions): Likewise.
13807 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
13809 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
13811 2023-04-21 Richard Biener <rguenther@suse.de>
13813 PR tree-optimization/109573
13814 * tree-vect-loop.cc (vectorizable_live_operation): Allow
13815 unhandled SSA copy as well. Demote assert to checking only.
13817 2023-04-21 Richard Biener <rguenther@suse.de>
13819 * df-core.cc (df_analyze): Compute RPO on the reverse graph
13820 for DF_BACKWARD problems.
13821 (loop_post_order_compute): Rename to ...
13822 (loop_rev_post_order_compute): ... this, compute a RPO.
13823 (loop_inverted_post_order_compute): Rename to ...
13824 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
13825 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
13826 problems, RPO on the inverted graph for DF_BACKWARD.
13828 2023-04-21 Richard Biener <rguenther@suse.de>
13830 * cfganal.h (inverted_rev_post_order_compute): Rename
13832 (inverted_post_order_compute): ... this. Add struct function
13833 argument, change allocation to a C array.
13834 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
13835 * lcm.cc (compute_antinout_edge): Adjust.
13836 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
13837 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
13838 * tree-ssa-pre.cc (compute_antic): Likewise.
13840 2023-04-21 Richard Biener <rguenther@suse.de>
13842 * df.h (df_d::postorder_inverted): Change back to int *,
13844 * df-core.cc (rest_of_handle_df_finish): Adjust.
13845 (df_analyze_1): Likewise.
13846 (df_analyze): For DF_FORWARD problems use RPO on the forward
13848 (loop_inverted_post_order_compute): Adjust API.
13849 (df_analyze_loop): Adjust.
13850 (df_get_n_blocks): Likewise.
13851 (df_get_postorder): Likewise.
13853 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13856 * config/riscv/riscv-vsetvl.cc
13857 (vector_infos_manager::all_empty_predecessor_p): New function.
13858 (pass_vsetvl::backward_demand_fusion): Ditto.
13859 * config/riscv/riscv-vsetvl.h: Ditto.
13861 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
13864 * config/riscv/generic.md: Change standard names to insn names.
13866 2023-04-21 Richard Biener <rguenther@suse.de>
13868 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
13869 (compute_laterin): Use RPO.
13870 (compute_available): Likewise.
13872 2023-04-21 Peng Fan <fanpeng@loongson.cn>
13874 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
13876 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13879 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
13880 (vector_insn_info::skip_avl_compatible_p): Ditto.
13881 (vector_insn_info::merge): Remove default value.
13882 (pass_vsetvl::compute_local_backward_infos): Ditto.
13883 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
13884 * config/riscv/riscv-vsetvl.h: Ditto.
13886 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
13888 * doc/extend.texi (Common Function Attributes): Remove duplicate
13891 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
13893 PR tree-optimization/109564
13894 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
13895 UNDEFINED range names when deciding if all PHI arguments are the same,
13897 2023-04-20 Jakub Jelinek <jakub@redhat.com>
13899 PR tree-optimization/109011
13900 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
13901 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
13902 .CTZ (X) = PREC - .POPCOUNT (X | -X).
13904 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
13906 * lra-constraints.cc (match_reload): Exclude some hard regs for
13907 multi-reg inout reload pseudos used in asm in different mode.
13909 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
13911 * config/arm/arm.cc (thumb1_legitimate_address_p):
13912 Use VIRTUAL_REGISTER_P predicate.
13913 (arm_eliminable_register): Ditto.
13914 * config/avr/avr.md (push<mode>_1): Ditto.
13915 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
13916 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
13917 * config/i386/predicates.md (register_no_elim_operand): Ditto.
13918 * config/iq2000/predicates.md (call_insn_operand): Ditto.
13919 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
13921 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
13924 * config/i386/predicates.md (extract_operator): New predicate.
13925 * config/i386/i386.md (any_extract): Remove code iterator.
13926 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
13927 (*cmpqi_ext<mode>_1): Ditto.
13928 (*cmpqi_ext<mode>_2): Ditto.
13929 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
13930 (*cmpqi_ext<mode>_3): Ditto.
13931 (*cmpqi_ext<mode>_4): Ditto.
13932 (*extzvqi_mem_rex64): Ditto.
13934 (*insvqi_2): Ditto.
13935 (*extendqi<SWI24:mode>_ext_1): Ditto.
13936 (*addqi_ext<mode>_0): Ditto.
13937 (*addqi_ext<mode>_1): Ditto.
13938 (*addqi_ext<mode>_2): Ditto.
13939 (*subqi_ext<mode>_0): Ditto.
13940 (*subqi_ext<mode>_2): Ditto.
13941 (*testqi_ext<mode>_1): Ditto.
13942 (*testqi_ext<mode>_2): Ditto.
13943 (*andqi_ext<mode>_0): Ditto.
13944 (*andqi_ext<mode>_1): Ditto.
13945 (*andqi_ext<mode>_1_cc): Ditto.
13946 (*andqi_ext<mode>_2): Ditto.
13947 (*<any_or:code>qi_ext<mode>_0): Ditto.
13948 (*<any_or:code>qi_ext<mode>_1): Ditto.
13949 (*<any_or:code>qi_ext<mode>_2): Ditto.
13950 (*xorqi_ext<mode>_1_cc): Ditto.
13951 (*negqi_ext<mode>_2): Ditto.
13952 (*ashlqi_ext<mode>_2): Ditto.
13953 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
13955 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
13958 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
13959 <bitmanip_insn> as the type to allow for fine grained control of
13960 scheduling these insns.
13961 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
13963 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
13964 pcnt, signed and unsigned min/max.
13966 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13967 kito-cheng <kito.cheng@sifive.com>
13969 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
13971 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13972 kito-cheng <kito.cheng@sifive.com>
13975 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
13976 (pass_vsetvl::cleanup_insns): Fix bug.
13978 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
13980 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
13981 (ldexp<mode>3): Delete.
13982 (ldexp<mode>3<exec>): Change "B" to "A".
13984 2023-04-20 Jakub Jelinek <jakub@redhat.com>
13985 Jonathan Wakely <jwakely@redhat.com>
13987 * tree.h (built_in_function_equal_p): New helper function.
13988 (fndecl_built_in_p): Turn into variadic template to support
13989 1 or more built_in_function arguments.
13990 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
13991 * gimplify.cc (goa_stabilize_expr): Likewise.
13992 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
13993 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
13994 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
13995 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
13996 cgraph_update_edges_for_call_stmt_node,
13997 cgraph_edge::verify_corresponds_to_fndecl,
13998 cgraph_node::verify_node): Likewise.
13999 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
14000 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
14001 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
14003 2023-04-20 Jakub Jelinek <jakub@redhat.com>
14005 PR tree-optimization/109011
14006 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
14007 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
14008 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
14009 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
14010 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
14012 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
14014 2023-04-20 Richard Biener <rguenther@suse.de>
14016 * df-core.cc (rest_of_handle_df_initialize): Remove
14017 computation of df->postorder, df->postorder_inverted and
14020 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
14022 * common/config/i386/i386-common.cc
14023 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
14024 (ix86_handle_option): Set AVX flag for VAES.
14025 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
14026 Add OPTION_MASK_ISA2_VAES_UNSET.
14027 (def_builtin): Share builtin between AES and VAES.
14028 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
14030 * config/i386/i386.md (aes): New isa attribute.
14031 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
14032 (aesenclast): Ditto.
14034 (aesdeclast): Ditto.
14035 * config/i386/vaesintrin.h: Remove redundant avx target push.
14036 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
14037 (_mm_aesdeclast_si128): Ditto.
14038 (_mm_aesenc_si128): Ditto.
14039 (_mm_aesenclast_si128): Ditto.
14041 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
14043 * config/i386/avx2intrin.h
14044 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
14045 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
14046 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
14047 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
14048 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
14049 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
14050 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
14051 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
14052 (_mm_reduce_add_epi16): New instrinsics.
14053 (_mm_reduce_mul_epi16): Ditto.
14054 (_mm_reduce_and_epi16): Ditto.
14055 (_mm_reduce_or_epi16): Ditto.
14056 (_mm_reduce_max_epi16): Ditto.
14057 (_mm_reduce_max_epu16): Ditto.
14058 (_mm_reduce_min_epi16): Ditto.
14059 (_mm_reduce_min_epu16): Ditto.
14060 (_mm256_reduce_add_epi16): Ditto.
14061 (_mm256_reduce_mul_epi16): Ditto.
14062 (_mm256_reduce_and_epi16): Ditto.
14063 (_mm256_reduce_or_epi16): Ditto.
14064 (_mm256_reduce_max_epi16): Ditto.
14065 (_mm256_reduce_max_epu16): Ditto.
14066 (_mm256_reduce_min_epi16): Ditto.
14067 (_mm256_reduce_min_epu16): Ditto.
14068 (_mm_reduce_add_epi8): Ditto.
14069 (_mm_reduce_mul_epi8): Ditto.
14070 (_mm_reduce_and_epi8): Ditto.
14071 (_mm_reduce_or_epi8): Ditto.
14072 (_mm_reduce_max_epi8): Ditto.
14073 (_mm_reduce_max_epu8): Ditto.
14074 (_mm_reduce_min_epi8): Ditto.
14075 (_mm_reduce_min_epu8): Ditto.
14076 (_mm256_reduce_add_epi8): Ditto.
14077 (_mm256_reduce_mul_epi8): Ditto.
14078 (_mm256_reduce_and_epi8): Ditto.
14079 (_mm256_reduce_or_epi8): Ditto.
14080 (_mm256_reduce_max_epi8): Ditto.
14081 (_mm256_reduce_max_epu8): Ditto.
14082 (_mm256_reduce_min_epi8): Ditto.
14083 (_mm256_reduce_min_epu8): Ditto.
14084 * config/i386/avx512vlbwintrin.h:
14085 (_mm_mask_reduce_add_epi16): Ditto.
14086 (_mm_mask_reduce_mul_epi16): Ditto.
14087 (_mm_mask_reduce_and_epi16): Ditto.
14088 (_mm_mask_reduce_or_epi16): Ditto.
14089 (_mm_mask_reduce_max_epi16): Ditto.
14090 (_mm_mask_reduce_max_epu16): Ditto.
14091 (_mm_mask_reduce_min_epi16): Ditto.
14092 (_mm_mask_reduce_min_epu16): Ditto.
14093 (_mm256_mask_reduce_add_epi16): Ditto.
14094 (_mm256_mask_reduce_mul_epi16): Ditto.
14095 (_mm256_mask_reduce_and_epi16): Ditto.
14096 (_mm256_mask_reduce_or_epi16): Ditto.
14097 (_mm256_mask_reduce_max_epi16): Ditto.
14098 (_mm256_mask_reduce_max_epu16): Ditto.
14099 (_mm256_mask_reduce_min_epi16): Ditto.
14100 (_mm256_mask_reduce_min_epu16): Ditto.
14101 (_mm_mask_reduce_add_epi8): Ditto.
14102 (_mm_mask_reduce_mul_epi8): Ditto.
14103 (_mm_mask_reduce_and_epi8): Ditto.
14104 (_mm_mask_reduce_or_epi8): Ditto.
14105 (_mm_mask_reduce_max_epi8): Ditto.
14106 (_mm_mask_reduce_max_epu8): Ditto.
14107 (_mm_mask_reduce_min_epi8): Ditto.
14108 (_mm_mask_reduce_min_epu8): Ditto.
14109 (_mm256_mask_reduce_add_epi8): Ditto.
14110 (_mm256_mask_reduce_mul_epi8): Ditto.
14111 (_mm256_mask_reduce_and_epi8): Ditto.
14112 (_mm256_mask_reduce_or_epi8): Ditto.
14113 (_mm256_mask_reduce_max_epi8): Ditto.
14114 (_mm256_mask_reduce_max_epu8): Ditto.
14115 (_mm256_mask_reduce_min_epi8): Ditto.
14116 (_mm256_mask_reduce_min_epu8): Ditto.
14118 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
14120 * common/config/i386/i386-common.cc
14121 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
14122 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
14123 (OPTION_MASK_ISA_AVX_UNSET):
14124 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
14125 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
14126 * config/i386/i386.md (vpclmulqdqvl): New.
14127 * config/i386/sse.md (pclmulqdq): Add evex encoding.
14128 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
14131 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
14133 * config/i386/avx512vlbwintrin.h
14134 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
14135 (_mm_mask_blend_epi8): Ditto.
14136 (_mm256_mask_blend_epi16): Ditto.
14137 (_mm256_mask_blend_epi8): Ditto.
14138 * config/i386/avx512vlintrin.h
14139 (_mm256_mask_blend_pd): Ditto.
14140 (_mm256_mask_blend_ps): Ditto.
14141 (_mm256_mask_blend_epi64): Ditto.
14142 (_mm256_mask_blend_epi32): Ditto.
14143 (_mm_mask_blend_pd): Ditto.
14144 (_mm_mask_blend_ps): Ditto.
14145 (_mm_mask_blend_epi64): Ditto.
14146 (_mm_mask_blend_epi32): Ditto.
14147 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
14148 (VF_AVX512HFBFVL): Move it before the first usage.
14149 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
14150 to VF_AVX512HFBFVL.
14152 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
14154 * common/config/i386/i386-common.cc
14155 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
14156 to OPTION_MASK_ISA_AVX512BW_SET.
14157 (OPTION_MASK_ISA_AVX512F_UNSET):
14158 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
14159 (OPTION_MASK_ISA_AVX512BW_UNSET):
14160 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
14161 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
14162 * config/i386/avx512vbmi2vlintrin.h: Ditto.
14163 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
14164 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
14165 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
14166 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
14168 (compressstore<mode>_mask): Ditto.
14169 (expand<mode>_mask): Ditto.
14170 (expand<mode>_maskz): Ditto.
14171 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
14172 VI12_VI48F_AVX512VL.
14174 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
14176 * common/config/i386/i386-common.cc
14177 (OPTION_MASK_ISA_AVX512BITALG_SET):
14178 Change OPTION_MASK_ISA_AVX512F_SET
14179 to OPTION_MASK_ISA_AVX512BW_SET.
14180 (OPTION_MASK_ISA_AVX512F_UNSET):
14181 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
14182 (OPTION_MASK_ISA_AVX512BW_UNSET):
14183 Add OPTION_MASK_ISA_AVX512BITALG_SET.
14184 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
14185 * config/i386/i386-builtin.def:
14186 Remove redundant OPTION_MASK_ISA_AVX512BW.
14187 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
14188 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
14189 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
14191 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
14193 * config/i386/i386-expand.cc
14194 (ix86_check_builtin_isa_match): Correct wrong comments.
14195 Add a new macro SHARE_BUILTIN and refactor the current if
14198 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
14200 * config/i386/cpuid.h: Open a new section for Extended Features
14201 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
14204 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
14206 * config/i386/sse.md: Modify insn vperm{i,f}
14209 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
14211 * config/xtensa/xtensa-opts.h: New header.
14212 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
14213 xtensa_strict_align.
14214 * config/xtensa/xtensa.cc (xtensa_option_override): When
14215 -m[no-]strict-align is not specified in the command line set
14216 xtensa_strict_align to 0 if the hardware supports both unaligned
14217 loads and stores or to 1 otherwise.
14218 * config/xtensa/xtensa.opt (mstrict-align): New option.
14219 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
14221 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
14223 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
14226 2023-04-19 Andrew Pinski <apinski@marvell.com>
14228 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
14230 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14232 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
14233 (VECTOR_BOOL_MODE): Ditto.
14234 (ADJUST_NUNITS): Ditto.
14235 (ADJUST_ALIGNMENT): Ditto.
14236 (ADJUST_BYTESIZE): Ditto.
14237 (ADJUST_PRECISION): Ditto.
14238 (RVV_MODES): Ditto.
14239 (VECTOR_MODE_WITH_PREFIX): Ditto.
14240 * config/riscv/riscv-v.cc (ENTRY): Ditto.
14241 (get_vlmul): Ditto.
14242 (get_ratio): Ditto.
14243 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
14244 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
14245 (vbool64_t): Ditto.
14246 (vbool32_t): Ditto.
14247 (vbool16_t): Ditto.
14252 (vint8mf8_t): Ditto.
14253 (vuint8mf8_t): Ditto.
14254 (vint8mf4_t): Ditto.
14255 (vuint8mf4_t): Ditto.
14256 (vint8mf2_t): Ditto.
14257 (vuint8mf2_t): Ditto.
14258 (vint8m1_t): Ditto.
14259 (vuint8m1_t): Ditto.
14260 (vint8m2_t): Ditto.
14261 (vuint8m2_t): Ditto.
14262 (vint8m4_t): Ditto.
14263 (vuint8m4_t): Ditto.
14264 (vint8m8_t): Ditto.
14265 (vuint8m8_t): Ditto.
14266 (vint16mf4_t): Ditto.
14267 (vuint16mf4_t): Ditto.
14268 (vint16mf2_t): Ditto.
14269 (vuint16mf2_t): Ditto.
14270 (vint16m1_t): Ditto.
14271 (vuint16m1_t): Ditto.
14272 (vint16m2_t): Ditto.
14273 (vuint16m2_t): Ditto.
14274 (vint16m4_t): Ditto.
14275 (vuint16m4_t): Ditto.
14276 (vint16m8_t): Ditto.
14277 (vuint16m8_t): Ditto.
14278 (vint32mf2_t): Ditto.
14279 (vuint32mf2_t): Ditto.
14280 (vint32m1_t): Ditto.
14281 (vuint32m1_t): Ditto.
14282 (vint32m2_t): Ditto.
14283 (vuint32m2_t): Ditto.
14284 (vint32m4_t): Ditto.
14285 (vuint32m4_t): Ditto.
14286 (vint32m8_t): Ditto.
14287 (vuint32m8_t): Ditto.
14288 (vint64m1_t): Ditto.
14289 (vuint64m1_t): Ditto.
14290 (vint64m2_t): Ditto.
14291 (vuint64m2_t): Ditto.
14292 (vint64m4_t): Ditto.
14293 (vuint64m4_t): Ditto.
14294 (vint64m8_t): Ditto.
14295 (vuint64m8_t): Ditto.
14296 (vfloat32mf2_t): Ditto.
14297 (vfloat32m1_t): Ditto.
14298 (vfloat32m2_t): Ditto.
14299 (vfloat32m4_t): Ditto.
14300 (vfloat32m8_t): Ditto.
14301 (vfloat64m1_t): Ditto.
14302 (vfloat64m2_t): Ditto.
14303 (vfloat64m4_t): Ditto.
14304 (vfloat64m8_t): Ditto.
14305 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
14306 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
14307 (riscv_convert_vector_bits): Ditto.
14308 * config/riscv/riscv.md:
14309 * config/riscv/vector-iterators.md:
14310 * config/riscv/vector.md
14311 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
14312 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
14313 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
14314 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
14315 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
14316 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
14317 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
14318 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
14319 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
14321 2023-04-19 Pan Li <pan2.li@intel.com>
14323 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
14324 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
14326 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
14330 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
14331 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
14332 for operand 0. Use any_extract code iterator.
14333 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
14334 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
14335 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
14336 (*cmpqi_ext<mode>_1): Use general_operand predicate
14337 for operand 1. Use any_extract code iterator.
14338 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
14339 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
14341 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14343 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
14344 (aarch64_uaddw2<mode>): Delete.
14345 (aarch64_ssubw2<mode>): Delete.
14346 (aarch64_usubw2<mode>): Delete.
14347 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
14349 2023-04-19 Richard Biener <rguenther@suse.de>
14351 * tree-ssa-structalias.cc (do_ds_constraint): Use
14352 solve_add_graph_edge.
14354 2023-04-19 Richard Biener <rguenther@suse.de>
14356 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
14358 (do_sd_constraint): ... here.
14360 2023-04-19 Richard Biener <rguenther@suse.de>
14362 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
14363 rejecting the merge when A contains only a non-local label.
14365 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
14367 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
14368 (VIRTUAL_REGISTER_NUM_P): Ditto.
14369 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
14370 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
14371 * function.cc (instantiate_decl_rtl): Ditto.
14372 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
14373 (nonzero_address_p): Ditto.
14374 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
14376 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
14378 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
14380 2023-04-19 Richard Biener <rguenther@suse.de>
14382 * system.h (auto_mpz::operator->()): New.
14383 * realmpfr.h (auto_mpfr::operator->()): New.
14384 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
14385 * real.cc (real_from_string): Likewise.
14386 (dconst_e_ptr): Likewise.
14387 (dconst_sqrt2_ptr): Likewise.
14388 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
14390 (bound_difference_of_offsetted_base): Likewise.
14391 (number_of_iterations_ne): Likewise.
14392 (number_of_iterations_lt_to_ne): Likewise.
14393 * ubsan.cc: Include realmpfr.h.
14394 (ubsan_instrument_float_cast): Use auto_mpfr.
14396 2023-04-19 Richard Biener <rguenther@suse.de>
14398 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
14399 edges, remove edges from escaped after special-casing them.
14401 2023-04-19 Richard Biener <rguenther@suse.de>
14403 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
14406 2023-04-19 Richard Biener <rguenther@suse.de>
14408 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
14409 to the LHS varinfo solution member.
14411 2023-04-19 Richard Biener <rguenther@suse.de>
14413 * tree-ssa-structalias.cc (topo_visit): Look at the real
14414 destination of edges.
14416 2023-04-19 Richard Biener <rguenther@suse.de>
14418 PR tree-optimization/44794
14419 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
14420 If an epilogue loop is required set its iteration upper bound.
14422 2023-04-19 Xi Ruoyao <xry111@xry111.site>
14425 * config/loongarch/loongarch-protos.h
14426 (loongarch_expand_block_move): Add a parameter as alignment RTX.
14427 * config/loongarch/loongarch.h:
14428 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
14429 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
14430 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
14431 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
14432 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
14433 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
14434 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
14435 Take the alignment from the parameter, but set it to
14436 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
14437 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
14438 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
14439 (loongarch_block_move_straight): When there are left-over bytes,
14440 half the mode size instead of falling back to byte mode at once.
14441 (loongarch_block_move_loop): Limit the length of loop body with
14442 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
14443 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
14444 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
14445 to loongarch_expand_block_move.
14447 2023-04-19 Xi Ruoyao <xry111@xry111.site>
14449 * config/loongarch/loongarch.cc
14450 (loongarch_setup_incoming_varargs): Don't save more GARs than
14451 cfun->va_list_gpr_size / UNITS_PER_WORD.
14453 2023-04-19 Richard Biener <rguenther@suse.de>
14455 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
14456 no epilogue condition.
14458 2023-04-19 Richard Biener <rguenther@suse.de>
14460 * gimple.h (gimple_assign_load): Outline...
14461 * gimple.cc (gimple_assign_load): ... here. Avoid
14462 get_base_address and instead just strip the outermost
14463 handled component, treating a remaining handled component
14466 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14468 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
14470 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
14472 2023-04-19 Jakub Jelinek <jakub@redhat.com>
14474 PR tree-optimization/109011
14475 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
14476 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
14477 CLZ, CTZ and FFS. Remove vargs variable, use
14478 gimple_build_call_internal rather than gimple_build_call_internal_vec.
14479 (vect_vect_recog_func_ptrs): Adjust popcount entry.
14481 2023-04-19 Jakub Jelinek <jakub@redhat.com>
14484 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
14485 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
14486 a new REG rather than the SUBREG.
14488 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14490 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
14493 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14496 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
14497 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
14499 2023-04-19 Richard Biener <rguenther@suse.de>
14501 PR rtl-optimization/109237
14502 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
14503 TREE_VISITED on INSN_VAR_LOCATION_DECL.
14504 (delete_trivially_dead_insns): Maintain TREE_VISITED on
14505 active debug bind INSN_VAR_LOCATION_DECL.
14507 2023-04-19 Richard Biener <rguenther@suse.de>
14509 PR rtl-optimization/109237
14510 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14512 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
14514 * doc/install.texi (enable-decimal-float): Add AArch64.
14516 2023-04-19 liuhongt <hongtao.liu@intel.com>
14518 PR rtl-optimization/109351
14519 * ira.cc (setup_class_subset_and_memory_move_costs): Check
14520 hard_regno_mode_ok before setting lowest memory move cost for
14521 the mode with different reg classes.
14523 2023-04-18 Jason Merrill <jason@redhat.com>
14525 * doc/invoke.texi: Remove stray @gol.
14527 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
14529 * ifcvt.cc (cond_move_process_if_block): Consider the result of
14530 targetm.noce_conversion_profitable_p() when replacing the original
14531 sequence with the converted one.
14533 2023-04-18 Mark Harmstone <mark@harmstone.com>
14535 * common.opt (gcodeview): Add new option.
14536 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
14537 * opts.cc (command_handle_option): Similarly.
14538 * doc/invoke.texi: Add documentation for -gcodeview.
14540 2023-04-18 Andrew Pinski <apinski@marvell.com>
14542 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
14543 (make_pass_phiopt): Make execute out of line.
14544 (tree_ssa_cs_elim): Move code into ...
14545 (pass_cselim::execute): here.
14547 2023-04-18 Sam James <sam@gentoo.org>
14549 * system.h: Drop unused INCLUDE_PTHREAD_H.
14551 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
14553 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
14556 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
14558 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
14559 (bswapdi2, bswapsi2): Similarly.
14561 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
14564 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
14565 Use CODE_FOR_sse4_1_insertps_v4sf.
14566 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
14567 (expand_vec_perm_1): Call expand_vec_per_insertps.
14568 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
14569 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
14570 (@sse4_1_insertps_<mode>): New insn pattern.
14571 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
14572 pattern from sse4_1_insertps using VI4F_128 mode iterator.
14574 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14576 * value-range.cc (gt_ggc_mx): New.
14578 * value-range.h (class vrange): Add GTY marker.
14579 (class frange): Same.
14580 (gt_ggc_mx): Remove.
14581 (gt_pch_nx): Remove.
14583 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
14585 * lra-constraints.cc (constraint_unique): New.
14586 (process_address_1): Apply constraint_unique test.
14587 * recog.cc (constrain_operands): Allow relaxed memory
14590 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
14592 * doc/extend.texi (Target Builtins): Add RISC-V Vector
14594 (RISC-V Vector Intrinsics): Document GCC implemented which
14595 version of RISC-V vector intrinsics and its reference.
14597 2023-04-18 Richard Biener <rguenther@suse.de>
14599 PR middle-end/108786
14600 * bitmap.h (bitmap_clear_first_set_bit): New.
14601 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
14602 bitmap_first_set_bit and add optional clearing of the bit.
14603 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
14604 (bitmap_clear_first_set_bit): Likewise.
14605 * df-core.cc (df_worklist_dataflow_doublequeue): Use
14606 bitmap_clear_first_set_bit.
14607 * graphite-scop-detection.cc (scop_detection::merge_sese):
14609 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
14610 (sanitize_asan_mark_poison): Likewise.
14611 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
14612 * tree-into-ssa.cc (rewrite_blocks): Likewise.
14613 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
14614 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
14616 2023-04-18 Richard Biener <rguenther@suse.de>
14618 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
14619 (dump_sa_points_to_info): ... this function.
14620 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
14621 and call dump_sa_stats guarded with TDF_STATS.
14622 (ipa_pta_execute): Likewise.
14623 (compute_may_aliases): Guard dump_alias_info with
14624 TDF_DETAILS|TDF_ALIAS.
14626 2023-04-18 Andrew Pinski <apinski@marvell.com>
14628 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
14629 the expression that is being tried when TDF_FOLDING
14631 (phiopt_worker::match_simplify_replacement): Dump
14632 the sequence which was created by gimple_simplify_phiopt
14633 when TDF_FOLDING is true.
14635 2023-04-18 Andrew Pinski <apinski@marvell.com>
14637 * tree-ssa-phiopt.cc (match_simplify_replacement):
14638 Simplify code that does the movement slightly.
14640 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14642 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
14644 (rev16<mode>2): Rename to...
14645 (aarch64_rev16<mode>2_alt1): ... This.
14646 (rev16<mode>2_alt): Rename to...
14647 (*aarch64_rev16<mode>2_alt2): ... This.
14649 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14651 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
14652 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
14654 * range-op-float.cc (zero_range): Use dconstm0.
14655 (zero_to_inf_range): Same.
14656 * real.h (dconstm0): New.
14657 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
14658 (frange::set_zero): Do not declare dconstm0.
14660 2023-04-18 Richard Biener <rguenther@suse.de>
14662 * system.h (class auto_mpz): New,
14663 * realmpfr.h (class auto_mpfr): Likewise.
14664 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
14665 (do_mpfr_arg2): Likewise.
14666 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
14668 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14670 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
14671 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
14673 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14675 * value-range.cc (frange::operator==): Adjust for NAN.
14676 (range_tests_nan): Remove some NAN tests.
14678 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14680 * inchash.cc (hash::add_real_value): New.
14681 * inchash.h (class hash): Add add_real_value.
14682 * value-range.cc (add_vrange): New.
14683 * value-range.h (inchash::add_vrange): New.
14685 2023-04-18 Richard Biener <rguenther@suse.de>
14687 PR tree-optimization/109539
14688 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
14689 Re-implement pointer relatedness for PHIs.
14691 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
14693 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
14694 (SV_FP): New iterator.
14695 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
14696 (recip<mode>2): Unify the two patterns using SV_FP.
14697 (div_scale<mode><exec_vcc>): New insn.
14698 (div_fmas<mode><exec>): New insn.
14699 (div_fixup<mode><exec>): New insn.
14700 (div<mode>3): Unify the two expanders and rewrite using hardfp.
14701 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
14702 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
14703 and UNSPEC_DIV_FIXUP.
14704 (vccwait): New attribute.
14706 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14708 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
14709 if the argument matches that.
14711 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14713 * config/aarch64/atomics.md
14714 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
14715 Use SD_HSDI for destination mode iterator.
14717 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
14719 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
14720 of z-extensions and s-extensions.
14721 (riscv_subset_list::parse): Likewise.
14723 2023-04-18 Jakub Jelinek <jakub@redhat.com>
14725 PR tree-optimization/109240
14726 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
14727 first vec_perm operand and minus as second using fneg/fadd and
14728 minus as first vec_perm operand and plus as second using fneg/fsub.
14730 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14732 * data-streamer.cc (bp_pack_real_value): New.
14733 (bp_unpack_real_value): New.
14734 * data-streamer.h (bp_pack_real_value): New.
14735 (bp_unpack_real_value): New.
14736 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
14737 bp_unpack_real_value.
14738 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
14739 bp_pack_real_value.
14741 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14743 * wide-int.h (WIDE_INT_MAX_HWIS): New.
14744 (class fixed_wide_int_storage): Use it.
14745 (trailing_wide_ints <N>::set_precision): Use it.
14746 (trailing_wide_ints <N>::extra_size): Use it.
14748 2023-04-18 Xi Ruoyao <xry111@xry111.site>
14750 * config/loongarch/loongarch-protos.h
14751 (loongarch_addu16i_imm12_operand_p): New function prototype.
14752 (loongarch_split_plus_constant): Likewise.
14753 * config/loongarch/loongarch.cc
14754 (loongarch_addu16i_imm12_operand_p): New function.
14755 (loongarch_split_plus_constant): Likewise.
14756 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
14757 (DUAL_IMM12_OPERAND): Likewise.
14758 (DUAL_ADDU16I_OPERAND): Likewise.
14759 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
14761 * config/loongarch/predicates.md (const_dual_imm12_operand): New
14763 (const_addu16i_operand): Likewise.
14764 (const_addu16i_imm12_di_operand): Likewise.
14765 (const_addu16i_imm12_si_operand): Likewise.
14766 (plus_di_operand): Likewise.
14767 (plus_si_operand): Likewise.
14768 (plus_si_extend_operand): Likewise.
14769 * config/loongarch/loongarch.md (add<mode>3): Convert to
14770 define_insn_and_split. Use plus_<mode>_operand predicate
14771 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
14772 and Le constraints.
14773 (*addsi3_extended): Convert to define_insn_and_split. Use
14774 plus_si_extend_operand instead of arith_operand. Add
14775 alternatives for La and Le alternatives.
14777 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14779 * value-range.h (Value_Range::Value_Range): New.
14780 (Value_Range::contains_p): New.
14782 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
14784 * value-range.h (class vrange): Make m_discriminator const.
14785 (class irange): Make m_max_ranges const. Adjust constructors
14787 (class unsupported_range): Construct vrange appropriately.
14788 (class frange): Same.
14790 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
14792 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
14795 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
14797 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
14799 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
14801 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
14803 (riscv_expand_epilogue): Likewise.
14805 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
14807 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
14809 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
14811 2023-04-17 Andrew Pinski <apinski@marvell.com>
14813 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
14816 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
14818 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
14821 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
14823 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
14824 parameter remaining_size.
14825 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
14826 (riscv_expand_prologue): Likewise.
14827 (riscv_expand_epilogue): Likewise.
14829 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
14831 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
14832 roriw for constant counts.
14833 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
14834 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
14835 (simplify_context::simplify_binary_operation_1): Use it.
14836 * expmed.cc (expand_shift_1): Likewise.
14838 2023-04-17 Martin Jambor <mjambor@suse.cz>
14842 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
14843 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
14844 (ipa_zap_jf_refdesc): New function.
14845 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
14846 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
14847 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
14848 the new parameter of find_reference.
14849 (adjust_references_in_caller): Likewise. Make sure the constant jump
14850 function is not used to decrement a refdec counter again. Only
14851 decrement refdesc counters when the pass_through jump function allows
14852 it. Added a detailed dump when decrementing refdesc counters.
14853 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
14854 (ipa_set_jf_simple_pass_through): Initialize the new flag.
14855 (ipa_set_jf_unary_pass_through): Likewise.
14856 (ipa_set_jf_arith_pass_through): Likewise.
14857 (remove_described_reference): Provide a value for the new parameter of
14859 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
14860 the previous pass_through had a flag mandating that we do so.
14861 (propagate_controlled_uses): Likewise. Only decrement refdesc
14862 counters when the pass_through jump function allows it.
14863 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
14864 parameter of find_reference.
14865 (ipa_write_jump_function): Assert the new flag does not have to be
14867 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
14870 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
14871 Di Zhao <di.zhao@amperecomputing.com>
14873 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
14874 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
14875 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
14876 Check for the above tuning option when processing loads.
14878 2023-04-17 Richard Biener <rguenther@suse.de>
14880 PR tree-optimization/109524
14881 * tree-vrp.cc (remove_unreachable::m_list): Change to a
14882 vector of pairs of block indices.
14883 (remove_unreachable::maybe_register_block): Adjust.
14884 (remove_unreachable::remove_and_update_globals): Likewise.
14885 Deal with removed blocks.
14887 2023-04-16 Jeff Law <jlaw@ventanamicro>
14890 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
14891 TARGET_SFB_ALU, force the true arm into a register.
14893 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
14896 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
14897 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
14899 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
14900 (pa_function_arg_size): Change return type to int. Return zero
14901 for arguments larger than 1 GB. Update comments.
14903 2023-04-15 Jakub Jelinek <jakub@redhat.com>
14905 PR tree-optimization/109154
14906 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
14907 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
14909 2023-04-15 Jason Merrill <jason@redhat.com>
14912 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
14913 Overhaul lhs_ref.ref analysis.
14915 2023-04-14 Richard Biener <rguenther@suse.de>
14917 PR tree-optimization/109502
14918 * tree-vect-stmts.cc (vectorizable_assignment): Fix
14919 check for conversion between mask and non-mask types.
14921 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
14922 Jakub Jelinek <jakub@redhat.com>
14926 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
14927 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
14928 smaller than word_mode.
14929 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
14930 <case AND>: Likewise.
14932 2023-04-14 Jakub Jelinek <jakub@redhat.com>
14934 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
14937 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
14939 PR tree-optimization/108139
14940 PR tree-optimization/109462
14941 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
14942 equivalency check for PHI nodes.
14943 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
14944 does not dominate single-arg equivalency edges.
14946 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
14949 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
14950 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
14952 2023-04-13 Richard Biener <rguenther@suse.de>
14954 PR tree-optimization/109491
14955 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
14956 NULL operands test.
14958 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14961 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
14962 (vint16mf4_t): Ditto.
14963 (vint32mf2_t): Ditto.
14964 (vint64m1_t): Ditto.
14965 (vint64m2_t): Ditto.
14966 (vint64m4_t): Ditto.
14967 (vint64m8_t): Ditto.
14968 (vuint8mf8_t): Ditto.
14969 (vuint16mf4_t): Ditto.
14970 (vuint32mf2_t): Ditto.
14971 (vuint64m1_t): Ditto.
14972 (vuint64m2_t): Ditto.
14973 (vuint64m4_t): Ditto.
14974 (vuint64m8_t): Ditto.
14975 (vfloat32mf2_t): Ditto.
14976 (vbool64_t): Ditto.
14977 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
14978 (register_vector_type): Ditto.
14979 (check_required_extensions): Fix condition.
14980 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
14981 (RVV_REQUIRE_ELEN_64): New define.
14982 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
14983 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
14984 (TARGET_VECTOR_FP64): Ditto.
14985 (ENTRY): Fix predicate.
14986 * config/riscv/vector-iterators.md: Fix predicate.
14988 2023-04-12 Jakub Jelinek <jakub@redhat.com>
14990 PR tree-optimization/109410
14991 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
14992 block if first statement of the function is a call to returns_twice
14995 2023-04-12 Jakub Jelinek <jakub@redhat.com>
14998 * config/i386/i386.cc: Include rtl-error.h.
14999 (ix86_print_operand): For z modifier warning, use warning_for_asm
15000 if this_is_asm_operands. For Z modifier errors, use %c and code
15001 instead of hardcoded Z.
15003 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
15005 * config/i386/x-mingw32-utf8: Remove extrataneous $@
15007 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
15009 PR tree-optimization/109462
15010 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
15011 check for equivalences if NAME is a phi node.
15013 2023-04-12 Richard Biener <rguenther@suse.de>
15015 PR tree-optimization/109473
15016 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
15017 Convert scalar result to the computation type before performing
15018 the reduction adjustment.
15020 2023-04-12 Richard Biener <rguenther@suse.de>
15022 PR tree-optimization/109469
15023 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
15024 a returns-twice call.
15026 2023-04-12 Richard Biener <rguenther@suse.de>
15028 PR tree-optimization/109434
15029 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
15030 handle possibly throwing calls when processing the LHS
15031 and may-defs are not OK.
15033 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
15035 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
15036 predicate to avoid splitting arith constants.
15038 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
15039 Pan Li <pan2.li@intel.com>
15040 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15041 Kito Cheng <kito.cheng@sifive.com>
15044 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
15045 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
15046 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
15047 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
15048 (riscv_zero_call_used_regs): New.
15049 (TARGET_ZERO_CALL_USED_REGS): New.
15051 2023-04-11 Martin Liska <mliska@suse.cz>
15054 * opts.cc (finish_options): Drop also
15055 x_flag_var_tracking_assignments.
15057 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
15059 PR tree-optimization/108888
15060 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
15062 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
15065 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
15066 (vsx_sign_extend_v16qi_<mode>): ... this.
15067 (vsx_sign_extend_hi_<mode>): Rename to...
15068 (vsx_sign_extend_v8hi_<mode>): ... this.
15069 (vsx_sign_extend_si_v2di): Rename to...
15070 (vsx_sign_extend_v4si_v2di): ... this.
15071 (vsignextend_qi_<mode>): Remove.
15072 (vsignextend_hi_<mode>): Remove.
15073 (vsignextend_si_v2di): Remove.
15074 (vsignextend_v2di_v1ti): Remove.
15075 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
15076 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
15077 with gen_vsx_sign_extend_v16qi_v4si.
15078 * config/rs6000/rs6000.md (split for DI constant generation):
15079 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
15080 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
15081 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
15082 with gen_vsx_sign_extend_v16qi_si.
15083 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
15084 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
15085 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
15086 vsx_sign_extend_v16qi_v4si.
15087 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
15088 vsx_sign_extend_v8hi_v2di.
15089 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
15090 vsx_sign_extend_v8hi_v4si.
15091 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
15092 vsx_sign_extend_si_v2di.
15093 (__builtin_altivec_vsignext): Set bif-pattern to
15094 vsx_sign_extend_v2di_v1ti.
15095 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
15096 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
15097 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
15098 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
15100 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
15103 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
15104 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
15106 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
15108 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
15110 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
15112 * common/config/i386/cpuinfo.h (get_available_features):
15113 Detect AMX-COMPLEX.
15114 * common/config/i386/i386-common.cc
15115 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
15116 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
15117 (ix86_handle_option): Handle -mamx-complex.
15118 * common/config/i386/i386-cpuinfo.h (enum processor_features):
15119 Add FEATURE_AMX_COMPLEX.
15120 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
15122 * config.gcc: Add amxcomplexintrin.h.
15123 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
15124 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
15126 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
15127 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
15128 Handle amx-complex.
15129 * config/i386/i386.opt: Add option -mamx-complex.
15130 * config/i386/immintrin.h: Include amxcomplexintrin.h.
15131 * doc/extend.texi: Document amx-complex.
15132 * doc/invoke.texi: Document -mamx-complex.
15133 * doc/sourcebuild.texi: Document target amx-complex.
15134 * config/i386/amxcomplexintrin.h: New file.
15136 2023-04-08 Jakub Jelinek <jakub@redhat.com>
15138 PR tree-optimization/109392
15139 * tree-vect-generic.cc (tree_vec_extract): Handle failure
15140 of maybe_push_res_to_seq better.
15142 2023-04-08 Jakub Jelinek <jakub@redhat.com>
15144 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
15146 (SYSTEM_H): Depend on $(HASHTAB_H).
15147 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
15148 dependency on $(RTL_BASE_H), remove redundant dependency on
15151 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
15154 * config/arm/arm.cc (arm_effective_regno): New function.
15155 (mve_vector_mem_operand): Use it.
15157 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
15159 PR tree-optimization/109417
15160 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
15161 dependency is in SSA_NAME_FREE_LIST.
15163 2023-04-06 Andrew Pinski <apinski@marvell.com>
15165 PR tree-optimization/109427
15166 * params.opt (-param=vect-induction-float=):
15167 Fix option attribute typo for IntegerRange.
15169 2023-04-05 Jeff Law <jlaw@ventanamicro>
15172 * combine.cc (combine_instructions): Force re-recognition when
15173 after restoring the body of an insn to its original form.
15175 2023-04-05 Martin Jambor <mjambor@suse.cz>
15178 * ipa-sra.cc (zap_useless_ipcp_results): New function.
15179 (process_isra_node_results): Call it.
15181 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15183 * config/riscv/vector.md: Fix incorrect operand order.
15185 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15187 * config/riscv/riscv-vsetvl.cc
15188 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
15191 2023-04-05 Li Xu <xuli1@eswincomputing.com>
15193 * config/riscv/riscv-vector-builtins.def: Fix typo.
15194 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
15195 * config/riscv/vector-iterators.md: Ditto.
15197 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
15199 * doc/md.texi (Including Patterns): Fix page break.
15201 2023-04-04 Jakub Jelinek <jakub@redhat.com>
15203 PR tree-optimization/109386
15204 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
15205 foperator_le::op1_range, foperator_le::op2_range,
15206 foperator_gt::op1_range, foperator_gt::op2_range,
15207 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
15208 BRS_FALSE case even if the other op is maybe_isnan, not just
15210 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
15211 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
15212 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
15213 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
15214 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
15215 not just known_isnan.
15217 2023-04-04 Marek Polacek <polacek@redhat.com>
15219 PR sanitizer/109107
15220 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
15222 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
15224 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
15226 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
15227 (mve_vcreateq_f<mode>): Swap operands.
15229 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
15231 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
15233 2023-04-04 Jakub Jelinek <jakub@redhat.com>
15236 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
15237 Reword diagnostics about zfinx conflict with f, formatting fixes.
15239 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
15241 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
15243 2023-04-04 Richard Biener <rguenther@suse.de>
15245 PR tree-optimization/109304
15246 * tree-profile.cc (tree_profiling): Use symtab node
15247 availability to decide whether to skip adjusting calls.
15248 Do not adjust calls to internal functions.
15250 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
15253 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
15254 function for permutation control vector by considering big endianness.
15256 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
15259 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
15260 (rs6000_vprtyb<mode>2): ... this.
15261 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
15262 rs6000_vprtybv2di2.
15263 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
15264 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
15265 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
15266 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
15268 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
15269 Sandra Loosemore <sandra@codesourcery.com>
15271 * doc/md.texi (Insn Splitting): Tweak wording for readability.
15273 2023-04-03 Martin Jambor <mjambor@suse.cz>
15276 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
15277 offset + size will be representable in unsigned int.
15279 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
15281 * configure.ac (ZSTD_LIB): Move before zstd.h check.
15282 Unset gcc_cv_header_zstd_h without libzstd.
15283 * configure: Regenerate.
15285 2023-04-03 Martin Liska <mliska@suse.cz>
15287 * doc/invoke.texi: Document new param.
15289 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
15291 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
15292 new check_effective_target function.
15294 2023-04-03 Li Xu <xuli1@eswincomputing.com>
15296 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
15297 (vfloat32m8_t): Likewise
15299 2023-04-03 liuhongt <hongtao.liu@intel.com>
15301 * doc/md.texi: Document signbitm2.
15303 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15304 kito-cheng <kito.cheng@sifive.com>
15306 * config/riscv/vector.md: Fix RA constraint.
15308 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
15310 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
15311 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
15312 * config/riscv/vector.md: Fix scalar move bug.
15314 2023-04-01 Jakub Jelinek <jakub@redhat.com>
15316 * range-op-float.cc (foperator_equal::fold_range): If at least
15317 one of the op ranges is not singleton and neither is NaN and all
15318 4 bounds are zero, return [1, 1].
15319 (foperator_not_equal::fold_range): In the same case return [0, 0].
15321 2023-04-01 Jakub Jelinek <jakub@redhat.com>
15323 * range-op-float.cc (foperator_equal::fold_range): Perform the
15324 non-singleton handling regardless of maybe_isnan (op1, op2).
15325 (foperator_not_equal::fold_range): Likewise.
15326 (foperator_lt::fold_range, foperator_le::fold_range,
15327 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
15328 real_* comparison check which results in range_false (type)
15329 even if maybe_isnan (op1, op2). Simplify.
15330 (foperator_ltgt): New class.
15331 (fop_ltgt): New variable.
15332 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
15335 2023-04-01 Jakub Jelinek <jakub@redhat.com>
15338 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
15339 returns VOIDmode, handle it like if the register isn't used for
15340 passing arguments at all.
15341 (apply_result_size): If targetm.calls.get_raw_result_mode returns
15342 VOIDmode, handle it like if the register isn't used for returning
15344 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
15345 means to return VOIDmode.
15346 * doc/tm.texi: Regenerated.
15347 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
15348 TARGET_SVE for P0_REGNUM.
15349 (aarch64_function_arg_regno_p): Also return true for p0-p3.
15350 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
15352 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
15354 * lra-constraints.cc: (combine_reload_insn): New function.
15356 2023-03-31 Jakub Jelinek <jakub@redhat.com>
15358 PR tree-optimization/91645
15359 * range-op-float.cc (foperator_unordered_lt::fold_range,
15360 foperator_unordered_le::fold_range,
15361 foperator_unordered_gt::fold_range,
15362 foperator_unordered_ge::fold_range,
15363 foperator_unordered_equal::fold_range): Call the ordered
15364 fold_range on ranges with cleared NaNs.
15365 * value-query.cc (range_query::get_tree_range): Handle also
15366 COMPARISON_CLASS_P trees.
15368 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
15369 Andrew Pinski <pinskia@gmail.com>
15372 * config/riscv/t-riscv: Add missing dependencies.
15374 2023-03-31 liuhongt <hongtao.liu@intel.com>
15376 * config/i386/i386.cc (inline_memory_move_cost): Return 100
15377 for MASK_REGS when MODE_SIZE > 8.
15379 2023-03-31 liuhongt <hongtao.liu@intel.com>
15382 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
15383 ufloat/ufix to floatuns/fixuns.
15384 * config/i386/i386-expand.cc
15385 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
15386 * config/i386/sse.md
15387 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
15389 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
15390 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
15392 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
15394 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
15396 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
15397 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
15398 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
15399 (ufloatv2siv2df2<mask_name>): Renamed to ..
15400 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
15401 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
15403 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
15405 (ufix_notruncv2dfv2si2): Renamed to ..
15406 (fixuns_notruncv2dfv2si2):.. this.
15407 (ufix_notruncv2dfv2si2_mask): Renamed to ..
15408 (fixuns_notruncv2dfv2si2_mask): .. this.
15409 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
15410 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
15411 (ufix_truncv2dfv2si2): Renamed to ..
15412 (*fixuns_truncv2dfv2si2): .. this.
15413 (ufix_truncv2dfv2si2_mask): Renamed to ..
15414 (fixuns_truncv2dfv2si2_mask): .. this.
15415 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
15416 (*fixuns_truncv2dfv2si2_mask_1): .. this.
15417 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
15418 (fixuns_truncv4dfv4si2<mask_name>): .. this.
15419 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
15421 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
15423 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
15424 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
15427 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
15429 PR tree-optimization/109154
15430 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
15431 * gimple-range-gori.h (may_recompute_p): Add depth param.
15432 * params.opt (ranger-recompute-depth): New param.
15434 2023-03-30 Jason Merrill <jason@redhat.com>
15438 * cgraph.h: Move reset() from cgraph_node to symtab_node.
15439 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
15440 remove_from_same_comdat_group.
15442 2023-03-30 Richard Biener <rguenther@suse.de>
15444 PR tree-optimization/107561
15445 * gimple-ssa-warn-access.cc (get_size_range): Add flags
15446 argument and pass it on.
15447 (check_access): When querying for the size range pass
15448 SR_ALLOW_ZERO when the known destination size is zero.
15450 2023-03-30 Richard Biener <rguenther@suse.de>
15452 PR tree-optimization/109342
15453 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
15454 overload for edge. When that edge is a backedge use
15455 dominated_by_p directly.
15457 2023-03-30 liuhongt <hongtao.liu@intel.com>
15459 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
15460 vpblendd instead of vpblendw for V4SI under avx2.
15462 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
15464 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
15465 for many quick operands, for register-sized modes.
15467 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
15469 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
15472 2023-03-29 Martin Liska <mliska@suse.cz>
15474 PR bootstrap/109310
15475 * configure.ac: Emit a warning for deprecated option
15476 --enable-link-mutex.
15477 * configure: Regenerate.
15479 2023-03-29 Richard Biener <rguenther@suse.de>
15481 PR tree-optimization/109331
15482 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
15483 discover a taken edge make sure to cleanup the CFG.
15485 2023-03-29 Richard Biener <rguenther@suse.de>
15487 PR tree-optimization/109327
15488 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
15489 already removed stmts when draining to_remove.
15491 2023-03-29 Richard Biener <rguenther@suse.de>
15494 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
15495 so we can re-create the DIE for the type if required.
15497 2023-03-29 Jakub Jelinek <jakub@redhat.com>
15498 Richard Biener <rguenther@suse.de>
15500 PR tree-optimization/109301
15501 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
15502 properties_provided from PROP_gimple_opt_math to 0.
15503 (pass_data_expand_powcabs): Change properties_provided from 0 to
15504 PROP_gimple_opt_math.
15506 2023-03-29 Richard Biener <rguenther@suse.de>
15508 PR tree-optimization/109154
15509 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
15510 inverted condition specially by inverting at the caller.
15511 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
15513 2023-03-28 David Malcolm <dmalcolm@redhat.com>
15516 * diagnostic-show-locus.cc (column_range::column_range): Factor
15517 out assertion conditional into...
15518 (column_range::valid_p): ...this new function.
15519 (line_corrections::add_hint): Don't attempt to consolidate hints
15520 if it would lead to invalid column_range instances.
15522 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
15525 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
15526 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
15529 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
15531 PR rtl-optimization/109187
15532 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
15533 subtraction in three-way comparison.
15535 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
15537 PR tree-optimization/109265
15538 PR tree-optimization/109274
15539 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
15540 not create a relation record is op1 and op2 are the same symbol.
15541 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
15542 handler for this stmt, but create a new record only if this statement
15543 generates a relation based on the ranges.
15544 (gori_compute::compute_operand2_range): Ditto.
15545 * value-relation.h (value_relation::set_relation): Always create the
15546 record that is requested.
15548 2023-03-28 Richard Biener <rguenther@suse.de>
15550 PR tree-optimization/107087
15551 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
15552 executable regions to avoid useless work and to better
15553 propagate degenerate PHIs.
15555 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
15557 * config/i386/x-mingw32-utf8: update comments.
15559 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
15562 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
15563 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
15565 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
15567 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
15568 after inlining. Record which decls are loaded from. Fix handling
15569 of vops for loads and stores.
15570 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
15571 (aarch64_accesses_vector_load_decl_p): Likewise.
15572 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
15574 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
15575 that loads from a decl, treat vector stores to those decls as
15577 (aarch64_vector_costs::finish_cost): ...and in that case,
15578 if the vector code does nothing more than a store, give the
15579 prologue a zero cost as well.
15581 2023-03-28 Richard Biener <rguenther@suse.de>
15584 PR tree-optimization/108129
15585 * genmatch.cc (lower_for): For (match ...) delay
15586 substituting into the match operator if possible.
15587 (dt_operand::gen_gimple_expr): For user_id look at the
15588 first substitute for determining how to access operands.
15589 (dt_operand::gen_generic_expr): Likewise.
15590 (dt_node::gen_kids): Properly sort user_ids according
15591 to their substitutes.
15592 (dt_node::gen_kids_1): Code-generate user_id matching.
15594 2023-03-28 Jakub Jelinek <jakub@redhat.com>
15595 Jonathan Wakely <jwakely@redhat.com>
15597 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
15598 Use subcommand rather than sub-command in function comments.
15600 2023-03-28 Jakub Jelinek <jakub@redhat.com>
15602 PR tree-optimization/109154
15603 * value-range.h (frange::flush_denormals_to_zero): Make it public
15604 rather than private.
15605 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
15607 * range-op-float.cc (range_operator_float::fold_range): Call
15608 flush_denormals_to_zero.
15610 2023-03-28 Jakub Jelinek <jakub@redhat.com>
15612 PR middle-end/106190
15613 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
15614 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
15616 2023-03-28 Jakub Jelinek <jakub@redhat.com>
15618 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
15619 as 4th argument to set to avoid clear_nan and union_ calls.
15621 2023-03-28 Jakub Jelinek <jakub@redhat.com>
15624 * config/i386/i386.cc (assign_386_stack_local): For DImode
15625 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
15626 align 32 rather than 0 to assign_stack_local.
15628 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
15631 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
15632 on operand #3 to get the final condition code. Use std::swap.
15633 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
15634 (fucmp<gcond:code>8<P:mode>_vis): Move around.
15635 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
15636 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
15638 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
15640 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
15641 top-level sections.
15643 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
15645 * config.host: Pull in i386/x-mingw32-utf8 Makefile
15646 fragment and reference utf8rc-mingw32.o explicitly
15648 * config/i386/sym-mingw32.cc: prevent name mangling of
15650 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
15651 depend on manifest file explicitly.
15653 2023-03-28 Richard Biener <rguenther@suse.de>
15656 2023-03-27 Richard Biener <rguenther@suse.de>
15658 PR rtl-optimization/109237
15659 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
15661 2023-03-28 Richard Biener <rguenther@suse.de>
15663 * common.opt (gdwarf): Remove Negative(gdwarf-).
15665 2023-03-28 Richard Biener <rguenther@suse.de>
15667 * common.opt (gdwarf): Add RejectNegative.
15668 (gdwarf-): Likewise.
15672 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
15674 * config/cris/constraints.md ("T"): Correct to
15675 define_memory_constraint.
15677 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
15679 * config/cris/cris.md (BW2): New mode-iterator.
15680 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
15683 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
15685 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
15686 for possible eliminable compares.
15688 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
15690 * config/cris/constraints.md ("R"): Remove unused constraint.
15692 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
15694 PR gcov-profile/109297
15695 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
15696 (merge_stream_usage): Likewise.
15697 (overlap_usage): Likewise.
15699 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
15702 * config/riscv/thead.md: Add missing mode specifiers.
15704 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
15705 Jiangning Liu <jiangning.liu@amperecomputing.com>
15706 Manolis Tsamis <manolis.tsamis@vrull.eu>
15708 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
15710 2023-03-27 Richard Biener <rguenther@suse.de>
15712 PR rtl-optimization/109237
15713 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
15715 2023-03-27 Richard Biener <rguenther@suse.de>
15718 * lto-wrapper.cc (run_gcc): Parse alternate debug options
15719 as well, they always enable debug.
15721 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
15724 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
15726 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
15728 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
15731 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
15732 than zero when calling vec_sld.
15733 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
15734 zero when calling vec_sld.
15735 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
15736 than zero when calling vec_sld.
15738 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
15740 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
15741 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
15742 loops are represented and which fields are vectors. Add
15743 documentation for OMP_FOR_PRE_BODY field. Document internal
15744 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
15745 * tree.def (OMP_FOR): Make documentation consistent with the
15746 Texinfo manual, to fill some gaps and correct errors.
15748 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
15751 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
15752 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
15753 (handle_move_double): Call it before handle_movsi.
15754 * config/m68k/m68k-protos.h: Declare it.
15756 2023-03-26 Jakub Jelinek <jakub@redhat.com>
15758 PR tree-optimization/109230
15759 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
15761 2023-03-26 Jakub Jelinek <jakub@redhat.com>
15764 * predict.cc (compute_function_frequency): Don't call
15765 warn_function_cold if function already has cold attribute.
15767 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
15769 * doc/install.texi: Remove anachronistic note
15770 related to languages built and separate source tarballs.
15772 2023-03-25 David Malcolm <dmalcolm@redhat.com>
15775 * diagnostic-format-sarif.cc (read_until_eof): Delete.
15776 (maybe_read_file): Delete.
15777 (sarif_builder::maybe_make_artifact_content_object): Use
15778 get_source_file_content rather than maybe_read_file.
15779 Reject it if it's not valid UTF-8.
15780 * input.cc (file_cache_slot::get_full_file_content): New.
15781 (get_source_file_content): New.
15782 (selftest::check_cpp_valid_utf8_p): New.
15783 (selftest::test_cpp_valid_utf8_p): New.
15784 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
15785 * input.h (get_source_file_content): New prototype.
15787 2023-03-24 David Malcolm <dmalcolm@redhat.com>
15789 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
15791 (Special Functions for Debugging the Analyzer): Convert to a
15792 table, and rewrite in places.
15793 (Other Debugging Techniques): Add notes on how to compare two
15794 different exploded graphs.
15796 2023-03-24 David Malcolm <dmalcolm@redhat.com>
15799 * json.cc: Update comments to indicate that we now preserve
15800 insertion order of keys within objects.
15801 (object::print): Traverse keys in insertion order.
15802 (object::set): Preserve insertion order of keys.
15803 (selftest::test_writing_objects): Add an additional key to verify
15804 that we preserve insertion order.
15805 * json.h (object::m_keys): New field.
15807 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
15809 PR tree-optimization/109238
15810 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
15811 predecessors which this block dominates.
15813 2023-03-24 Richard Biener <rguenther@suse.de>
15815 PR tree-optimization/106912
15816 * tree-profile.cc (tree_profiling): Update stmts only when
15817 profiling or testing coverage. Make sure to update calls
15818 fntype, stripping 'const' there.
15820 2023-03-24 Jakub Jelinek <jakub@redhat.com>
15822 PR middle-end/109258
15823 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
15824 if target == const0_rtx.
15826 2023-03-24 Alexandre Oliva <oliva@adacore.com>
15828 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
15829 Document options and effective targets.
15831 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
15833 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
15836 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
15838 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
15839 non-earlyclobber alternative.
15841 2023-03-23 Andrew Pinski <apinski@marvell.com>
15844 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
15847 2023-03-23 Richard Biener <rguenther@suse.de>
15849 PR tree-optimization/107569
15850 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
15851 Do not push SSA names with zero uses as available leader.
15852 (process_bb): Likewise.
15854 2023-03-23 Richard Biener <rguenther@suse.de>
15856 PR tree-optimization/109262
15857 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
15858 combining a piecewise complex load avoid touching loads
15859 that throw internally. Use fun, not cfun throughout.
15861 2023-03-23 Jakub Jelinek <jakub@redhat.com>
15863 * value-range.cc (irange::irange_union, irange::intersect): Fix
15864 comment spelling bugs.
15865 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
15866 * gimple-range-trace.h: Likewise.
15867 * gimple-range-edge.cc: Likewise.
15868 (gimple_outgoing_range_stmt_p,
15869 gimple_outgoing_range::switch_edge_range,
15870 gimple_outgoing_range::edge_range_p): Likewise.
15871 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
15872 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
15873 assume_query::assume_query, assume_query::calculate_phi): Likewise.
15874 * gimple-range-edge.h: Likewise.
15875 * value-range.h (Value_Range::set, Value_Range::lower_bound,
15876 Value_Range::upper_bound, frange::set_undefined): Likewise.
15877 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
15878 gori_compute): Likewise.
15879 * gimple-range-fold.h (fold_using_range): Likewise.
15880 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
15882 * gimple-range-gori.cc (range_def_chain::in_chain_p,
15883 range_def_chain::dump, gori_map::calculate_gori,
15884 gori_compute::compute_operand_range_switch,
15885 gori_compute::logical_combine, gori_compute::refine_using_relation,
15886 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
15888 * gimple-range.h: Likewise.
15889 (enable_ranger): Likewise.
15890 * range-op.h (empty_range_varying): Likewise.
15891 * value-query.h (value_query): Likewise.
15892 * gimple-range-cache.cc (block_range_cache::set_bb_range,
15893 block_range_cache::dump, ssa_global_cache::clear_global_range,
15894 temporal_cache::temporal_value, temporal_cache::current_p,
15895 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
15896 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
15898 * gimple-range-fold.cc (fur_edge::get_phi_operand,
15899 fur_stmt::get_operand, gimple_range_adjustment,
15900 fold_using_range::range_of_phi,
15901 fold_using_range::relation_fold_and_or): Likewise.
15902 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
15903 * value-query.cc (range_query::value_of_expr,
15904 range_query::value_on_edge, range_query::query_relation): Likewise.
15905 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
15906 intersect_range_with_nonzero_bits): Likewise.
15907 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
15908 exit_range): Likewise.
15909 * value-relation.h: Likewise.
15910 (equiv_oracle, relation_trio::relation_trio, value_relation,
15911 value_relation::value_relation, pe_min): Likewise.
15912 * range-op-float.cc (range_operator_float::rv_fold,
15913 frange_arithmetic, foperator_unordered_equal::op1_range,
15914 foperator_div::rv_fold): Likewise.
15915 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
15916 * value-relation.cc (equiv_oracle::query_relation,
15917 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
15918 value_relation::apply_transitive, relation_chain_head::find_relation,
15919 dom_oracle::query_relation, dom_oracle::find_relation_block,
15920 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
15921 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
15922 create_possibly_reversed_range, adjust_op1_for_overflow,
15923 operator_mult::wi_fold, operator_exact_divide::op1_range,
15924 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
15925 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
15926 range_op_lshift_tests): Likewise.
15928 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
15930 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
15931 (move_callee_saved_registers): Detect the bug condition early.
15933 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
15935 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
15936 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
15938 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
15939 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
15940 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
15941 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
15942 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
15944 2023-03-23 Jakub Jelinek <jakub@redhat.com>
15946 PR tree-optimization/109176
15947 * tree-vect-generic.cc (expand_vector_condition): If a has
15948 vector boolean type and is a comparison, also check if both
15949 the comparison and VEC_COND_EXPR could be successfully expanded
15952 2023-03-23 Pan Li <pan2.li@intel.com>
15953 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15957 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
15958 for vector mask modes.
15959 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
15960 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
15962 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
15964 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
15966 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15969 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
15970 (emit_vlmax_op): Ditto.
15971 * config/riscv/riscv-v.cc (get_sew): New function.
15972 (emit_vlmax_vsetvl): Adapt function.
15973 (emit_pred_op): Ditto.
15974 (emit_vlmax_op): Ditto.
15975 (emit_nonvlmax_op): Ditto.
15976 (legitimize_move): Fix LRA ICE.
15977 (gen_no_side_effects_vsetvl_rtx): Adapt function.
15978 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
15979 (@mov<VB:mode><P:mode>_lra): Ditto.
15980 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
15981 (*mov<VB:mode><P:mode>_lra): Ditto.
15983 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15986 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
15987 __riscv_vlenb support.
15989 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15990 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
15991 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
15993 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15994 * config/riscv/riscv-vector-builtins.cc: Ditto.
15996 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15997 kito-cheng <kito.cheng@sifive.com>
15999 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
16000 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
16001 (pass_vsetvl::need_vsetvl): Fix bugs.
16002 (pass_vsetvl::backward_demand_fusion): Fix bugs.
16003 (pass_vsetvl::demand_fusion): Fix bugs.
16004 (eliminate_insn): Fix bugs.
16005 (insert_vsetvl): Ditto.
16006 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
16007 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
16008 * config/riscv/vector.md: Ditto.
16010 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16011 kito-cheng <kito.cheng@sifive.com>
16013 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
16014 * config/riscv/vector-iterators.md (nmsac): Ditto.
16020 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
16021 (@pred_mul_plus<mode>): Ditto.
16022 (*pred_madd<mode>): Ditto.
16023 (*pred_macc<mode>): Ditto.
16024 (*pred_mul_plus<mode>): Ditto.
16025 (@pred_mul_plus<mode>_scalar): Ditto.
16026 (*pred_madd<mode>_scalar): Ditto.
16027 (*pred_macc<mode>_scalar): Ditto.
16028 (*pred_mul_plus<mode>_scalar): Ditto.
16029 (*pred_madd<mode>_extended_scalar): Ditto.
16030 (*pred_macc<mode>_extended_scalar): Ditto.
16031 (*pred_mul_plus<mode>_extended_scalar): Ditto.
16032 (@pred_minus_mul<mode>): Ditto.
16033 (*pred_<madd_nmsub><mode>): Ditto.
16034 (*pred_nmsub<mode>): Ditto.
16035 (*pred_<macc_nmsac><mode>): Ditto.
16036 (*pred_nmsac<mode>): Ditto.
16037 (*pred_mul_<optab><mode>): Ditto.
16038 (*pred_minus_mul<mode>): Ditto.
16039 (@pred_mul_<optab><mode>_scalar): Ditto.
16040 (@pred_minus_mul<mode>_scalar): Ditto.
16041 (*pred_<madd_nmsub><mode>_scalar): Ditto.
16042 (*pred_nmsub<mode>_scalar): Ditto.
16043 (*pred_<macc_nmsac><mode>_scalar): Ditto.
16044 (*pred_nmsac<mode>_scalar): Ditto.
16045 (*pred_mul_<optab><mode>_scalar): Ditto.
16046 (*pred_minus_mul<mode>_scalar): Ditto.
16047 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
16048 (*pred_nmsub<mode>_extended_scalar): Ditto.
16049 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
16050 (*pred_nmsac<mode>_extended_scalar): Ditto.
16051 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
16052 (*pred_minus_mul<mode>_extended_scalar): Ditto.
16053 (*pred_<madd_msub><mode>): Ditto.
16054 (*pred_<macc_msac><mode>): Ditto.
16055 (*pred_<madd_msub><mode>_scalar): Ditto.
16056 (*pred_<macc_msac><mode>_scalar): Ditto.
16057 (@pred_neg_mul_<optab><mode>): Ditto.
16058 (@pred_mul_neg_<optab><mode>): Ditto.
16059 (*pred_<nmadd_msub><mode>): Ditto.
16060 (*pred_<nmsub_nmadd><mode>): Ditto.
16061 (*pred_<nmacc_msac><mode>): Ditto.
16062 (*pred_<nmsac_nmacc><mode>): Ditto.
16063 (*pred_neg_mul_<optab><mode>): Ditto.
16064 (*pred_mul_neg_<optab><mode>): Ditto.
16065 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
16066 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
16067 (*pred_<nmadd_msub><mode>_scalar): Ditto.
16068 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
16069 (*pred_<nmacc_msac><mode>_scalar): Ditto.
16070 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
16071 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
16072 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
16073 (@pred_widen_neg_mul_<optab><mode>): Ditto.
16074 (@pred_widen_mul_neg_<optab><mode>): Ditto.
16075 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
16076 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
16078 2023-03-23 liuhongt <hongtao.liu@intel.com>
16080 * builtins.cc (builtin_memset_read_str): Replace
16081 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
16082 (builtin_memset_gen_str): Ditto.
16083 * config/i386/i386-expand.cc
16084 (ix86_convert_const_wide_int_to_broadcast): Replace
16085 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
16086 (ix86_expand_vector_move): Ditto.
16087 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
16089 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
16090 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
16091 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
16092 * doc/tm.texi.in: Ditto.
16093 * target.def: Ditto.
16095 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
16097 * lra.cc (lra): Do not repeat inheritance and live range splitting
16098 when asm error is found.
16100 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
16102 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
16103 (gcn_expand_dpp_distribute_even_insn)
16104 (gcn_expand_dpp_distribute_odd_insn): Declare.
16105 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
16106 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
16107 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
16108 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
16109 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
16110 (fms<mode>4_negop2): New patterns.
16111 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
16112 (gcn_expand_dpp_distribute_even_insn)
16113 (gcn_expand_dpp_distribute_odd_insn): New functions.
16114 * config/gcn/gcn.md: Add entries to unspec enum.
16116 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
16118 PR tree-optimization/109008
16119 * value-range.cc (frange::set): Add nan_state argument.
16120 * value-range.h (class nan_state): New.
16121 (frange::get_nan_state): New.
16123 2023-03-22 Martin Liska <mliska@suse.cz>
16125 * configure: Regenerate.
16127 2023-03-21 Joseph Myers <joseph@codesourcery.com>
16129 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
16132 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
16134 PR tree-optimization/109192
16135 * gimple-range-gori.cc (gori_compute::compute_operand_range):
16136 Terminate gori calculations if a relation is not relevant.
16137 * value-relation.h (value_relation::set_relation): Allow
16138 equality between op1 and op2 if they are the same.
16140 2023-03-21 Richard Biener <rguenther@suse.de>
16142 PR tree-optimization/109219
16143 * tree-vect-loop.cc (vectorizable_reduction): Check
16144 slp_node, not STMT_SLP_TYPE.
16145 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
16146 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
16147 Remove assertion on STMT_SLP_TYPE.
16149 2023-03-21 Jakub Jelinek <jakub@redhat.com>
16151 PR tree-optimization/109215
16152 * tree.h (enum special_array_member): Adjust comments for int_0
16154 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
16155 has zero sized element type and the array has variable number of
16156 elements or constant one or more elements.
16157 (component_ref_size): Adjust comments, formatting fix.
16159 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16161 * configure.ac: Add check for the Texinfo 6.8
16162 CONTENTS_OUTPUT_LOCATION customization variable and set it if
16164 * configure: Regenerate.
16165 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
16166 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
16167 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
16168 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
16170 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16172 * doc/extend.texi: Associate use_hazard_barrier_return index
16173 entry with its attribute.
16174 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
16177 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16179 * doc/implement-c.texi: Remove usage of @gol.
16180 * doc/invoke.texi: Ditto.
16181 * doc/sourcebuild.texi: Ditto.
16182 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
16183 texinfo.tex versions, the bug it was working around appears to
16186 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16188 * doc/include/texinfo.tex: Update to 2023-01-17.19.
16190 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16192 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
16193 @enddefbuiltin for defining built-in functions.
16194 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
16195 places where it should be used.
16197 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16199 * doc/extend.texi (Formatted Output Function Checking): New
16200 subsection for grouping together printf et al.
16201 (Exception handling) Fix missing @ sign before copyright
16202 header, which lead to the copyright line leaking into
16203 '(gcc)Exception handling'.
16204 * doc/gcc.texi: Set document language to en_US.
16205 (@copying): Wrap front cover texts in quotations, move in manual
16208 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
16210 * doc/gcc.texi: Add the Indices appendix, to make texinfo
16211 generate nice indices overview page.
16213 2023-03-21 Richard Biener <rguenther@suse.de>
16215 PR tree-optimization/109170
16216 * gimple-range-op.cc (cfn_pass_through_arg1): New.
16217 (gimple_range_op_handler::maybe_builtin_call): Handle
16218 __builtin_expect via cfn_pass_through_arg1.
16220 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
16223 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
16224 (init_float128_ieee): Delete code to switch complex multiply and divide
16226 (complex_multiply_builtin_code): New helper function.
16227 (complex_divide_builtin_code): Likewise.
16228 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
16229 of complex 128-bit multiply and divide built-in functions.
16231 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
16234 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
16236 2023-03-19 Jonny Grant <jg@jguk.org>
16238 * doc/extend.texi (Common Function Attributes) <nonnull>:
16241 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
16243 PR rtl-optimization/109179
16244 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
16245 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
16247 2023-03-17 Jakub Jelinek <jakub@redhat.com>
16250 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
16252 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
16253 to allocate_struct_function instead of false.
16254 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
16255 nor DECL_RESULT here. Pass true as ABSTRACT_P to
16256 push_struct_function. Call targetm.target_option.relayout_function
16258 (tree_function_versioning): Formatting fix.
16260 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
16262 * lra-constraints.cc: Include hooks.h.
16263 (combine_reload_insn): New function.
16264 (lra_constraints): Call it.
16266 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16267 kito-cheng <kito.cheng@sifive.com>
16269 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
16270 as legitimate value.
16271 * config/riscv/riscv-vector-builtins.cc
16272 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
16273 (function_expander::use_widen_ternop_insn): Ditto.
16274 * config/riscv/vector.md (@vundefined<mode>): New pattern.
16275 (pred_mul_<optab><mode>_undef_merge): Remove.
16276 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
16277 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
16278 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
16279 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
16281 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16284 * config/riscv/riscv.md: Fix subreg bug.
16286 2023-03-17 Jakub Jelinek <jakub@redhat.com>
16288 PR middle-end/108685
16289 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
16290 use its loop_father rather than BODY_BB's loop_father.
16291 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
16292 If broken_loop with ordered > collapse and at least one of those
16293 extra loops aren't guaranteed to have at least one iteration, change
16294 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
16295 loop_father to l0_bb's loop_father rather than l1_bb's.
16297 2023-03-17 Jakub Jelinek <jakub@redhat.com>
16300 * gdbhooks.py (TreePrinter.to_string): Wrap
16301 gdb.parse_and_eval('tree_code_type') in a try block, parse
16302 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
16303 raises exception. Update comments for the recent tree_code_type
16306 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
16308 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
16309 issues. Add more line breaks to example so it doesn't overflow
16312 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
16314 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
16315 line breaks in examples.
16316 <malloc>: Fix bad line breaks in running text, also copy-edit
16318 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
16319 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
16321 (C++ Dialect Options) <-fcontracts>: Add line break in example.
16322 <-Wctad-maybe-unsupported>: Likewise.
16323 <-Winvalid-constexpr>: Likewise.
16324 (Warning Options) <-Wdangling-pointer>: Likewise.
16325 <-Winterference-size>: Likewise.
16326 <-Wvla-parameter>: Likewise.
16327 (Static Analyzer Options): Fix bad line breaks in running text,
16328 plus add some missing markup.
16329 (Optimize Options) <openacc-privatization>: Fix more bad line
16330 breaks in running text.
16332 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
16334 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
16335 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
16336 (expand_vec_perm_2perm_pblendv): Ditto.
16338 2023-03-16 Martin Liska <mliska@suse.cz>
16340 PR middle-end/106133
16341 * gcc.cc (driver_handle_option): Use x_main_input_basename
16342 if x_dump_base_name is null.
16343 * opts.cc (common_handle_option): Likewise.
16345 2023-03-16 Richard Biener <rguenther@suse.de>
16347 PR tree-optimization/109123
16348 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
16349 Do not emit -Wuse-after-free late.
16350 (pass_waccess::check_call): Always check call pointer uses.
16352 2023-03-16 Richard Biener <rguenther@suse.de>
16354 PR tree-optimization/109141
16355 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
16356 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
16358 (renumber_gimple_stmt_uids): ... here and
16359 (renumber_gimple_stmt_uids_in_blocks): ... here.
16360 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
16361 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
16363 (pass_waccess::check_pointer_uses): Process all PHIs.
16365 2023-03-15 David Malcolm <dmalcolm@redhat.com>
16368 * diagnostic-format-sarif.cc (class sarif_invocation): New.
16369 (class sarif_ice_notification): New.
16370 (sarif_builder::m_invocation_obj): New field.
16371 (sarif_invocation::add_notification_for_ice): New.
16372 (sarif_invocation::prepare_to_flush): New.
16373 (sarif_ice_notification::sarif_ice_notification): New.
16374 (sarif_builder::sarif_builder): Add m_invocation_obj.
16375 (sarif_builder::end_diagnostic): Special-case DK_ICE and
16377 (sarif_builder::flush_to_file): Call prepare_to_flush on
16378 m_invocation_obj. Pass the latter to make_top_level_object.
16379 (sarif_builder::make_result_object): Move creation of "locations"
16381 (sarif_builder::make_locations_arr): ...this new function.
16382 (sarif_builder::make_top_level_object): Add "invocation_obj" param
16383 and pass it to make_run_object.
16384 (sarif_builder::make_run_object): Add "invocation_obj" param and
16386 (sarif_ice_handler): New callback.
16387 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
16388 * diagnostic.cc (diagnostic_initialize): Initialize new field
16390 (diagnostic_action_after_output): If it is set, make one attempt
16391 to call ice_handler_cb.
16392 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
16394 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
16396 * config/i386/i386-expand.cc (expand_vec_perm_blend):
16397 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
16398 and fix V2HImode handling.
16399 (expand_vec_perm_1): Try to emit BLEND instruction
16400 before MOVSS/MOVSD.
16401 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
16403 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
16405 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
16407 2023-03-15 Richard Biener <rguenther@suse.de>
16409 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
16410 Do not diagnose clobbers.
16412 2023-03-15 Richard Biener <rguenther@suse.de>
16414 PR tree-optimization/109139
16415 * tree-ssa-live.cc (remove_unused_locals): Look at the
16416 base address for unused decls on the LHS of .DEFERRED_INIT.
16418 2023-03-15 Xi Ruoyao <xry111@xry111.site>
16421 * builtins.cc (inline_string_cmp): Force the character
16422 difference into "result" pseudo-register, instead of reassign
16423 the pseudo-register.
16425 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16427 * config.gcc: Add thead.o to RISC-V extra_objs.
16428 * config/riscv/peephole.md: Add mempair peephole passes.
16429 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
16431 (th_mempair_operands_p): Likewise.
16432 (th_mempair_order_operands): Likewise.
16433 (th_mempair_prepare_save_restore_operands): Likewise.
16434 (th_mempair_save_restore_regs): Likewise.
16435 (th_mempair_output_move): Likewise.
16436 * config/riscv/riscv.cc (riscv_save_reg): Move code.
16437 (riscv_restore_reg): Move code.
16438 (riscv_for_each_saved_reg): Add code to emit mempair insns.
16439 * config/riscv/t-riscv: Add thead.cc.
16440 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
16442 (*th_mempair_store_<GPR:mode>2): Likewise.
16443 (*th_mempair_load_extendsidi2): Likewise.
16444 (*th_mempair_load_zero_extendsidi2): Likewise.
16445 * config/riscv/thead.cc: New file.
16447 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16449 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
16450 New constraint "th_f_fmv".
16451 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
16453 * config/riscv/riscv.cc (riscv_split_doubleword_move):
16454 Add split code for XTheadFmv.
16455 (riscv_secondary_memory_needed): XTheadFmv does not need
16457 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
16458 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
16459 movdf_hardfloat_rv32.
16460 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
16461 (th_fmv_x_w): New INSN.
16462 (th_fmv_x_hw): New INSN.
16464 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16466 * config/riscv/riscv.md (maddhisi4): New expand.
16467 (msubhisi4): New expand.
16468 * config/riscv/thead.md (*th_mula<mode>): New pattern.
16469 (*th_mulawsi): New pattern.
16470 (*th_mulawsi2): New pattern.
16471 (*th_maddhisi4): New pattern.
16472 (*th_sextw_maddhisi4): New pattern.
16473 (*th_muls<mode>): New pattern.
16474 (*th_mulswsi): New pattern.
16475 (*th_mulswsi2): New pattern.
16476 (*th_msubhisi4): New pattern.
16477 (*th_sextw_msubhisi4): New pattern.
16479 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16481 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
16482 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
16484 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
16486 (riscv_expand_conditional_move): New function.
16487 (riscv_expand_conditional_move_onesided): New function.
16488 * config/riscv/riscv.md: Add support for XTheadCondMov.
16489 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
16490 support for XTheadCondMov.
16491 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
16493 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16495 * config/riscv/bitmanip.md (clzdi2): New expand.
16496 (clzsi2): New expand.
16497 (ctz<mode>2): New expand.
16498 (popcount<mode>2): New expand.
16499 (<bitmanip_optab>si2): Rename INSN.
16500 (*<bitmanip_optab>si2): Hide INSN name.
16501 (<bitmanip_optab>di2): Rename INSN.
16502 (*<bitmanip_optab>di2): Hide INSN name.
16503 (rotrsi3): Remove INSN.
16504 (rotr<mode>3): Add expand.
16505 (*rotrsi3): New INSN.
16506 (rotrdi3): Rename INSN.
16507 (*rotrdi3): Hide INSN name.
16508 (rotrsi3_sext): Rename INSN.
16509 (*rotrsi3_sext): Hide INSN name.
16510 (bswap<mode>2): Remove INSN.
16511 (bswapdi2): Add expand.
16512 (bswapsi2): Add expand.
16513 (*bswap<mode>2): Hide INSN name.
16514 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
16516 * config/riscv/riscv.md (extv<mode>): New expand.
16517 (extzv<mode>): New expand.
16518 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
16519 (*th_ext<mode>): New INSN.
16520 (*th_extu<mode>): New INSN.
16521 (*th_clz<mode>2): New INSN.
16522 (*th_rev<mode>2): New INSN.
16524 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16526 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
16527 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
16529 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16531 * config/riscv/riscv.md: Include thead.md
16532 * config/riscv/thead.md: New file.
16534 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16536 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
16538 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
16540 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
16541 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
16542 (MASK_XTHEADBB): New.
16543 (MASK_XTHEADBS): New.
16544 (MASK_XTHEADCMO): New.
16545 (MASK_XTHEADCONDMOV): New.
16546 (MASK_XTHEADFMEMIDX): New.
16547 (MASK_XTHEADFMV): New.
16548 (MASK_XTHEADINT): New.
16549 (MASK_XTHEADMAC): New.
16550 (MASK_XTHEADMEMIDX): New.
16551 (MASK_XTHEADMEMPAIR): New.
16552 (MASK_XTHEADSYNC): New.
16553 (TARGET_XTHEADBA): New.
16554 (TARGET_XTHEADBB): New.
16555 (TARGET_XTHEADBS): New.
16556 (TARGET_XTHEADCMO): New.
16557 (TARGET_XTHEADCONDMOV): New.
16558 (TARGET_XTHEADFMEMIDX): New.
16559 (TARGET_XTHEADFMV): New.
16560 (TARGET_XTHEADINT): New.
16561 (TARGET_XTHEADMAC): New.
16562 (TARGET_XTHEADMEMIDX): New.
16563 (TARGET_XTHEADMEMPAIR): new.
16564 (TARGET_XTHEADSYNC): New.
16565 * config/riscv/riscv.opt: Add riscv_xthead_subext.
16567 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
16570 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
16571 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
16572 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
16574 2023-03-14 Jakub Jelinek <jakub@redhat.com>
16577 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
16578 when lo is equal to dhi and hi is a MEM which uses dlo register.
16580 2023-03-14 Martin Jambor <mjambor@suse.cz>
16583 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
16584 global0 instead of zeroing when it does not have as many counts as
16587 2023-03-14 Martin Jambor <mjambor@suse.cz>
16590 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
16591 ipa count, remove assert, lenient_count_portion_handling, dump
16592 also orig_node_count.
16594 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
16596 * config/i386/i386-expand.cc (expand_vec_perm_movs):
16597 Handle V2SImode for TARGET_MMX_WITH_SSE.
16598 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
16599 using V2FI mode iterator to handle both V2SI and V2SF modes.
16601 2023-03-14 Sam James <sam@gentoo.org>
16603 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
16604 including <sstream> earlier.
16605 * system.h: Add INCLUDE_SSTREAM.
16607 2023-03-14 Richard Biener <rguenther@suse.de>
16609 * tree-ssa-live.cc (remove_unused_locals): Do not treat
16610 the .DEFERRED_INIT of a variable as use, instead remove
16611 that if it is the only use.
16613 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
16615 PR rtl-optimization/107762
16616 * expr.cc (emit_group_store): Revert latest change.
16618 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
16620 PR tree-optimization/109005
16621 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
16622 aggregate type check.
16624 2023-03-14 Jakub Jelinek <jakub@redhat.com>
16626 PR tree-optimization/109115
16627 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
16628 r.upper_bound () on r.undefined_p () range.
16630 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
16632 PR tree-optimization/106896
16633 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
16634 implementatoin with probability_in; avoid some asserts.
16636 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
16638 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
16640 2023-03-13 Sean Bright <sean@seanbright.com>
16642 * doc/invoke.texi (Warning Options): Remove errant 'See'
16645 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16647 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
16648 REG_OK_FOR_BASE_P): Remove.
16650 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16652 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
16653 (=vd,vd,vr,vr): Ditto.
16654 * config/riscv/vector.md: Ditto.
16656 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16658 * config/riscv/riscv-vector-builtins.cc
16659 (function_expander::use_compare_insn): Add operand predicate check.
16661 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16663 * config/riscv/vector.md: Fine tune RA constraints.
16665 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
16667 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
16668 hsaco assemble/link.
16670 2023-03-13 Richard Biener <rguenther@suse.de>
16672 PR tree-optimization/109046
16673 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
16674 piecewise complex loads.
16676 2023-03-12 Jakub Jelinek <jakub@redhat.com>
16678 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
16679 (aarch64_bf16_ptr_type_node): Adjust comment.
16680 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
16681 bfloat16_type_node rather than aarch64_bf16_type_node.
16682 (aarch64_libgcc_floating_mode_supported_p,
16683 aarch64_scalar_mode_supported_p): Also support BFmode.
16684 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
16685 (aarch64_invalid_binary_op): Remove BFmode related rejections.
16686 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
16687 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
16688 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
16689 aarch64_bf16_type_node.
16690 (aarch64_init_simd_builtin_types): Likewise.
16691 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
16692 which is created in tree.cc already.
16693 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
16695 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
16697 PR middle-end/109031
16698 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
16699 ensure that the type of x is as wide or wider than the type of a.
16701 2023-03-12 Tamar Christina <tamar.christina@arm.com>
16704 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
16705 (*bitmask_shift_plus<mode>): New.
16706 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
16707 (@aarch64_bitmask_udiv<mode>3): Remove.
16708 * config/aarch64/aarch64.cc
16709 (aarch64_vectorize_can_special_div_by_constant,
16710 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
16711 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
16712 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
16714 2023-03-12 Tamar Christina <tamar.christina@arm.com>
16717 * target.def (preferred_div_as_shifts_over_mult): New.
16718 * doc/tm.texi.in: Document it.
16719 * doc/tm.texi: Regenerate.
16720 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
16721 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
16722 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
16724 2023-03-12 Tamar Christina <tamar.christina@arm.com>
16725 Richard Sandiford <richard.sandiford@arm.com>
16728 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
16731 2023-03-12 Tamar Christina <tamar.christina@arm.com>
16732 Andrew MacLeod <amacleod@redhat.com>
16735 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
16736 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
16738 (gimple_range_op_handler::maybe_non_standard): New.
16739 * range-op.cc (class operator_widen_plus_signed,
16740 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
16741 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
16742 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
16743 operator_widen_mult_unsigned::wi_fold,
16744 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
16745 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
16746 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
16747 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
16749 2023-03-12 Tamar Christina <tamar.christina@arm.com>
16752 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
16753 * doc/tm.texi.in: Likewise.
16754 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
16755 * expmed.cc (expand_divmod): Likewise.
16756 * expmed.h (expand_divmod): Likewise.
16757 * expr.cc (force_operand, expand_expr_divmod): Likewise.
16758 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
16759 * target.def (can_special_div_by_const): Remove.
16760 * target.h: Remove tree-core.h include
16761 * targhooks.cc (default_can_special_div_by_const): Remove.
16762 * targhooks.h (default_can_special_div_by_const): Remove.
16763 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
16764 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
16765 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
16767 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
16769 * doc/install.texi2html: Fix issue number typo in comment.
16771 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
16773 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
16776 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
16778 * doc/invoke.texi (Optimize Options): Add markup to
16779 description of asan-kernel-mem-intrinsic-prefix, and clarify
16782 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
16784 * doc/extend.texi (Named Address Spaces): Drop a redundant link
16787 2023-03-11 Jeff Law <jlaw@ventanamicro>
16790 * doc/extend.texi: Clarify Attribute Syntax a bit.
16792 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
16794 * doc/install.texi (Prerequisites): Suggest using newer versions
16796 (Final install): Clean up and modernize discussion of how to
16797 build or obtain the GCC manuals.
16798 * doc/install.texi2html: Update comment to point to the PR instead
16799 of "makeinfo 4.7 brokenness" (it's not specific to that version).
16801 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16804 * optabs.cc (expand_fix): For conversions from BFmode to integral,
16805 use shifts to convert it to SFmode first and then convert SFmode
16808 2023-03-10 Andrew Pinski <apinski@marvell.com>
16810 * config/aarch64/aarch64.md: Add a new define_split
16813 2023-03-10 Richard Biener <rguenther@suse.de>
16815 * tree-ssa-structalias.cc (solve_graph): Immediately
16816 iterate self-cycles.
16818 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16820 PR tree-optimization/109008
16821 * range-op-float.cc (float_widen_lhs_range): If not
16822 -frounding-math and not IBM double double format, extend lhs
16823 range just by 0.5ulp rather than 1ulp in each direction.
16825 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16828 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
16830 * config/i386/t-cygwin-w64: Remove.
16832 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16835 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
16836 C++14, don't declare as extern const arrays.
16837 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
16838 static constexpr member arrays for C++11 or C++14.
16839 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
16840 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
16841 (TREE_CODE_LENGTH): For C++11 or C++14 use
16842 tree_code_length_tmpl <0>::tree_code_length instead of
16844 * tree.cc (tree_code_type, tree_code_length): Remove.
16846 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16849 * common.opt (fcanon-prefix-map): New option.
16850 * opts.cc: Include file-prefix-map.h.
16851 (flag_canon_prefix_map): New variable.
16852 (common_handle_option): Handle OPT_fcanon_prefix_map.
16853 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
16854 * file-prefix-map.h (flag_canon_prefix_map): Declare.
16855 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
16857 (add_prefix_map): Initialize canonicalize member from
16858 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
16859 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
16860 use lrealpath result only for map->canonicalize map entries.
16861 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
16862 * opts-global.cc (handle_common_deferred_options): Clear
16863 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
16864 * doc/invoke.texi (-fcanon-prefix-map): Document.
16865 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
16866 see also for -fcanon-prefix-map.
16867 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
16869 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16872 * cgraphunit.cc (check_global_declaration): Don't warn for unused
16873 variables which have OPT_Wunused_variable warning suppressed.
16875 2023-03-10 Jakub Jelinek <jakub@redhat.com>
16877 PR tree-optimization/109008
16878 * range-op-float.cc (float_widen_lhs_range): If lb is
16879 minimum representable finite number or ub is maximum
16880 representable finite number, instead of widening it to
16881 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
16882 Temporarily clear flag_finite_math_only when canonicalizing
16885 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16887 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
16888 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
16889 (gimple_fold_builtin): Ditto.
16890 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
16891 (class vleff): Ditto.
16893 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16894 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
16896 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
16897 (struct fault_load_def): Ditto.
16899 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16900 * config/riscv/riscv-vector-builtins.cc
16901 (rvv_arg_type_info::get_tree_type): Add size_ptr.
16902 (gimple_folder::gimple_folder): New class.
16903 (gimple_folder::fold): Ditto.
16904 (gimple_fold_builtin): New function.
16905 (get_read_vl_instance): Ditto.
16906 (get_read_vl_decl): Ditto.
16907 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
16908 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
16909 (get_read_vl_instance): New function.
16910 (get_read_vl_decl): Ditto.
16911 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
16912 (read_vl_insn_p): Ditto.
16913 (available_occurrence_p): Ditto.
16914 (backward_propagate_worthwhile_p): Ditto.
16915 (gen_vsetvl_pat): Adapt for vleff support.
16916 (get_forward_read_vl_insn): New function.
16917 (get_backward_fault_first_load_insn): Ditto.
16918 (source_equal_p): Adapt for vleff support.
16919 (first_ratio_invalid_for_second_sew_p): Remove.
16920 (first_ratio_invalid_for_second_lmul_p): Ditto.
16921 (first_lmul_less_than_second_lmul_p): Ditto.
16922 (first_ratio_less_than_second_ratio_p): Ditto.
16923 (support_relaxed_compatible_p): New function.
16924 (vector_insn_info::operator>): Remove.
16925 (vector_insn_info::operator>=): Refine.
16926 (vector_insn_info::parse_insn): Adapt for vleff support.
16927 (vector_insn_info::compatible_p): Ditto.
16928 (vector_insn_info::update_fault_first_load_avl): New function.
16929 (pass_vsetvl::transfer_after): Adapt for vleff support.
16930 (pass_vsetvl::demand_fusion): Ditto.
16931 (pass_vsetvl::cleanup_insns): Ditto.
16932 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
16933 redundant condtions.
16934 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
16935 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
16936 * config/riscv/riscv.md: Adapt for vleff support.
16937 * config/riscv/t-riscv: Ditto.
16938 * config/riscv/vector-iterators.md: New iterator.
16939 * config/riscv/vector.md (read_vlsi): New pattern.
16940 (read_vldi_zero_extend): Ditto.
16941 (@pred_fault_load<mode>): Ditto.
16943 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16945 * config/riscv/riscv-vector-builtins.cc
16946 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
16947 (function_expander::use_widen_ternop_insn): Ditto.
16948 * optabs.cc (maybe_gen_insn): Extend nops handling.
16950 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16952 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
16953 patterns according to RVV ISA.
16954 * config/riscv/vector-iterators.md: New iterators.
16955 * config/riscv/vector.md
16956 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
16957 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
16958 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
16959 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
16960 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
16961 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
16962 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
16963 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
16964 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
16965 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
16966 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
16967 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
16968 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
16969 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
16971 2023-03-10 Michael Collison <collison@rivosinc.com>
16973 * tree-vect-loop-manip.cc (vect_do_peeling): Use
16974 result of constant_lower_bound instead of vf for the lower
16975 bound of the epilog loop trip count.
16977 2023-03-09 Tamar Christina <tamar.christina@arm.com>
16979 * passes.cc (emergency_dump_function): Finish graph generation.
16981 2023-03-09 Tamar Christina <tamar.christina@arm.com>
16983 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
16984 and bottom bit only.
16986 2023-03-09 Andrew Pinski <apinski@marvell.com>
16988 PR tree-optimization/108980
16989 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
16990 Reorgnize the call to warning for not strict flexible arrays
16991 to be before the check of warned.
16993 2023-03-09 Jason Merrill <jason@redhat.com>
16995 * doc/extend.texi: Comment out __is_deducible docs.
16997 2023-03-09 Jason Merrill <jason@redhat.com>
17000 * doc/extend.texi (Type Traits):: Document __is_deducible.
17002 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
17005 * config.host: add object for x86_64-*-mingw*.
17006 * config/i386/sym-mingw32.cc: dummy file to attach
17008 * config/i386/utf8-mingw32.rc: windres resource file.
17009 * config/i386/winnt-utf8.manifest: XML manifest to
17011 * config/i386/x-mingw32: reference to x-mingw32-utf8.
17012 * config/i386/x-mingw32-utf8: Makefile fragment to
17013 embed UTF-8 manifest.
17015 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
17017 * lra-constraints.cc (process_alt_operands): Use operand modes for
17018 clobbered regs instead of the biggest access mode.
17020 2023-03-09 Richard Biener <rguenther@suse.de>
17022 PR middle-end/108995
17023 * fold-const.cc (extract_muldiv_1): Avoid folding
17024 (CST * b) / CST2 when sanitizing overflow and we rely on
17025 overflow being undefined.
17027 2023-03-09 Jakub Jelinek <jakub@redhat.com>
17028 Richard Biener <rguenther@suse.de>
17030 PR tree-optimization/109008
17031 * range-op-float.cc (float_widen_lhs_range): New function.
17032 (foperator_plus::op1_range, foperator_minus::op1_range,
17033 foperator_minus::op2_range, foperator_mult::op1_range,
17034 foperator_div::op1_range, foperator_div::op2_range): Use it.
17036 2023-03-07 Jonathan Grant <jg@jguk.org>
17039 * doc/invoke.texi (Instrumentation Options): Clarify
17040 LeakSanitizer behavior.
17042 2023-03-07 Benson Muite <benson_muite@emailplus.org>
17044 * doc/install.texi (Prerequisites): Add link to gmplib.org.
17046 2023-03-07 Pan Li <pan2.li@intel.com>
17047 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17051 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
17053 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
17054 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
17055 * genmodes.cc (adj_precision): New.
17056 (ADJUST_PRECISION): New.
17057 (emit_mode_adjustments): Handle ADJUST_PRECISION.
17059 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
17061 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
17063 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
17065 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
17066 {s|u}{max|min} in QI, HI and DI modes.
17067 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
17068 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
17069 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
17070 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
17073 2023-03-06 Richard Biener <rguenther@suse.de>
17075 PR tree-optimization/109025
17076 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
17077 the inner LC PHI use is the inner loop PHI latch definition
17078 before classifying an outer PHI as double reduction.
17080 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
17083 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
17085 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
17086 (X86_TUNE_USE_SCATTER): Likewise.
17088 2023-03-06 Xi Ruoyao <xry111@xry111.site>
17091 * config/loongarch/loongarch.h (FP_RETURN): Use
17092 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
17093 (UNITS_PER_FP_ARG): Likewise.
17095 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17097 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
17098 (pass_vsetvl::backward_demand_fusion): Ditto.
17100 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
17101 SiYu Wu <siyu@isrc.iscas.ac.cn>
17103 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
17105 (riscv_sm3p1_<mode>): New.
17106 (riscv_sm4ed_<mode>): New.
17107 (riscv_sm4ks_<mode>): New.
17108 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
17109 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
17110 ZKSH's built-in functions.
17112 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
17113 SiYu Wu <siyu@isrc.iscas.ac.cn>
17115 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
17116 (riscv_sha256sig1_<mode>): New.
17117 (riscv_sha256sum0_<mode>): New.
17118 (riscv_sha256sum1_<mode>): New.
17119 (riscv_sha512sig0h): New.
17120 (riscv_sha512sig0l): New.
17121 (riscv_sha512sig1h): New.
17122 (riscv_sha512sig1l): New.
17123 (riscv_sha512sum0r): New.
17124 (riscv_sha512sum1r): New.
17125 (riscv_sha512sig0): New.
17126 (riscv_sha512sig1): New.
17127 (riscv_sha512sum0): New.
17128 (riscv_sha512sum1): New.
17129 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
17130 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
17131 built-in functions.
17132 (DIRECT_BUILTIN): Add new.
17134 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
17135 SiYu Wu <siyu@isrc.iscas.ac.cn>
17137 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
17139 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
17140 (riscv_aes32dsmi): New.
17141 (riscv_aes64ds): New.
17142 (riscv_aes64dsm): New.
17143 (riscv_aes64im): New.
17144 (riscv_aes64ks1i): New.
17145 (riscv_aes64ks2): New.
17146 (riscv_aes32esi): New.
17147 (riscv_aes32esmi): New.
17148 (riscv_aes64es): New.
17149 (riscv_aes64esm): New.
17150 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
17151 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
17152 ZKNE's built-in functions.
17154 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
17155 SiYu Wu <siyu@isrc.iscas.ac.cn>
17157 * config/riscv/bitmanip.md: Add ZBKB's instructions.
17158 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
17159 * config/riscv/riscv.md: Add new type for crypto instructions.
17160 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
17162 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
17163 extension's built-in function file.
17165 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
17166 SiYu Wu <siyu@isrc.iscas.ac.cn>
17168 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
17169 (RISCV_FTYPE_NAME3): New.
17170 (RISCV_ATYPE_QI): New.
17171 (RISCV_ATYPE_HI): New.
17172 (RISCV_FTYPE_ATYPES2): New.
17173 (RISCV_FTYPE_ATYPES3): New.
17174 * config/riscv/riscv-ftypes.def (2): New.
17177 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
17179 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
17182 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17183 kito-cheng <kito.cheng@sifive.com>
17185 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
17186 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
17187 (riscv_register_pragmas): Add builtin function check call.
17188 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
17189 (check_builtin_call): New function.
17190 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
17191 (class vreinterpret): Ditto.
17192 (class vlmul_ext): Ditto.
17193 (class vlmul_trunc): Ditto.
17194 (class vset): Ditto.
17195 (class vget): Ditto.
17197 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17198 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
17214 (vundefined): Add new intrinsic.
17215 (vreinterpret): Ditto.
17216 (vlmul_ext): Ditto.
17217 (vlmul_trunc): Ditto.
17220 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
17221 (struct narrow_alu_def): Ditto.
17222 (struct reduc_alu_def): Ditto.
17223 (struct vundefined_def): Ditto.
17224 (struct misc_def): Ditto.
17225 (struct vset_def): Ditto.
17226 (struct vget_def): Ditto.
17228 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17229 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
17230 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
17231 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
17232 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
17233 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
17234 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
17235 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
17236 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
17237 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
17238 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
17239 (DEF_RVV_LMUL1_OPS): Ditto.
17240 (DEF_RVV_LMUL2_OPS): Ditto.
17241 (DEF_RVV_LMUL4_OPS): Ditto.
17242 (vint16mf4_t): Ditto.
17243 (vint16mf2_t): Ditto.
17244 (vint16m1_t): Ditto.
17245 (vint16m2_t): Ditto.
17246 (vint16m4_t): Ditto.
17247 (vint16m8_t): Ditto.
17248 (vint32mf2_t): Ditto.
17249 (vint32m1_t): Ditto.
17250 (vint32m2_t): Ditto.
17251 (vint32m4_t): Ditto.
17252 (vint32m8_t): Ditto.
17253 (vint64m1_t): Ditto.
17254 (vint64m2_t): Ditto.
17255 (vint64m4_t): Ditto.
17256 (vint64m8_t): Ditto.
17257 (vuint16mf4_t): Ditto.
17258 (vuint16mf2_t): Ditto.
17259 (vuint16m1_t): Ditto.
17260 (vuint16m2_t): Ditto.
17261 (vuint16m4_t): Ditto.
17262 (vuint16m8_t): Ditto.
17263 (vuint32mf2_t): Ditto.
17264 (vuint32m1_t): Ditto.
17265 (vuint32m2_t): Ditto.
17266 (vuint32m4_t): Ditto.
17267 (vuint32m8_t): Ditto.
17268 (vuint64m1_t): Ditto.
17269 (vuint64m2_t): Ditto.
17270 (vuint64m4_t): Ditto.
17271 (vuint64m8_t): Ditto.
17272 (vint8mf4_t): Ditto.
17273 (vint8mf2_t): Ditto.
17274 (vint8m1_t): Ditto.
17275 (vint8m2_t): Ditto.
17276 (vint8m4_t): Ditto.
17277 (vint8m8_t): Ditto.
17278 (vuint8mf4_t): Ditto.
17279 (vuint8mf2_t): Ditto.
17280 (vuint8m1_t): Ditto.
17281 (vuint8m2_t): Ditto.
17282 (vuint8m4_t): Ditto.
17283 (vuint8m8_t): Ditto.
17284 (vint8mf8_t): Ditto.
17285 (vuint8mf8_t): Ditto.
17286 (vfloat32mf2_t): Ditto.
17287 (vfloat32m1_t): Ditto.
17288 (vfloat32m2_t): Ditto.
17289 (vfloat32m4_t): Ditto.
17290 (vfloat64m1_t): Ditto.
17291 (vfloat64m2_t): Ditto.
17292 (vfloat64m4_t): Ditto.
17293 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
17294 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
17295 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
17296 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
17297 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
17298 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
17299 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
17300 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
17301 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
17302 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
17303 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
17304 (DEF_RVV_LMUL1_OPS): Ditto.
17305 (DEF_RVV_LMUL2_OPS): Ditto.
17306 (DEF_RVV_LMUL4_OPS): Ditto.
17307 (DEF_RVV_TYPE_INDEX): Ditto.
17308 (required_extensions_p): Adapt for new intrinsic support/
17309 (get_required_extensions): New function.
17310 (check_required_extensions): Ditto.
17311 (unsigned_base_type_p): Remove.
17312 (rvv_arg_type_info::get_scalar_ptr_type): New function.
17313 (get_mode_for_bitsize): Remove.
17314 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
17315 (rvv_arg_type_info::get_base_vector_type): Ditto.
17316 (rvv_arg_type_info::get_function_type_index): Ditto.
17317 (DEF_RVV_BASE_TYPE): New def.
17318 (function_builder::apply_predication): New class.
17319 (function_expander::mask_mode): Ditto.
17320 (function_checker::function_checker): Ditto.
17321 (function_checker::report_non_ice): Ditto.
17322 (function_checker::report_out_of_range): Ditto.
17323 (function_checker::require_immediate): Ditto.
17324 (function_checker::require_immediate_range): Ditto.
17325 (function_checker::check): Ditto.
17326 (check_builtin_call): Ditto.
17327 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
17328 (DEF_RVV_BASE_TYPE): Ditto.
17329 (DEF_RVV_TYPE_INDEX): Ditto.
17330 (vbool64_t): Ditto.
17331 (vbool32_t): Ditto.
17332 (vbool16_t): Ditto.
17337 (vuint8mf8_t): Ditto.
17338 (vuint8mf4_t): Ditto.
17339 (vuint8mf2_t): Ditto.
17340 (vuint8m1_t): Ditto.
17341 (vuint8m2_t): Ditto.
17342 (vint8m4_t): Ditto.
17343 (vuint8m4_t): Ditto.
17344 (vint8m8_t): Ditto.
17345 (vuint8m8_t): Ditto.
17346 (vint16mf4_t): Ditto.
17347 (vuint16mf2_t): Ditto.
17348 (vuint16m1_t): Ditto.
17349 (vuint16m2_t): Ditto.
17350 (vuint16m4_t): Ditto.
17351 (vuint16m8_t): Ditto.
17352 (vint32mf2_t): Ditto.
17353 (vuint32m1_t): Ditto.
17354 (vuint32m2_t): Ditto.
17355 (vuint32m4_t): Ditto.
17356 (vuint32m8_t): Ditto.
17357 (vuint64m1_t): Ditto.
17358 (vuint64m2_t): Ditto.
17359 (vuint64m4_t): Ditto.
17360 (vuint64m8_t): Ditto.
17361 (vfloat32mf2_t): Ditto.
17362 (vfloat32m1_t): Ditto.
17363 (vfloat32m2_t): Ditto.
17364 (vfloat32m4_t): Ditto.
17365 (vfloat32m8_t): Ditto.
17366 (vfloat64m1_t): Ditto.
17367 (vfloat64m4_t): Ditto.
17368 (vector): Move it def.
17371 (signed_vector): Ditto.
17372 (unsigned_vector): Ditto.
17373 (unsigned_scalar): Ditto.
17374 (vector_ptr): Ditto.
17375 (scalar_ptr): Ditto.
17376 (scalar_const_ptr): Ditto.
17380 (unsigned_long): Ditto.
17382 (eew8_index): Ditto.
17383 (eew16_index): Ditto.
17384 (eew32_index): Ditto.
17385 (eew64_index): Ditto.
17386 (shift_vector): Ditto.
17387 (double_trunc_vector): Ditto.
17388 (quad_trunc_vector): Ditto.
17389 (oct_trunc_vector): Ditto.
17390 (double_trunc_scalar): Ditto.
17391 (double_trunc_signed_vector): Ditto.
17392 (double_trunc_unsigned_vector): Ditto.
17393 (double_trunc_unsigned_scalar): Ditto.
17394 (double_trunc_float_vector): Ditto.
17395 (float_vector): Ditto.
17396 (lmul1_vector): Ditto.
17397 (widen_lmul1_vector): Ditto.
17398 (eew8_interpret): Ditto.
17399 (eew16_interpret): Ditto.
17400 (eew32_interpret): Ditto.
17401 (eew64_interpret): Ditto.
17402 (vlmul_ext_x2): Ditto.
17403 (vlmul_ext_x4): Ditto.
17404 (vlmul_ext_x8): Ditto.
17405 (vlmul_ext_x16): Ditto.
17406 (vlmul_ext_x32): Ditto.
17407 (vlmul_ext_x64): Ditto.
17408 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
17409 (struct function_type_info): New function.
17410 (struct rvv_arg_type_info): Ditto.
17411 (class function_checker): New class.
17412 (rvv_arg_type_info::get_scalar_type): New function.
17413 (rvv_arg_type_info::get_vector_type): Ditto.
17414 (function_expander::ret_mode): New function.
17415 (function_checker::arg_mode): Ditto.
17416 (function_checker::ret_mode): Ditto.
17417 * config/riscv/t-riscv: Add generator.
17418 * config/riscv/vector-iterators.md: New iterators.
17419 * config/riscv/vector.md (vundefined<mode>): New pattern.
17420 (@vundefined<mode>): Ditto.
17421 (@vreinterpret<mode>): Ditto.
17422 (@vlmul_extx2<mode>): Ditto.
17423 (@vlmul_extx4<mode>): Ditto.
17424 (@vlmul_extx8<mode>): Ditto.
17425 (@vlmul_extx16<mode>): Ditto.
17426 (@vlmul_extx32<mode>): Ditto.
17427 (@vlmul_extx64<mode>): Ditto.
17428 (*vlmul_extx2<mode>): Ditto.
17429 (*vlmul_extx4<mode>): Ditto.
17430 (*vlmul_extx8<mode>): Ditto.
17431 (*vlmul_extx16<mode>): Ditto.
17432 (*vlmul_extx32<mode>): Ditto.
17433 (*vlmul_extx64<mode>): Ditto.
17434 * config/riscv/genrvv-type-indexer.cc: New file.
17436 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17438 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
17439 (slide1_sew64_helper): New function.
17440 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
17441 (get_unknown_min_value): Ditto.
17442 (force_vector_length_operand): Ditto.
17443 (gen_no_side_effects_vsetvl_rtx): Ditto.
17444 (get_vl_x2_rtx): Ditto.
17445 (slide1_sew64_helper): Ditto.
17446 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
17447 (class vrgather): Ditto.
17448 (class vrgatherei16): Ditto.
17449 (class vcompress): Ditto.
17451 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17452 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
17453 (vslidedown): Ditto.
17454 (vslide1up): Ditto.
17455 (vslide1down): Ditto.
17456 (vfslide1up): Ditto.
17457 (vfslide1down): Ditto.
17459 (vrgatherei16): Ditto.
17460 (vcompress): Ditto.
17461 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
17462 (vint8mf8_t): Ditto.
17463 (vint8mf4_t): Ditto.
17464 (vint8mf2_t): Ditto.
17465 (vint8m1_t): Ditto.
17466 (vint8m2_t): Ditto.
17467 (vint8m4_t): Ditto.
17468 (vint16mf4_t): Ditto.
17469 (vint16mf2_t): Ditto.
17470 (vint16m1_t): Ditto.
17471 (vint16m2_t): Ditto.
17472 (vint16m4_t): Ditto.
17473 (vint16m8_t): Ditto.
17474 (vint32mf2_t): Ditto.
17475 (vint32m1_t): Ditto.
17476 (vint32m2_t): Ditto.
17477 (vint32m4_t): Ditto.
17478 (vint32m8_t): Ditto.
17479 (vint64m1_t): Ditto.
17480 (vint64m2_t): Ditto.
17481 (vint64m4_t): Ditto.
17482 (vint64m8_t): Ditto.
17483 (vuint8mf8_t): Ditto.
17484 (vuint8mf4_t): Ditto.
17485 (vuint8mf2_t): Ditto.
17486 (vuint8m1_t): Ditto.
17487 (vuint8m2_t): Ditto.
17488 (vuint8m4_t): Ditto.
17489 (vuint16mf4_t): Ditto.
17490 (vuint16mf2_t): Ditto.
17491 (vuint16m1_t): Ditto.
17492 (vuint16m2_t): Ditto.
17493 (vuint16m4_t): Ditto.
17494 (vuint16m8_t): Ditto.
17495 (vuint32mf2_t): Ditto.
17496 (vuint32m1_t): Ditto.
17497 (vuint32m2_t): Ditto.
17498 (vuint32m4_t): Ditto.
17499 (vuint32m8_t): Ditto.
17500 (vuint64m1_t): Ditto.
17501 (vuint64m2_t): Ditto.
17502 (vuint64m4_t): Ditto.
17503 (vuint64m8_t): Ditto.
17504 (vfloat32mf2_t): Ditto.
17505 (vfloat32m1_t): Ditto.
17506 (vfloat32m2_t): Ditto.
17507 (vfloat32m4_t): Ditto.
17508 (vfloat32m8_t): Ditto.
17509 (vfloat64m1_t): Ditto.
17510 (vfloat64m2_t): Ditto.
17511 (vfloat64m4_t): Ditto.
17512 (vfloat64m8_t): Ditto.
17513 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
17514 * config/riscv/riscv.md: Adjust RVV instruction types.
17515 * config/riscv/vector-iterators.md (down): New iterator.
17516 (=vd,vr): New attribute.
17517 (UNSPEC_VSLIDE1UP): New unspec.
17518 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
17519 (*pred_slide<ud><mode>): Ditto.
17520 (*pred_slide<ud><mode>_extended): Ditto.
17521 (@pred_gather<mode>): Ditto.
17522 (@pred_gather<mode>_scalar): Ditto.
17523 (@pred_gatherei16<mode>): Ditto.
17524 (@pred_compress<mode>): Ditto.
17526 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17528 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
17530 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17532 * config/riscv/constraints.md (Wb1): New constraint.
17533 * config/riscv/predicates.md
17534 (vector_least_significant_set_mask_operand): New predicate.
17535 (vector_broadcast_mask_operand): Ditto.
17536 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
17537 (gen_scalar_move_mask): New function.
17538 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
17539 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
17540 (class vmv_s): Ditto.
17542 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17543 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
17547 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
17549 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17550 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
17551 (function_expander::use_exact_insn): New function.
17552 (function_expander::use_contiguous_load_insn): New function.
17553 (function_expander::use_contiguous_store_insn): New function.
17554 (function_expander::use_ternop_insn): New function.
17555 (function_expander::use_widen_ternop_insn): New function.
17556 (function_expander::use_scalar_move_insn): New function.
17557 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
17558 * config/riscv/riscv-vector-builtins.h
17559 (function_expander::add_scalar_move_mask_operand): New class.
17560 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
17561 (scalar_move_insn_p): Ditto.
17562 (has_vsetvl_killed_avl_p): Ditto.
17563 (anticipatable_occurrence_p): Ditto.
17564 (insert_vsetvl): Ditto.
17565 (get_vl_vtype_info): Ditto.
17566 (calculate_sew): Ditto.
17567 (calculate_vlmul): Ditto.
17568 (incompatible_avl_p): Ditto.
17569 (different_sew_p): Ditto.
17570 (different_lmul_p): Ditto.
17571 (different_ratio_p): Ditto.
17572 (different_tail_policy_p): Ditto.
17573 (different_mask_policy_p): Ditto.
17574 (possible_zero_avl_p): Ditto.
17575 (first_ratio_invalid_for_second_sew_p): Ditto.
17576 (first_ratio_invalid_for_second_lmul_p): Ditto.
17577 (second_ratio_invalid_for_first_sew_p): Ditto.
17578 (second_ratio_invalid_for_first_lmul_p): Ditto.
17579 (second_sew_less_than_first_sew_p): Ditto.
17580 (first_sew_less_than_second_sew_p): Ditto.
17581 (compare_lmul): Ditto.
17582 (second_lmul_less_than_first_lmul_p): Ditto.
17583 (first_lmul_less_than_second_lmul_p): Ditto.
17584 (first_ratio_less_than_second_ratio_p): Ditto.
17585 (second_ratio_less_than_first_ratio_p): Ditto.
17586 (DEF_INCOMPATIBLE_COND): Ditto.
17587 (greatest_sew): Ditto.
17588 (first_sew): Ditto.
17589 (second_sew): Ditto.
17590 (first_vlmul): Ditto.
17591 (second_vlmul): Ditto.
17592 (first_ratio): Ditto.
17593 (second_ratio): Ditto.
17594 (vlmul_for_first_sew_second_ratio): Ditto.
17595 (ratio_for_second_sew_first_vlmul): Ditto.
17596 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
17597 (always_unavailable): Ditto.
17598 (avl_unavailable_p): Ditto.
17599 (sew_unavailable_p): Ditto.
17600 (lmul_unavailable_p): Ditto.
17601 (ge_sew_unavailable_p): Ditto.
17602 (ge_sew_lmul_unavailable_p): Ditto.
17603 (ge_sew_ratio_unavailable_p): Ditto.
17604 (DEF_UNAVAILABLE_COND): Ditto.
17605 (same_sew_lmul_demand_p): Ditto.
17606 (propagate_avl_across_demands_p): Ditto.
17607 (reg_available_p): Ditto.
17608 (avl_info::has_non_zero_avl): Ditto.
17609 (vl_vtype_info::has_non_zero_avl): Ditto.
17610 (vector_insn_info::operator>=): Refactor.
17611 (vector_insn_info::parse_insn): Adjust for scalar move.
17612 (vector_insn_info::demand_vl_vtype): Remove.
17613 (vector_insn_info::compatible_p): New function.
17614 (vector_insn_info::compatible_avl_p): Ditto.
17615 (vector_insn_info::compatible_vtype_p): Ditto.
17616 (vector_insn_info::available_p): Ditto.
17617 (vector_insn_info::merge): Ditto.
17618 (vector_insn_info::fuse_avl): Ditto.
17619 (vector_insn_info::fuse_sew_lmul): Ditto.
17620 (vector_insn_info::fuse_tail_policy): Ditto.
17621 (vector_insn_info::fuse_mask_policy): Ditto.
17622 (vector_insn_info::dump): Ditto.
17623 (vector_infos_manager::release): Ditto.
17624 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
17625 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
17626 (pass_vsetvl::hard_empty_block_p): Ditto.
17627 (pass_vsetvl::backward_demand_fusion): Ditto.
17628 (pass_vsetvl::forward_demand_fusion): Ditto.
17629 (pass_vsetvl::refine_vsetvls): Ditto.
17630 (pass_vsetvl::cleanup_vsetvls): Ditto.
17631 (pass_vsetvl::commit_vsetvls): Ditto.
17632 (pass_vsetvl::propagate_avl): Ditto.
17633 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
17634 (struct demands_pair): Ditto.
17635 (struct demands_cond): Ditto.
17636 (struct demands_fuse_rule): Ditto.
17637 * config/riscv/vector-iterators.md: New iterator.
17638 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
17639 (*pred_broadcast<mode>): Ditto.
17640 (*pred_broadcast<mode>_extended_scalar): Ditto.
17641 (@pred_extract_first<mode>): Ditto.
17642 (*pred_extract_first<mode>): Ditto.
17643 (@pred_extract_first_trunc<mode>): Ditto.
17644 * config/riscv/riscv-vsetvl.def: New file.
17646 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
17648 * config/riscv/bitmanip.md: allow 0 constant in max/min
17651 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
17653 * config/riscv/bitmanip.md: Fix wrong index in the check.
17655 2023-03-04 Jakub Jelinek <jakub@redhat.com>
17657 PR middle-end/109006
17658 * vec.cc (test_auto_alias): Adjust comment for removal of
17660 * read-rtl-function.cc (function_reader::parse_block): Likewise.
17661 * gdbhooks.py: Likewise.
17663 2023-03-04 Jakub Jelinek <jakub@redhat.com>
17665 PR testsuite/108973
17666 * selftest-diagnostic.cc
17667 (test_diagnostic_context::test_diagnostic_context): Set
17668 caret_max_width to 80.
17670 2023-03-03 Alexandre Oliva <oliva@adacore.com>
17672 * gimple-ssa-warn-access.cc
17673 (pass_waccess::check_dangling_stores): Skip non-stores.
17675 2023-03-03 Alexandre Oliva <oliva@adacore.com>
17677 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
17678 after vmsr and vmrs, and lower the case of P0.
17680 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
17682 PR middle-end/109006
17683 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
17685 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
17687 PR middle-end/109006
17688 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
17690 2023-03-03 Jakub Jelinek <jakub@redhat.com>
17693 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
17694 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
17695 suppressed on stmt. For [static %E] warning, print access_nelts
17696 rather than access_size. Fix up comment wording.
17698 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
17700 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
17701 arch14 instead of z16.
17703 2023-03-03 Anthony Green <green@moxielogic.com>
17705 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
17707 2023-03-03 Anthony Green <green@moxielogic.com>
17709 * config/moxie/constraints.md (A, B, W): Change
17710 define_constraint to define_memory_constraint.
17712 2023-03-03 Xi Ruoyao <xry111@xry111.site>
17714 * toplev.cc (process_options): Fix the spelling of
17715 "-fstack-clash-protection".
17717 2023-03-03 Richard Biener <rguenther@suse.de>
17719 PR tree-optimization/109002
17720 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
17721 PHI-translate ANTIC_IN.
17723 2023-03-03 Jakub Jelinek <jakub@redhat.com>
17725 PR tree-optimization/108988
17726 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
17727 size_type_node before passing it as argument to fwrite. Formatting
17730 2023-03-03 Richard Biener <rguenther@suse.de>
17733 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
17734 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
17735 * config/i386/i386-features.h (scalar_chain::max_visits): New.
17736 (scalar_chain::build): Add bitmap parameter, return boolean.
17737 (scalar_chain::add_insn): Likewise.
17738 (scalar_chain::analyze_register_chain): Likewise.
17739 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
17740 Initialize max_visits.
17741 (scalar_chain::analyze_register_chain): When we exhaust
17742 max_visits, abort. Also abort when running into any
17744 (scalar_chain::add_insn): Propagate abort.
17745 (scalar_chain::build): Likewise. When aborting amend
17746 the set of disallowed insn with the insns set.
17747 (convert_scalars_to_vector): Adjust. Do not convert aborted
17750 2023-03-03 Richard Biener <rguenther@suse.de>
17753 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
17754 generate a DIE for a function scope static.
17756 2023-03-03 Alexandre Oliva <oliva@adacore.com>
17758 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
17760 2023-03-02 Jakub Jelinek <jakub@redhat.com>
17763 * target.h (emit_support_tinfos_callback): New typedef.
17764 * targhooks.h (default_emit_support_tinfos): Declare.
17765 * targhooks.cc (default_emit_support_tinfos): New function.
17766 * target.def (emit_support_tinfos): New target hook.
17767 * doc/tm.texi.in (emit_support_tinfos): Document it.
17768 * doc/tm.texi: Regenerated.
17769 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
17770 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
17772 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
17774 * ira-costs.cc: Include print-rtl.h.
17775 (record_reg_classes, scan_one_insn): Add code to print debug info.
17776 (record_operand_costs): Find and use smaller cost for hard reg
17779 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
17780 Paul-Antoine Arras <pa@codesourcery.com>
17782 * builtins.cc (mathfn_built_in_explicit): New.
17783 * config/gcn/gcn.cc: Include case-cfn-macros.h.
17784 (mathfn_built_in_explicit): Add prototype.
17785 (gcn_vectorize_builtin_vectorized_function): New.
17786 (gcn_libc_has_function): New.
17787 (TARGET_LIBC_HAS_FUNCTION): Define.
17788 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
17790 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
17792 PR tree-optimization/108979
17793 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
17794 operations on invariants.
17796 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
17798 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
17799 * config/s390/s390.cc (s390_option_override_internal): Make
17800 partial vector usage the default from z13 on.
17801 * config/s390/vector.md (len_load_v16qi): Add.
17802 (len_store_v16qi): Add.
17804 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
17806 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
17807 of constant 0 offset.
17809 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
17811 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
17813 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
17815 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
17817 * config.gcc: add -with-{no-}msa build option.
17818 * config/mips/mips.h: Likewise.
17819 * doc/install.texi: Likewise.
17821 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
17823 PR tree-optimization/108603
17824 * explow.cc (convert_memory_address_addr_space_1): Only wrap
17825 the result of a recursive call in a CONST if no instructions
17828 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
17830 PR tree-optimization/108430
17831 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
17832 of inverted condition.
17834 2023-03-02 Jakub Jelinek <jakub@redhat.com>
17837 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
17838 comparison copy the bytes from ptr to a temporary buffer and clearing
17839 padding bits in there.
17841 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
17843 PR middle-end/108545
17844 * gimplify.cc (struct tree_operand_hash_no_se): New.
17845 (omp_index_mapping_groups_1, omp_index_mapping_groups,
17846 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
17847 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
17848 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
17849 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
17850 of tree_operand_hash.
17852 2023-03-01 LIU Hao <lh_mouse@126.com>
17855 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
17856 Remove the size limit `pch_VA_max_size`
17858 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
17860 PR middle-end/108546
17861 * omp-low.cc (lower_omp_target): Remove optional handling
17862 on the receiver side, i.e. inside target (data), for
17865 2023-03-01 Jakub Jelinek <jakub@redhat.com>
17868 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
17869 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
17871 2023-03-01 Richard Biener <rguenther@suse.de>
17873 PR tree-optimization/108970
17874 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
17875 Check we can copy the BBs.
17876 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
17878 (vect_do_peeling): Streamline error handling.
17880 2023-03-01 Richard Biener <rguenther@suse.de>
17882 PR tree-optimization/108950
17883 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
17884 Check oprnd0 is defined in the loop.
17885 * tree-vect-loop.cc (vectorizable_reduction): Record all
17886 operands vector types, compute that of invariants and
17887 properly update their SLP nodes.
17889 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
17892 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
17893 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
17895 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
17897 PR middle-end/107411
17898 PR middle-end/107411
17899 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
17901 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
17902 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
17904 2023-02-28 Jakub Jelinek <jakub@redhat.com>
17906 PR sanitizer/108894
17907 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
17908 comparison rather than index > bound.
17909 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
17910 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
17911 * doc/invoke.texi (-fsanitize=bounds): Document that whether
17912 flexible array member-like arrays are instrumented or not depends
17913 on -fstrict-flex-arrays* options of strict_flex_array attributes.
17914 (-fsanitize=bounds-strict): Document that flexible array members
17915 are not instrumented.
17917 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
17921 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
17922 (fmod<mode>3): Ditto.
17923 (fpremxf4_i387): Ditto.
17924 (reminderxf3): Ditto.
17925 (reminder<mode>3): Ditto.
17926 (fprem1xf4_i387): Ditto.
17928 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
17930 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
17931 generating FFS with mismatched operand and result modes, by using
17932 an explicit SIGN_EXTEND/ZERO_EXTEND.
17933 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
17934 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
17936 2023-02-27 Patrick Palka <ppalka@redhat.com>
17938 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
17939 * lra-int.h (lra_change_class): Likewise.
17940 * recog.h (which_op_alt): Likewise.
17941 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
17944 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17946 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
17948 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
17950 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
17951 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
17953 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
17955 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
17956 (xtensa_get_config_v3): New functions.
17958 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17960 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
17962 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
17964 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
17965 the macro to 0x1000000000.
17967 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
17970 * doc/gm2.texi (-fm2-pathname): New option documented.
17971 (-fm2-pathnameI): New option documented.
17972 (-fm2-prefix=): New option documented.
17973 (-fruntime-modules=): Update default module list.
17975 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
17978 * config/xtensa/xtensa-protos.h
17979 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
17980 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
17981 to xtensa_expand_call.
17982 (xtensa_expand_call): Emit the call and add a clobber expression
17983 for the static chain to it in case of windowed ABI.
17984 * config/xtensa/xtensa.md (call, call_value, sibcall)
17985 (sibcall_value): Call xtensa_expand_call and complete expansion
17986 right after that call.
17988 2023-02-24 Richard Biener <rguenther@suse.de>
17990 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
17991 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
17992 changing alignment of vec<T, A, vl_embed> and simplifying
17994 (vec<T, A, vl_embed>::address): Compute as this + 1.
17995 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
17996 vector instead of the offset of the m_vecdata member.
17997 (auto_vec<T, N>::m_data): Turn storage into
17998 uninitialized unsigned char.
17999 (auto_vec<T, N>::auto_vec): Allow allocation of one
18000 stack member. Initialize m_vec in a special way to
18001 avoid later stringop overflow diagnostics.
18002 * vec.cc (test_auto_alias): New.
18003 (vec_cc_tests): Call it.
18005 2023-02-24 Richard Biener <rguenther@suse.de>
18007 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
18008 take a const reference to the object, use address to
18010 (vec<T, A, vl_embed>::contains): Use address to access data.
18011 (vec<T, A, vl_embed>::operator[]): Use address instead of
18012 m_vecdata to access data.
18013 (vec<T, A, vl_embed>::iterate): Likewise.
18014 (vec<T, A, vl_embed>::copy): Likewise.
18015 (vec<T, A, vl_embed>::quick_push): Likewise.
18016 (vec<T, A, vl_embed>::pop): Likewise.
18017 (vec<T, A, vl_embed>::quick_insert): Likewise.
18018 (vec<T, A, vl_embed>::ordered_remove): Likewise.
18019 (vec<T, A, vl_embed>::unordered_remove): Likewise.
18020 (vec<T, A, vl_embed>::block_remove): Likewise.
18021 (vec<T, A, vl_heap>::address): Likewise.
18023 2023-02-24 Martin Liska <mliska@suse.cz>
18025 PR sanitizer/108834
18026 * asan.cc (asan_add_global): Use proper TU name for normal
18027 global variables (and aux_base_name for the artificial one).
18029 2023-02-24 Jakub Jelinek <jakub@redhat.com>
18031 * config/i386/i386-builtin.def: Update description of BDESC
18032 and BDESC_FIRST in file comment to include mask2.
18034 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18036 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
18038 2023-02-24 Jakub Jelinek <jakub@redhat.com>
18040 PR middle-end/108854
18041 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
18042 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
18043 nodes and adjust their DECL_CONTEXT.
18045 2023-02-24 Jakub Jelinek <jakub@redhat.com>
18048 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
18049 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
18050 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
18051 __builtin_ia32_cvtne2ps2bf16_v8bf,
18052 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
18053 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
18054 __builtin_ia32_cvtneps2bf16_v8sf_mask,
18055 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
18056 __builtin_ia32_cvtneps2bf16_v4sf_mask,
18057 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
18058 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
18059 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
18060 __builtin_ia32_dpbf16ps_v4sf_mask,
18061 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
18062 OPTION_MASK_ISA_AVX512VL.
18064 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
18066 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
18067 Add non-compact 32-bit multilibs.
18069 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
18071 * config/mips/mips.md (*clo<mode>2): New pattern.
18073 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
18075 * config/mips/mips.h (machine_function): New variable
18076 use_hazard_barrier_return_p.
18077 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
18078 (mips_hb_return_internal): New insn pattern.
18079 * config/mips/mips.cc (mips_attribute_table): Add attribute
18080 use_hazard_barrier_return.
18081 (mips_use_hazard_barrier_return_p): New static function.
18082 (mips_function_attr_inlinable_p): Likewise.
18083 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
18084 Emit error for unsupported architecture choice.
18085 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
18086 Return false for use_hazard_barrier_return.
18087 (mips_expand_epilogue): Emit hazard barrier return.
18088 * doc/extend.texi: Document use_hazard_barrier_return.
18090 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
18092 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
18093 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
18094 for the gcc-internal headers.
18096 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
18098 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
18099 and $(POSTCOMPILE) instead of manual dependency listing.
18100 * config/xtensa/xtensa-dynconfig.c: Rename to ...
18101 * config/xtensa/xtensa-dynconfig.cc: ... this.
18103 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
18105 * doc/cfg.texi: Reorder index entries around @items.
18106 * doc/cpp.texi: Ditto.
18107 * doc/cppenv.texi: Ditto.
18108 * doc/cppopts.texi: Ditto.
18109 * doc/generic.texi: Ditto.
18110 * doc/install.texi: Ditto.
18111 * doc/extend.texi: Ditto.
18112 * doc/invoke.texi: Ditto.
18113 * doc/md.texi: Ditto.
18114 * doc/rtl.texi: Ditto.
18115 * doc/tm.texi.in: Ditto.
18116 * doc/trouble.texi: Ditto.
18117 * doc/tm.texi: Regenerate.
18119 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18121 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
18122 the occurrence of general-purpose register used only once and for
18123 transferring intermediate value.
18125 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18127 * config/xtensa/xtensa.cc (machine_function): Add new member
18128 'eliminated_callee_saved_bmp'.
18129 (xtensa_can_eliminate_callee_saved_reg_p): New function to
18130 determine whether the register can be eliminated or not.
18131 (xtensa_expand_prologue): Add invoking the above function and
18132 elimination the use of callee-saved register by using its stack
18133 slot through the stack pointer (or the frame pointer if needed)
18135 (xtensa_expand_prologue): Modify to not emit register restoration
18136 insn from its stack slot if the register is already eliminated.
18138 2023-02-23 Jakub Jelinek <jakub@redhat.com>
18140 PR translation/108890
18141 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
18142 around fatal_error format strings.
18144 2023-02-23 Richard Biener <rguenther@suse.de>
18146 * tree-ssa-structalias.cc (handle_lhs_call): Do not
18147 re-create rhsc, only truncate it.
18149 2023-02-23 Jakub Jelinek <jakub@redhat.com>
18151 PR middle-end/106258
18152 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
18153 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
18155 2023-02-23 Richard Biener <rguenther@suse.de>
18157 * tree-if-conv.cc (tree_if_conversion): Properly manage
18158 memory of refs and the contained data references.
18160 2023-02-23 Richard Biener <rguenther@suse.de>
18162 PR tree-optimization/108888
18163 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
18164 calls to predicate.
18165 (predicate_statements): Only predicate calls with PLF_2.
18167 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18169 * config/xtensa/xtensa.md
18170 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
18171 Add missing "SI:" to PLUS RTXes.
18173 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
18176 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
18177 Emit (use (reg:SI A0_REG)) at the end in the sibling call
18178 (i.e. the same place as (return) in the normal call).
18180 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
18183 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
18186 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
18188 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
18189 (sibcall_value, sibcall_value_internal): Add 'use' expression
18192 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
18194 * doc/cppdiropts.texi: Reorder @opindex commands to precede
18195 @items they relate to.
18196 * doc/cppopts.texi: Ditto.
18197 * doc/cppwarnopts.texi: Ditto.
18198 * doc/invoke.texi: Ditto.
18199 * doc/lto.texi: Ditto.
18201 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
18203 * internal-fn.cc (expand_MASK_CALL): New.
18204 * internal-fn.def (MASK_CALL): New.
18205 * internal-fn.h (expand_MASK_CALL): New prototype.
18206 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
18207 for mask arguments also.
18208 * tree-if-conv.cc: Include cgraph.h.
18209 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
18210 (predicate_statements): Convert functions to IFN_MASK_CALL.
18211 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
18212 IFN_MASK_CALL as a SIMD function call.
18213 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
18214 IFN_MASK_CALL as an inbranch SIMD function call.
18215 Generate the mask vector arguments.
18217 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18219 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
18220 (class widen_reducop): Ditto.
18221 (class freducop): Ditto.
18222 (class widen_freducop): Ditto.
18224 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18225 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
18234 (vwredsumu): Ditto.
18235 (vfredusum): Ditto.
18236 (vfredosum): Ditto.
18239 (vfwredosum): Ditto.
18240 (vfwredusum): Ditto.
18241 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
18243 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18244 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
18245 (DEF_RVV_WU_OPS): Ditto.
18246 (DEF_RVV_WF_OPS): Ditto.
18247 (vint8mf8_t): Ditto.
18248 (vint8mf4_t): Ditto.
18249 (vint8mf2_t): Ditto.
18250 (vint8m1_t): Ditto.
18251 (vint8m2_t): Ditto.
18252 (vint8m4_t): Ditto.
18253 (vint8m8_t): Ditto.
18254 (vint16mf4_t): Ditto.
18255 (vint16mf2_t): Ditto.
18256 (vint16m1_t): Ditto.
18257 (vint16m2_t): Ditto.
18258 (vint16m4_t): Ditto.
18259 (vint16m8_t): Ditto.
18260 (vint32mf2_t): Ditto.
18261 (vint32m1_t): Ditto.
18262 (vint32m2_t): Ditto.
18263 (vint32m4_t): Ditto.
18264 (vint32m8_t): Ditto.
18265 (vuint8mf8_t): Ditto.
18266 (vuint8mf4_t): Ditto.
18267 (vuint8mf2_t): Ditto.
18268 (vuint8m1_t): Ditto.
18269 (vuint8m2_t): Ditto.
18270 (vuint8m4_t): Ditto.
18271 (vuint8m8_t): Ditto.
18272 (vuint16mf4_t): Ditto.
18273 (vuint16mf2_t): Ditto.
18274 (vuint16m1_t): Ditto.
18275 (vuint16m2_t): Ditto.
18276 (vuint16m4_t): Ditto.
18277 (vuint16m8_t): Ditto.
18278 (vuint32mf2_t): Ditto.
18279 (vuint32m1_t): Ditto.
18280 (vuint32m2_t): Ditto.
18281 (vuint32m4_t): Ditto.
18282 (vuint32m8_t): Ditto.
18283 (vfloat32mf2_t): Ditto.
18284 (vfloat32m1_t): Ditto.
18285 (vfloat32m2_t): Ditto.
18286 (vfloat32m4_t): Ditto.
18287 (vfloat32m8_t): Ditto.
18288 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
18289 (DEF_RVV_WU_OPS): Ditto.
18290 (DEF_RVV_WF_OPS): Ditto.
18291 (required_extensions_p): Add reduction support.
18292 (rvv_arg_type_info::get_base_vector_type): Ditto.
18293 (rvv_arg_type_info::get_tree_type): Ditto.
18294 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18295 * config/riscv/riscv.md: Ditto.
18296 * config/riscv/vector-iterators.md (minu): Ditto.
18297 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
18298 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
18299 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
18300 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
18301 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
18302 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
18303 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
18305 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18307 * config/riscv/iterators.md: New iterator.
18308 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
18309 (enum ternop_type): New enum.
18310 (class vmacc): New class.
18311 (class imac): Ditto.
18312 (class vnmsac): Ditto.
18313 (enum widen_ternop_type): New enum.
18314 (class vmadd): Ditto.
18315 (class vnmsub): Ditto.
18316 (class iwmac): Ditto.
18317 (class vwmacc): Ditto.
18318 (class vwmaccu): Ditto.
18319 (class vwmaccsu): Ditto.
18320 (class vwmaccus): Ditto.
18321 (class reverse_binop): Ditto.
18322 (class vfmacc): Ditto.
18323 (class vfnmsac): Ditto.
18324 (class vfmadd): Ditto.
18325 (class vfnmsub): Ditto.
18326 (class vfnmacc): Ditto.
18327 (class vfmsac): Ditto.
18328 (class vfnmadd): Ditto.
18329 (class vfmsub): Ditto.
18330 (class vfwmacc): Ditto.
18331 (class vfwnmacc): Ditto.
18332 (class vfwmsac): Ditto.
18333 (class vfwnmsac): Ditto.
18334 (class float_misc): Ditto.
18335 (class fcmp): Ditto.
18336 (class vfclass): Ditto.
18337 (class vfcvt_x): Ditto.
18338 (class vfcvt_rtz_x): Ditto.
18339 (class vfcvt_f): Ditto.
18340 (class vfwcvt_x): Ditto.
18341 (class vfwcvt_rtz_x): Ditto.
18342 (class vfwcvt_f): Ditto.
18343 (class vfncvt_x): Ditto.
18344 (class vfncvt_rtz_x): Ditto.
18345 (class vfncvt_f): Ditto.
18346 (class vfncvt_rod_f): Ditto.
18348 * config/riscv/riscv-vector-builtins-bases.h:
18349 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
18393 (vfcvt_rtz_x): Ditto.
18394 (vfcvt_rtz_xu): Ditto.
18397 (vfwcvt_xu): Ditto.
18398 (vfwcvt_rtz_x): Ditto.
18399 (vfwcvt_rtz_xu): Ditto.
18402 (vfncvt_xu): Ditto.
18403 (vfncvt_rtz_x): Ditto.
18404 (vfncvt_rtz_xu): Ditto.
18406 (vfncvt_rod_f): Ditto.
18407 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
18408 (struct move_def): Ditto.
18409 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
18410 (DEF_RVV_CONVERT_I_OPS): Ditto.
18411 (DEF_RVV_CONVERT_U_OPS): Ditto.
18412 (DEF_RVV_WCONVERT_I_OPS): Ditto.
18413 (DEF_RVV_WCONVERT_U_OPS): Ditto.
18414 (DEF_RVV_WCONVERT_F_OPS): Ditto.
18415 (vfloat64m1_t): Ditto.
18416 (vfloat64m2_t): Ditto.
18417 (vfloat64m4_t): Ditto.
18418 (vfloat64m8_t): Ditto.
18419 (vint32mf2_t): Ditto.
18420 (vint32m1_t): Ditto.
18421 (vint32m2_t): Ditto.
18422 (vint32m4_t): Ditto.
18423 (vint32m8_t): Ditto.
18424 (vint64m1_t): Ditto.
18425 (vint64m2_t): Ditto.
18426 (vint64m4_t): Ditto.
18427 (vint64m8_t): Ditto.
18428 (vuint32mf2_t): Ditto.
18429 (vuint32m1_t): Ditto.
18430 (vuint32m2_t): Ditto.
18431 (vuint32m4_t): Ditto.
18432 (vuint32m8_t): Ditto.
18433 (vuint64m1_t): Ditto.
18434 (vuint64m2_t): Ditto.
18435 (vuint64m4_t): Ditto.
18436 (vuint64m8_t): Ditto.
18437 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
18438 (DEF_RVV_CONVERT_U_OPS): Ditto.
18439 (DEF_RVV_WCONVERT_I_OPS): Ditto.
18440 (DEF_RVV_WCONVERT_U_OPS): Ditto.
18441 (DEF_RVV_WCONVERT_F_OPS): Ditto.
18442 (DEF_RVV_F_OPS): Ditto.
18443 (DEF_RVV_WEXTF_OPS): Ditto.
18444 (required_extensions_p): Adjust for floating-point support.
18445 (check_required_extensions): Ditto.
18446 (unsigned_base_type_p): Ditto.
18447 (get_mode_for_bitsize): Ditto.
18448 (rvv_arg_type_info::get_base_vector_type): Ditto.
18449 (rvv_arg_type_info::get_tree_type): Ditto.
18450 * config/riscv/riscv-vector-builtins.def (v_f): New define.
18453 (xu_v): New define.
18455 (xu_w): New define.
18456 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
18457 (function_expander::arg_mode): New function.
18458 * config/riscv/vector-iterators.md (sof): New iterator.
18464 (fixuns_trunc): Ditto.
18466 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
18467 (@pred_<optab><mode>): Ditto.
18468 (@pred_<optab><mode>_scalar): Ditto.
18469 (@pred_<optab><mode>_reverse_scalar): Ditto.
18470 (@pred_<copysign><mode>): Ditto.
18471 (@pred_<copysign><mode>_scalar): Ditto.
18472 (@pred_mul_<optab><mode>): Ditto.
18473 (pred_mul_<optab><mode>_undef_merge): Ditto.
18474 (*pred_<madd_nmsub><mode>): Ditto.
18475 (*pred_<macc_nmsac><mode>): Ditto.
18476 (*pred_mul_<optab><mode>): Ditto.
18477 (@pred_mul_<optab><mode>_scalar): Ditto.
18478 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
18479 (*pred_<madd_nmsub><mode>_scalar): Ditto.
18480 (*pred_<macc_nmsac><mode>_scalar): Ditto.
18481 (*pred_mul_<optab><mode>_scalar): Ditto.
18482 (@pred_neg_mul_<optab><mode>): Ditto.
18483 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
18484 (*pred_<nmadd_msub><mode>): Ditto.
18485 (*pred_<nmacc_msac><mode>): Ditto.
18486 (*pred_neg_mul_<optab><mode>): Ditto.
18487 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
18488 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
18489 (*pred_<nmadd_msub><mode>_scalar): Ditto.
18490 (*pred_<nmacc_msac><mode>_scalar): Ditto.
18491 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
18492 (@pred_<misc_op><mode>): Ditto.
18493 (@pred_class<mode>): Ditto.
18494 (@pred_dual_widen_<optab><mode>): Ditto.
18495 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
18496 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
18497 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
18498 (@pred_widen_mul_<optab><mode>): Ditto.
18499 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
18500 (@pred_widen_neg_mul_<optab><mode>): Ditto.
18501 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
18502 (@pred_cmp<mode>): Ditto.
18503 (*pred_cmp<mode>): Ditto.
18504 (*pred_cmp<mode>_narrow): Ditto.
18505 (@pred_cmp<mode>_scalar): Ditto.
18506 (*pred_cmp<mode>_scalar): Ditto.
18507 (*pred_cmp<mode>_scalar_narrow): Ditto.
18508 (@pred_eqne<mode>_scalar): Ditto.
18509 (*pred_eqne<mode>_scalar): Ditto.
18510 (*pred_eqne<mode>_scalar_narrow): Ditto.
18511 (@pred_merge<mode>_scalar): Ditto.
18512 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
18513 (@pred_<fix_cvt><mode>): Ditto.
18514 (@pred_<float_cvt><mode>): Ditto.
18515 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
18516 (@pred_widen_<fix_cvt><mode>): Ditto.
18517 (@pred_widen_<float_cvt><mode>): Ditto.
18518 (@pred_extend<mode>): Ditto.
18519 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
18520 (@pred_narrow_<fix_cvt><mode>): Ditto.
18521 (@pred_narrow_<float_cvt><mode>): Ditto.
18522 (@pred_trunc<mode>): Ditto.
18523 (@pred_rod_trunc<mode>): Ditto.
18525 2023-02-22 Jakub Jelinek <jakub@redhat.com>
18527 PR middle-end/106258
18528 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
18529 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
18530 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
18531 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
18533 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
18535 * common.opt (-Wcomplain-wrong-lang): New.
18536 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
18537 * opts-common.cc (prune_options): Handle it.
18538 * opts-global.cc (complain_wrong_lang): Use it.
18540 2023-02-21 David Malcolm <dmalcolm@redhat.com>
18543 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
18545 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
18548 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
18550 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
18551 (sibcall_value, sibcall_value_internal): Add 'use' expression
18554 2023-02-21 Richard Biener <rguenther@suse.de>
18556 PR tree-optimization/108691
18557 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
18558 assert about calls_setjmp not becoming true when it was false.
18560 2023-02-21 Richard Biener <rguenther@suse.de>
18562 PR tree-optimization/108793
18563 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
18564 Use convert operands to niter_type when computing num.
18566 2023-02-21 Richard Biener <rguenther@suse.de>
18569 2023-02-13 Richard Biener <rguenther@suse.de>
18571 PR tree-optimization/108691
18572 * tree-cfg.cc (notice_special_calls): When the CFG is built
18573 honor gimple_call_ctrl_altering_p.
18574 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
18575 temporarily if the call is not control-altering.
18576 * calls.cc (emit_call_1): Do not add REG_SETJMP if
18577 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
18579 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18581 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
18582 true if register A0 (return address register) when -Og is specified.
18584 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
18586 * config/i386/predicates.md
18587 (general_x64constmem_operand): New predicate.
18588 * config/i386/i386.md (*cmpqi_ext<mode>_1):
18589 Use nonimm_x64constmem_operand.
18590 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
18591 (*addqi_ext<mode>_1): Ditto.
18592 (*testqi_ext<mode>_1): Ditto.
18593 (*andqi_ext<mode>_1): Ditto.
18594 (*andqi_ext<mode>_1_cc): Ditto.
18595 (*<any_or:code>qi_ext<mode>_1): Ditto.
18596 (*xorqi_ext<mode>_1_cc): Ditto.
18598 2023-02-20 Jakub Jelinek <jakub2redhat.com>
18601 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
18602 gen_umadddi4_highpart{,_le}.
18604 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
18606 * config/riscv/riscv.md (prefetch): Use r instead of p for the
18608 (riscv_prefetchi_<mode>): Ditto.
18610 2023-02-20 Richard Biener <rguenther@suse.de>
18612 PR tree-optimization/108816
18613 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
18614 versioning condition split prerequesite, assert required
18617 2023-02-20 Richard Biener <rguenther@suse.de>
18619 PR tree-optimization/108825
18620 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
18621 loop-local verfication only verify there's no pending SSA
18624 2023-02-20 Richard Biener <rguenther@suse.de>
18626 PR tree-optimization/108819
18627 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
18628 we have an SSA name as iv_2 as expected.
18630 2023-02-18 Jakub Jelinek <jakub@redhat.com>
18632 PR tree-optimization/108819
18633 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
18635 2023-02-18 Jakub Jelinek <jakub@redhat.com>
18638 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
18639 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
18641 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
18642 with ix86_replace_reg_with_reg.
18644 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
18646 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
18648 2023-02-18 Xi Ruoyao <xry111@xry111.site>
18650 * config.gcc (triplet_abi): Set its value based on $with_abi,
18651 instead of $target.
18652 (la_canonical_triplet): Set it after $triplet_abi is set
18654 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
18655 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
18658 2023-02-18 Andrew Pinski <apinski@marvell.com>
18660 * match.pd: Remove #if GIMPLE around the
18663 2023-02-18 Andrew Pinski <apinski@marvell.com>
18665 * value-query.h (get_range_query): Return the global ranges
18666 for a nullptr func.
18668 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
18670 * doc/invoke.texi (@item -Wall): Fix typo in
18673 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
18676 * config/i386/predicates.md
18677 (nonimm_x64constmem_operand): New predicate.
18678 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
18679 (*subqi_ext<mode>_0): Ditto.
18680 (*andqi_ext<mode>_0): Ditto.
18681 (*<any_or:code>qi_ext<mode>_0): Ditto.
18683 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
18686 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
18687 int_outermode instead of GET_MODE (tem) to prevent
18688 VOIDmode from entering simplify_gen_subreg.
18690 2023-02-17 Richard Biener <rguenther@suse.de>
18692 PR tree-optimization/108821
18693 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
18694 move volatile accesses.
18696 2023-02-17 Richard Biener <rguenther@suse.de>
18698 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
18699 called on virtual operands.
18700 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
18701 ssa_undefined_value_p calls.
18702 (vn_phi_insert): Likewise.
18703 (set_ssa_val_to): Likewise.
18704 (visit_phi): Avoid extra work with equivalences for
18705 virtual operand PHIs.
18707 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18709 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
18711 (class mask_nlogic): Ditto.
18712 (class mask_notlogic): Ditto.
18713 (class vmmv): Ditto.
18714 (class vmclr): Ditto.
18715 (class vmset): Ditto.
18716 (class vmnot): Ditto.
18717 (class vcpop): Ditto.
18718 (class vfirst): Ditto.
18719 (class mask_misc): Ditto.
18720 (class viota): Ditto.
18721 (class vid): Ditto.
18723 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18724 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
18743 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
18744 (struct mask_alu_def): Ditto.
18746 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18747 * config/riscv/riscv-vector-builtins.cc: Ditto.
18748 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
18749 for dest it scalar RVV intrinsics.
18750 * config/riscv/vector-iterators.md (sof): New iterator.
18751 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
18752 (@pred_<optab>not<mode>): New pattern.
18753 (@pred_popcount<VB:mode><P:mode>): New pattern.
18754 (@pred_ffs<VB:mode><P:mode>): New pattern.
18755 (@pred_<misc_op><mode>): New pattern.
18756 (@pred_iota<mode>): New pattern.
18757 (@pred_series<mode>): New pattern.
18759 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18761 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
18765 * config/riscv/riscv-vector-builtins.cc: Ditto.
18767 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18768 kito-cheng <kito.cheng@sifive.com>
18770 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
18771 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
18772 (sew64_scalar_helper): New function.
18773 * config/riscv/vector.md: Normalization.
18775 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18777 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
18839 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18841 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
18842 (@pred_<optab><mode>_scalar): Ditto.
18843 (*pred_<optab><mode>_scalar): Ditto.
18844 (*pred_<optab><mode>_extended_scalar): Ditto.
18846 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18848 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
18849 (init_builtins): Ditto.
18850 (mangle_builtin_type): Ditto.
18851 (verify_type_context): Ditto.
18852 (handle_pragma_vector): Ditto.
18853 (builtin_decl): Ditto.
18854 (expand_builtin): Ditto.
18855 (const_vec_all_same_in_range_p): Ditto.
18856 (legitimize_move): Ditto.
18857 (emit_vlmax_op): Ditto.
18858 (emit_nonvlmax_op): Ditto.
18859 (get_vlmul): Ditto.
18860 (get_ratio): Ditto.
18863 (get_avl_type): Ditto.
18864 (calculate_ratio): Ditto.
18865 (enum vlmul_type): Ditto.
18867 (neg_simm5_p): Ditto.
18868 (has_vi_variant_p): Ditto.
18870 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18872 * config/riscv/riscv-protos.h (simm32_p): Remove.
18873 * config/riscv/riscv-v.cc (simm32_p): Ditto.
18874 * config/riscv/vector.md: Use immediate_operand
18875 instead of riscv_vector::simm32_p.
18877 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
18879 * doc/invoke.texi (Optimize Options): Reword the explanation
18880 getting minimal, maximal and default values of a parameter.
18882 2023-02-16 Patrick Palka <ppalka@redhat.com>
18884 * addresses.h: Mechanically drop 'static' from 'static inline'
18885 functions via s/^static inline/inline/g.
18886 * asan.h: Likewise.
18887 * attribs.h: Likewise.
18888 * basic-block.h: Likewise.
18889 * bitmap.h: Likewise.
18890 * cfghooks.h: Likewise.
18891 * cfgloop.h: Likewise.
18892 * cgraph.h: Likewise.
18893 * cselib.h: Likewise.
18894 * data-streamer.h: Likewise.
18895 * debug.h: Likewise.
18897 * diagnostic.h: Likewise.
18898 * dominance.h: Likewise.
18899 * dumpfile.h: Likewise.
18900 * emit-rtl.h: Likewise.
18901 * except.h: Likewise.
18902 * expmed.h: Likewise.
18903 * expr.h: Likewise.
18904 * fixed-value.h: Likewise.
18905 * gengtype.h: Likewise.
18906 * gimple-expr.h: Likewise.
18907 * gimple-iterator.h: Likewise.
18908 * gimple-predict.h: Likewise.
18909 * gimple-range-fold.h: Likewise.
18910 * gimple-ssa.h: Likewise.
18911 * gimple.h: Likewise.
18912 * graphite.h: Likewise.
18913 * hard-reg-set.h: Likewise.
18914 * hash-map.h: Likewise.
18915 * hash-set.h: Likewise.
18916 * hash-table.h: Likewise.
18917 * hwint.h: Likewise.
18918 * input.h: Likewise.
18919 * insn-addr.h: Likewise.
18920 * internal-fn.h: Likewise.
18921 * ipa-fnsummary.h: Likewise.
18922 * ipa-icf-gimple.h: Likewise.
18923 * ipa-inline.h: Likewise.
18924 * ipa-modref.h: Likewise.
18925 * ipa-prop.h: Likewise.
18926 * ira-int.h: Likewise.
18928 * lra-int.h: Likewise.
18930 * lto-streamer.h: Likewise.
18931 * memmodel.h: Likewise.
18932 * omp-general.h: Likewise.
18933 * optabs-query.h: Likewise.
18934 * optabs.h: Likewise.
18935 * plugin.h: Likewise.
18936 * pretty-print.h: Likewise.
18937 * range.h: Likewise.
18938 * read-md.h: Likewise.
18939 * recog.h: Likewise.
18940 * regs.h: Likewise.
18941 * rtl-iter.h: Likewise.
18943 * sbitmap.h: Likewise.
18944 * sched-int.h: Likewise.
18945 * sel-sched-ir.h: Likewise.
18946 * sese.h: Likewise.
18947 * sparseset.h: Likewise.
18948 * ssa-iterators.h: Likewise.
18949 * system.h: Likewise.
18950 * target-globals.h: Likewise.
18951 * target.h: Likewise.
18952 * timevar.h: Likewise.
18953 * tree-chrec.h: Likewise.
18954 * tree-data-ref.h: Likewise.
18955 * tree-iterator.h: Likewise.
18956 * tree-outof-ssa.h: Likewise.
18957 * tree-phinodes.h: Likewise.
18958 * tree-scalar-evolution.h: Likewise.
18959 * tree-sra.h: Likewise.
18960 * tree-ssa-alias.h: Likewise.
18961 * tree-ssa-live.h: Likewise.
18962 * tree-ssa-loop-manip.h: Likewise.
18963 * tree-ssa-loop.h: Likewise.
18964 * tree-ssa-operands.h: Likewise.
18965 * tree-ssa-propagate.h: Likewise.
18966 * tree-ssa-sccvn.h: Likewise.
18967 * tree-ssa.h: Likewise.
18968 * tree-ssanames.h: Likewise.
18969 * tree-streamer.h: Likewise.
18970 * tree-switch-conversion.h: Likewise.
18971 * tree-vectorizer.h: Likewise.
18972 * tree.h: Likewise.
18973 * wide-int.h: Likewise.
18975 2023-02-16 Jakub Jelinek <jakub@redhat.com>
18977 PR tree-optimization/108657
18978 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
18979 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
18980 is a call to internal or builtin function.
18982 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
18984 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
18985 using-declaration to unhide functions.
18987 2023-02-16 Jakub Jelinek <jakub@redhat.com>
18989 PR tree-optimization/108783
18990 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
18991 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
18992 t to curr->op. Otherwise, punt if either newop1 or newop2 are
18993 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
18995 2023-02-16 Richard Biener <rguenther@suse.de>
18997 PR tree-optimization/108791
18998 * tree-ssa-forwprop.cc (optimize_vector_load): Build
18999 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
19002 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
19005 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
19006 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
19007 (ix86_expand_prologue): Likewise.
19009 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
19011 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
19013 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
19015 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
19016 int248_register_operand predicate in zero_extract sub-RTX.
19017 (*cmpqi_ext<mode>_2): Ditto.
19018 (*cmpqi_ext<mode>_3): Ditto.
19019 (*cmpqi_ext<mode>_4): Ditto.
19020 (*extzvqi_mem_rex64): Ditto.
19022 (*insvqi_1_mem_rex64): Ditto.
19023 (@insv<mode>_1): Ditto.
19024 (*insvqi_1): Ditto.
19025 (*insvqi_2): Ditto.
19026 (*insvqi_3): Ditto.
19027 (*extendqi<SWI24:mode>_ext_1): Ditto.
19028 (*addqi_ext<mode>_1): Ditto.
19029 (*addqi_ext<mode>_2): Ditto.
19030 (*subqi_ext<mode>_2): Ditto.
19031 (*testqi_ext<mode>_1): Ditto.
19032 (*testqi_ext<mode>_2): Ditto.
19033 (*andqi_ext<mode>_1): Ditto.
19034 (*andqi_ext<mode>_1_cc): Ditto.
19035 (*andqi_ext<mode>_2): Ditto.
19036 (*<any_or:code>qi_ext<mode>_1): Ditto.
19037 (*<any_or:code>qi_ext<mode>_2): Ditto.
19038 (*xorqi_ext<mode>_1_cc): Ditto.
19039 (*negqi_ext<mode>_2): Ditto.
19040 (*ashlqi_ext<mode>_2): Ditto.
19041 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
19043 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
19045 * config/i386/predicates.md (int248_register_operand):
19046 Rename from extr_register_operand.
19047 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
19048 (*extzx<mode>): Ditto.
19049 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
19050 (*ashl<mode>3_mask): Ditto.
19051 (*<any_shiftrt:insn><mode>3_mask): Ditto.
19052 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
19053 (*<any_rotate:insn><mode>3_mask): Ditto.
19054 (*<btsc><mode>_mask): Ditto.
19055 (*btr<mode>_mask): Ditto.
19056 (*jcc_bt<mode>_mask_1): Ditto.
19058 2023-02-15 Richard Biener <rguenther@suse.de>
19060 PR middle-end/26854
19061 * df-core.cc (df_worklist_propagate_forward): Put later
19062 blocks on worklist and only earlier blocks on pending.
19063 (df_worklist_propagate_backward): Likewise.
19064 (df_worklist_dataflow_doublequeue): Change the iteration
19065 to process new blocks in the same iteration if that
19066 maintains the iteration order.
19068 2023-02-15 Marek Polacek <polacek@redhat.com>
19070 PR middle-end/106080
19071 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
19074 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19076 * config/riscv/predicates.md: Refine codes.
19077 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
19078 * config/riscv/riscv-v.cc: Refine codes.
19079 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
19081 (class imac): New class.
19082 (enum widen_ternop_type): New enum.
19083 (class iwmac): New class.
19085 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19086 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
19094 * config/riscv/riscv-vector-builtins.cc
19095 (function_builder::apply_predication): Adjust for multiply-add support.
19096 (function_expander::add_vundef_operand): Refine codes.
19097 (function_expander::use_ternop_insn): New function.
19098 (function_expander::use_widen_ternop_insn): Ditto.
19099 * config/riscv/riscv-vector-builtins.h: New function.
19100 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
19101 (pred_mul_<optab><mode>_undef_merge): Ditto.
19102 (*pred_<madd_nmsub><mode>): Ditto.
19103 (*pred_<macc_nmsac><mode>): Ditto.
19104 (*pred_mul_<optab><mode>): Ditto.
19105 (@pred_mul_<optab><mode>_scalar): Ditto.
19106 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
19107 (*pred_<madd_nmsub><mode>_scalar): Ditto.
19108 (*pred_<macc_nmsac><mode>_scalar): Ditto.
19109 (*pred_mul_<optab><mode>_scalar): Ditto.
19110 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
19111 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
19112 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
19113 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
19114 (@pred_widen_mul_plus<su><mode>): Ditto.
19115 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
19116 (@pred_widen_mul_plussu<mode>): Ditto.
19117 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
19118 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
19120 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19122 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
19123 (vector_all_trues_mask_operand): New predicate.
19124 (vector_undef_operand): New predicate.
19125 (ltge_operator): New predicate.
19126 (comparison_except_ltge_operator): New predicate.
19127 (comparison_except_eqge_operator): New predicate.
19128 (ge_operator): New predicate.
19129 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
19130 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
19132 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19133 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
19143 * config/riscv/riscv-vector-builtins-shapes.cc
19144 (struct return_mask_def): Adjust for compare support.
19145 * config/riscv/riscv-vector-builtins.cc
19146 (function_expander::use_compare_insn): New function.
19147 * config/riscv/riscv-vector-builtins.h
19148 (function_expander::add_integer_operand): Ditto.
19149 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
19150 * config/riscv/riscv.md: Add vector min/max attributes.
19151 * config/riscv/vector-iterators.md (xnor): New iterator.
19152 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
19153 (*pred_cmp<mode>): Ditto.
19154 (*pred_cmp<mode>_narrow): Ditto.
19155 (@pred_ltge<mode>): Ditto.
19156 (*pred_ltge<mode>): Ditto.
19157 (*pred_ltge<mode>_narrow): Ditto.
19158 (@pred_cmp<mode>_scalar): Ditto.
19159 (*pred_cmp<mode>_scalar): Ditto.
19160 (*pred_cmp<mode>_scalar_narrow): Ditto.
19161 (@pred_eqne<mode>_scalar): Ditto.
19162 (*pred_eqne<mode>_scalar): Ditto.
19163 (*pred_eqne<mode>_scalar_narrow): Ditto.
19164 (*pred_cmp<mode>_extended_scalar): Ditto.
19165 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
19166 (*pred_eqne<mode>_extended_scalar): Ditto.
19167 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
19168 (@pred_ge<mode>_scalar): Ditto.
19169 (@pred_<optab><mode>): Ditto.
19170 (@pred_n<optab><mode>): Ditto.
19171 (@pred_<optab>n<mode>): Ditto.
19172 (@pred_not<mode>): Ditto.
19174 2023-02-15 Martin Jambor <mjambor@suse.cz>
19177 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
19178 creation of non-scalar replacements even if IPA-CP knows their
19181 2023-02-15 Jakub Jelinek <jakub@redhat.com>
19185 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
19186 expander, change operand 3 to be TImode, emit maddlddi4 and
19187 umadddi4_highpart{,_le} with its low half and finally add the high
19188 half to the result.
19190 2023-02-15 Martin Liska <mliska@suse.cz>
19192 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
19194 2023-02-15 Richard Biener <rguenther@suse.de>
19196 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
19197 for with_poison and alias worklist to it.
19198 (sanitize_asan_mark_poison): Likewise.
19200 2023-02-15 Richard Biener <rguenther@suse.de>
19203 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
19204 Combine bitmap test and set.
19205 (scalar_chain::add_insn): Likewise.
19206 (scalar_chain::analyze_register_chain): Remove redundant
19207 attempt to add to queue and instead strengthen assert.
19208 Sink common attempts to mark the def dual-mode.
19209 (scalar_chain::add_to_queue): Remove redundant insn bitmap
19212 2023-02-15 Richard Biener <rguenther@suse.de>
19215 * config/i386/i386-features.cc (convert_scalars_to_vector):
19216 Switch candidates bitmaps to tree view before building the chains.
19218 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
19220 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
19221 "failure trying to reload" call.
19223 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
19225 * gdbinit.in (phrs): New command.
19226 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
19227 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
19229 2023-02-14 David Faust <david.faust@oracle.com>
19232 * config/bpf/constraints.md (q): New memory constraint.
19233 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
19234 (zero_extendqidi2): Likewise.
19235 (zero_extendsidi2): Likewise.
19236 (*mov<MM:mode>): Likewise.
19238 2023-02-14 Andrew Pinski <apinski@marvell.com>
19240 PR tree-optimization/108355
19241 PR tree-optimization/96921
19242 * match.pd: Add pattern for "1 - bool_val".
19244 2023-02-14 Richard Biener <rguenther@suse.de>
19246 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
19247 basic block index hashing on the availability of ->cclhs.
19248 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
19249 rely on ->cclhs availability.
19250 (vn_phi_lookup): Set ->cclhs only when we are eventually
19251 going to CSE the PHI.
19252 (vn_phi_insert): Likewise.
19254 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
19256 * gimplify.cc (gimplify_save_expr): Add missing guard.
19258 2023-02-14 Richard Biener <rguenther@suse.de>
19260 PR tree-optimization/108782
19261 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
19262 Make sure we're not vectorizing an inner loop.
19264 2023-02-14 Jakub Jelinek <jakub@redhat.com>
19266 PR sanitizer/108777
19267 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
19268 * asan.h (asan_memfn_rtl): Declare.
19269 * asan.cc (asan_memfn_rtls): New variable.
19270 (asan_memfn_rtl): New function.
19271 * builtins.cc (expand_builtin): If
19272 param_asan_kernel_mem_intrinsic_prefix and function is
19273 kernel-{,hw}address sanitized, emit calls to
19274 __{,hw}asan_{memcpy,memmove,memset} rather than
19275 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
19276 instead of flag_sanitize & SANITIZE_ADDRESS to check if
19277 asan_intercepted_p functions shouldn't be expanded inline.
19279 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
19281 PR tree-optimization/96373
19282 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
19283 operations on the loop mask. Reject partial vectors if this isn't
19286 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
19288 PR rtl-optimization/108681
19289 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
19290 code to handle bare uses and clobbers.
19292 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
19294 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
19295 caller_save_p flag when clearing defined_p flag.
19296 (setup_reg_equiv): Ditto.
19297 * lra-constraints.cc (lra_constraints): Ditto.
19299 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
19302 * config/i386/predicates.md (extr_register_operand):
19303 New special predicate.
19304 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
19305 as operand 1 predicate.
19306 (*exzv<mode>): Ditto.
19307 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
19309 2023-02-13 Richard Biener <rguenther@suse.de>
19311 PR tree-optimization/28614
19312 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
19313 walking all edges in most cases.
19314 (vn_nary_op_insert_pieces_predicated): Avoid repeated
19315 calls to can_track_predicate_on_edge unless checking is
19317 (process_bb): Instead call it once here for each edge
19318 we register possibly multiple predicates on.
19320 2023-02-13 Richard Biener <rguenther@suse.de>
19322 PR tree-optimization/108691
19323 * tree-cfg.cc (notice_special_calls): When the CFG is built
19324 honor gimple_call_ctrl_altering_p.
19325 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
19326 temporarily if the call is not control-altering.
19327 * calls.cc (emit_call_1): Do not add REG_SETJMP if
19328 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
19330 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
19333 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
19334 (struct s390_sched_state): Initialise to zero.
19335 (s390_sched_variable_issue): For better debuggability also emit
19337 (s390_sched_init): Unconditionally reset scheduler state.
19339 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
19341 * ifcvt.h (noce_if_info::cond_inverted): New field.
19342 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
19343 values when cond_inverted is true.
19344 (noce_find_if_block): Allow the condition to be inverted when
19345 handling conditional moves.
19347 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
19349 * config/s390/predicates.md (execute_operation): Use
19350 constrain_operands instead of extract_constrain_insn in order to
19351 determine wheter there exists a valid alternative.
19353 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
19355 * common/config/arc/arc-common.cc (arc_option_optimization_table):
19356 Remove millicode from list.
19358 2023-02-13 Martin Liska <mliska@suse.cz>
19360 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
19362 2023-02-13 Richard Biener <rguenther@suse.de>
19364 PR tree-optimization/106722
19365 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
19366 whether we marked a stmt.
19367 (mark_control_dependent_edges_necessary): When
19368 mark_last_stmt_necessary didn't mark any stmt make sure
19369 to mark its control dependent edges.
19370 (propagate_necessity): Likewise.
19372 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
19374 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
19375 (DWARF_FRAME_REGISTERS): New.
19376 (DWARF_REG_TO_UNWIND_COLUMN): New.
19378 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
19380 * doc/sourcebuild.texi: Remove (broken) direct reference to
19381 "The GNU configure and build system".
19383 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
19385 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
19386 gen_add3_insn to gen_rtx_SET.
19387 (riscv_adjust_libcall_cfi_epilogue): Likewise.
19389 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19391 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
19392 (class vnclip): Ditto.
19394 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19395 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
19404 * config/riscv/vector-iterators.md (su): Add instruction.
19407 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
19408 (@pred_<sat_op><mode>_scalar): Ditto.
19409 (*pred_<sat_op><mode>_scalar): Ditto.
19410 (*pred_<sat_op><mode>_extended_scalar): Ditto.
19411 (@pred_narrow_clip<v_su><mode>): Ditto.
19412 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
19414 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19416 * config/riscv/constraints.md (Wbr): Remove unused constraint.
19417 * config/riscv/predicates.md: Fix move operand predicate.
19418 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
19419 (class vncvt_x): Ditto.
19420 (class vmerge): Ditto.
19421 (class vmv_v): Ditto.
19423 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19424 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
19431 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
19432 (struct move_def): Ditto.
19434 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19435 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
19436 (DEF_RVV_WEXTU_OPS): Ditto
19437 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
19442 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
19443 * config/riscv/vector-iterators.md (nmsac):New iterator.
19444 (nmsub): New iterator.
19445 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
19446 (@pred_merge<mode>_scalar): New pattern.
19447 (*pred_merge<mode>_scalar): New pattern.
19448 (*pred_merge<mode>_extended_scalar): New pattern.
19449 (@pred_narrow_<optab><mode>): New pattern.
19450 (@pred_narrow_<optab><mode>_scalar): New pattern.
19451 (@pred_trunc<mode>): New pattern.
19453 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19455 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
19456 (class vmsbc): Ditto.
19457 (BASE): Define new class.
19458 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19459 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
19461 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
19464 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19465 * config/riscv/riscv-vector-builtins.cc
19466 (function_expander::use_exact_insn): Adjust for new support
19467 * config/riscv/riscv-vector-builtins.h
19468 (function_base::has_merge_operand_p): New function.
19469 * config/riscv/vector-iterators.md: New iterator.
19470 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
19471 (@pred_msbc<mode>): Ditto.
19472 (@pred_madc<mode>_scalar): Ditto.
19473 (@pred_msbc<mode>_scalar): Ditto.
19474 (*pred_madc<mode>_scalar): Ditto.
19475 (*pred_madc<mode>_extended_scalar): Ditto.
19476 (*pred_msbc<mode>_scalar): Ditto.
19477 (*pred_msbc<mode>_extended_scalar): Ditto.
19478 (@pred_madc<mode>_overflow): Ditto.
19479 (@pred_msbc<mode>_overflow): Ditto.
19480 (@pred_madc<mode>_overflow_scalar): Ditto.
19481 (@pred_msbc<mode>_overflow_scalar): Ditto.
19482 (*pred_madc<mode>_overflow_scalar): Ditto.
19483 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
19484 (*pred_msbc<mode>_overflow_scalar): Ditto.
19485 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
19487 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19489 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
19490 * config/riscv/riscv-v.cc (simm32_p): Ditto.
19491 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
19492 (class vsbc): Ditto.
19494 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19495 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
19497 * config/riscv/riscv-vector-builtins-shapes.cc
19498 (struct no_mask_policy_def): Ditto.
19500 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19501 * config/riscv/riscv-vector-builtins.cc
19502 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
19503 (rvv_arg_type_info::get_tree_type): Ditto.
19504 (function_expander::use_exact_insn): Ditto.
19505 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
19506 (function_base::use_mask_predication_p): New function.
19507 * config/riscv/vector-iterators.md: New iterator.
19508 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
19509 (@pred_sbc<mode>): Ditto.
19510 (@pred_adc<mode>_scalar): Ditto.
19511 (@pred_sbc<mode>_scalar): Ditto.
19512 (*pred_adc<mode>_scalar): Ditto.
19513 (*pred_adc<mode>_extended_scalar): Ditto.
19514 (*pred_sbc<mode>_scalar): Ditto.
19515 (*pred_sbc<mode>_extended_scalar): Ditto.
19517 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19519 * config/riscv/vector.md: use "zero" reg.
19521 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19523 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
19525 (class vwmulsu): Ditto.
19526 (class vwcvt): Ditto.
19527 (BASE): Add integer widening support.
19528 * config/riscv/riscv-vector-builtins-bases.h: Ditto
19529 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
19530 (vwsub): New class.
19531 (vwmul): New class.
19532 (vwmulu): New class.
19533 (vwmulsu): New class.
19534 (vwaddu): New class.
19535 (vwsubu): New class.
19536 (vwcvt_x): New class.
19537 (vwcvtu_x): New class.
19538 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
19540 (struct widen_alu_def): New class.
19541 (SHAPE): New class.
19542 * config/riscv/riscv-vector-builtins-shapes.h: New class.
19543 * config/riscv/riscv-vector-builtins.cc
19544 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
19545 (rvv_arg_type_info::get_tree_type): Ditto.
19546 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
19548 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
19550 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
19551 * config/riscv/riscv.h (X0_REGNUM): New constant.
19552 * config/riscv/vector-iterators.md: New iterators.
19553 * config/riscv/vector.md
19554 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
19556 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
19558 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
19559 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
19561 (@pred_widen_mulsu<mode>): Ditto.
19562 (@pred_widen_mulsu<mode>_scalar): Ditto.
19563 (@pred_<optab><mode>): Ditto.
19565 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19566 kito-cheng <kito.cheng@sifive.com>
19568 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
19569 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
19571 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19572 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
19576 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
19578 (DEF_RVV_FULL_V_U_OPS): Ditto.
19579 (vint8mf8_t): Ditto.
19580 (vint8mf4_t): Ditto.
19581 (vint8mf2_t): Ditto.
19582 (vint8m1_t): Ditto.
19583 (vint8m2_t): Ditto.
19584 (vint8m4_t): Ditto.
19585 (vint8m8_t): Ditto.
19586 (vint16mf4_t): Ditto.
19587 (vint16mf2_t): Ditto.
19588 (vint16m1_t): Ditto.
19589 (vint16m2_t): Ditto.
19590 (vint16m4_t): Ditto.
19591 (vint16m8_t): Ditto.
19592 (vint32mf2_t): Ditto.
19593 (vint32m1_t): Ditto.
19594 (vint32m2_t): Ditto.
19595 (vint32m4_t): Ditto.
19596 (vint32m8_t): Ditto.
19597 (vint64m1_t): Ditto.
19598 (vint64m2_t): Ditto.
19599 (vint64m4_t): Ditto.
19600 (vint64m8_t): Ditto.
19601 (vuint8mf8_t): Ditto.
19602 (vuint8mf4_t): Ditto.
19603 (vuint8mf2_t): Ditto.
19604 (vuint8m1_t): Ditto.
19605 (vuint8m2_t): Ditto.
19606 (vuint8m4_t): Ditto.
19607 (vuint8m8_t): Ditto.
19608 (vuint16mf4_t): Ditto.
19609 (vuint16mf2_t): Ditto.
19610 (vuint16m1_t): Ditto.
19611 (vuint16m2_t): Ditto.
19612 (vuint16m4_t): Ditto.
19613 (vuint16m8_t): Ditto.
19614 (vuint32mf2_t): Ditto.
19615 (vuint32m1_t): Ditto.
19616 (vuint32m2_t): Ditto.
19617 (vuint32m4_t): Ditto.
19618 (vuint32m8_t): Ditto.
19619 (vuint64m1_t): Ditto.
19620 (vuint64m2_t): Ditto.
19621 (vuint64m4_t): Ditto.
19622 (vuint64m8_t): Ditto.
19623 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
19624 (DEF_RVV_FULL_V_U_OPS): Ditto.
19625 (check_required_extensions): Add vmulh support.
19626 (rvv_arg_type_info::get_tree_type): Ditto.
19627 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
19628 (enum rvv_base_type): Ditto.
19629 * config/riscv/riscv.opt: Add 'V' extension flag.
19630 * config/riscv/vector-iterators.md (su): New iterator.
19631 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
19632 (@pred_mulh<v_su><mode>_scalar): Ditto.
19633 (*pred_mulh<v_su><mode>_scalar): Ditto.
19634 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
19636 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19638 * config/riscv/iterators.md: Add sign_extend/zero_extend.
19639 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
19641 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
19642 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
19645 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
19646 for vsext/vzext support.
19647 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
19649 (DEF_RVV_QEXTI_OPS): Ditto.
19650 (DEF_RVV_OEXTI_OPS): Ditto.
19651 (DEF_RVV_WEXTU_OPS): Ditto.
19652 (DEF_RVV_QEXTU_OPS): Ditto.
19653 (DEF_RVV_OEXTU_OPS): Ditto.
19654 (vint16mf4_t): Ditto.
19655 (vint16mf2_t): Ditto.
19656 (vint16m1_t): Ditto.
19657 (vint16m2_t): Ditto.
19658 (vint16m4_t): Ditto.
19659 (vint16m8_t): Ditto.
19660 (vint32mf2_t): Ditto.
19661 (vint32m1_t): Ditto.
19662 (vint32m2_t): Ditto.
19663 (vint32m4_t): Ditto.
19664 (vint32m8_t): Ditto.
19665 (vint64m1_t): Ditto.
19666 (vint64m2_t): Ditto.
19667 (vint64m4_t): Ditto.
19668 (vint64m8_t): Ditto.
19669 (vuint16mf4_t): Ditto.
19670 (vuint16mf2_t): Ditto.
19671 (vuint16m1_t): Ditto.
19672 (vuint16m2_t): Ditto.
19673 (vuint16m4_t): Ditto.
19674 (vuint16m8_t): Ditto.
19675 (vuint32mf2_t): Ditto.
19676 (vuint32m1_t): Ditto.
19677 (vuint32m2_t): Ditto.
19678 (vuint32m4_t): Ditto.
19679 (vuint32m8_t): Ditto.
19680 (vuint64m1_t): Ditto.
19681 (vuint64m2_t): Ditto.
19682 (vuint64m4_t): Ditto.
19683 (vuint64m8_t): Ditto.
19684 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
19685 (DEF_RVV_QEXTI_OPS): Ditto.
19686 (DEF_RVV_OEXTI_OPS): Ditto.
19687 (DEF_RVV_WEXTU_OPS): Ditto.
19688 (DEF_RVV_QEXTU_OPS): Ditto.
19689 (DEF_RVV_OEXTU_OPS): Ditto.
19690 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
19692 (rvv_arg_type_info::get_tree_type): Ditto.
19693 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
19694 * config/riscv/vector-iterators.md (z): New attribute.
19695 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
19696 (@pred_<optab><mode>_vf4): Ditto.
19697 (@pred_<optab><mode>_vf8): Ditto.
19699 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19701 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
19702 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
19703 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
19704 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19705 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
19709 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
19714 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
19715 (@pred_<optab><mode>_scalar): New pattern.
19716 (*pred_<optab><mode>_scalar): New pattern.
19717 (*pred_<optab><mode>_extended_scalar): New pattern.
19719 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19721 * config/riscv/iterators.md: Add neg and not.
19722 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
19724 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19725 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
19746 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
19747 (struct alu_def): Ditto.
19749 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19750 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
19751 * config/riscv/vector-iterators.md: New iterator.
19752 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
19754 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19756 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
19758 2023-02-11 Jakub Jelinek <jakub@redhat.com>
19761 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
19762 item->offset bit position is too large to be representable as
19763 unsigned int byte position.
19765 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
19767 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
19769 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
19771 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
19772 valid_combine only when ira_use_lra_p is true.
19774 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
19776 * params.opt (ira-simple-lra-insn-threshold): Add new param.
19777 * ira.cc (ira): Use the param to switch on simple LRA.
19779 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
19781 PR tree-optimization/108687
19782 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
19783 back to RFD_NONE mode for calculations.
19784 (ranger_cache::propagate_cache): Call the internal edge range API
19785 with RFD_READ_ONLY instead of changing the external routine.
19787 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
19789 PR tree-optimization/108520
19790 * gimple-range-infer.cc (check_assume_func): Invoke
19791 gimple_range_global directly instead using global_range_query.
19792 * value-query.cc (get_range_global): Add function context and
19793 avoid calling nonnull_arg_p if not cfun.
19794 (gimple_range_global): Add function context pointer.
19795 * value-query.h (imple_range_global): Add function context.
19797 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19799 * config/riscv/constraints.md (Wdm): Adjust constraint.
19800 (Wbr): New constraint.
19801 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
19802 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
19803 (emit_vlmax_op): New function.
19804 (emit_nonvlmax_op): Ditto.
19806 (neg_simm5_p): Ditto.
19807 (has_vi_variant_p): Ditto.
19808 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
19809 (emit_vlmax_op): New function.
19810 (emit_nonvlmax_op): Ditto.
19811 (expand_const_vector): Adjust function.
19812 (legitimize_move): Ditto.
19813 (simm32_p): New function.
19815 (neg_simm5_p): Ditto.
19816 (has_vi_variant_p): Ditto.
19817 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
19819 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19820 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
19823 (vminu): Remove signed cases.
19825 (vdiv): Remove unsigned cases.
19827 (vdivu): Remove signed cases.
19831 (vrsub): New class.
19836 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
19837 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
19838 * config/riscv/vector-iterators.md: New iterators.
19839 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
19841 (@pred_<optab><mode>_scalar): New pattern.
19842 (@pred_sub<mode>_reverse_scalar): Ditto.
19843 (*pred_<optab><mode>_scalar): Ditto.
19844 (*pred_<optab><mode>_extended_scalar): Ditto.
19845 (*pred_sub<mode>_reverse_scalar): Ditto.
19846 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
19848 2023-02-10 Richard Biener <rguenther@suse.de>
19850 PR tree-optimization/108724
19851 * tree-vect-stmts.cc (vectorizable_operation): Avoid
19852 using word_mode vectors when vector lowering will
19853 decompose them to elementwise operations.
19855 2023-02-10 Jakub Jelinek <jakub@redhat.com>
19858 2023-02-09 Martin Liska <mliska@suse.cz>
19861 * doc/extend.texi: Document that the function
19862 does not work correctly for old VIA processors.
19864 2023-02-10 Andrew Pinski <apinski@marvell.com>
19865 Andrew Macleod <amacleod@redhat.com>
19867 PR tree-optimization/108684
19868 * tree-ssa-dce.cc (simple_dce_from_worklist):
19869 Check all ssa names and not just non-vdef ones
19870 before accepting the inline-asm.
19871 Call unlink_stmt_vdef on the statement before
19874 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
19876 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
19877 * ira.cc (validate_equiv_mem): Check memref address variance.
19878 (no_equiv): Clear caller_save_p flag.
19879 (update_equiv_regs): Define caller save equivalence for
19881 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
19882 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
19883 call_save_p. Use caller save equivalence depending on the arg.
19884 (split_reg): Adjust the call.
19886 2023-02-09 Jakub Jelinek <jakub@redhat.com>
19889 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
19890 (cpu_indicator_init): Call get_available_features for all CPUs with
19891 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
19894 2023-02-09 Jakub Jelinek <jakub@redhat.com>
19896 PR tree-optimization/108688
19897 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
19898 of BIT_INSERT_EXPR extracting exactly all inserted bits even
19899 when without mode precision. Formatting fixes.
19901 2023-02-09 Andrew Pinski <apinski@marvell.com>
19903 PR tree-optimization/108688
19904 * match.pd (bit_field_ref [bit_insert]): Avoid generating
19905 BIT_FIELD_REFs of non-mode-precision integral operands.
19907 2023-02-09 Martin Liska <mliska@suse.cz>
19910 * doc/extend.texi: Document that the function
19911 does not work correctly for old VIA processors.
19913 2023-02-09 Andreas Schwab <schwab@suse.de>
19915 * lto-wrapper.cc (merge_and_complain): Handle
19916 -funwind-tables and -fasynchronous-unwind-tables.
19917 (append_compiler_options): Likewise.
19919 2023-02-09 Richard Biener <rguenther@suse.de>
19921 PR tree-optimization/26854
19922 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
19923 view around insert_updated_phi_nodes_for.
19924 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
19926 (walk_aliased_vdefs_1): Likewise.
19928 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
19930 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
19932 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
19935 * config.gcc (tm_mlib_file): Define new variable.
19937 2023-02-08 Jakub Jelinek <jakub@redhat.com>
19939 PR tree-optimization/108692
19940 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
19941 widened_code which is different from code, don't call
19942 vect_look_through_possible_promotion but instead just check op is
19943 SSA_NAME with integral type for which vect_is_simple_use is true
19944 and call set_op on this_unprom.
19946 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
19948 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
19950 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
19952 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
19953 to 'aarch_ra_sign_key'.
19954 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
19956 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
19957 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
19958 * config/arm/arm.opt: Define.
19960 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
19962 PR tree-optimization/108316
19963 * tree-vect-stmts.cc (get_load_store_type): When using
19964 internal functions for gather/scatter, make sure that the type
19965 of the offset argument is consistent with the offset vector type.
19967 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
19970 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
19972 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
19973 * ira.cc (validate_equiv_mem): Check memref address variance.
19974 (update_equiv_regs): Define caller save equivalence for
19976 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
19977 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
19978 call_save_p. Use caller save equivalence depending on the arg.
19979 (split_reg): Adjust the call.
19981 2023-02-08 Jakub Jelinek <jakub@redhat.com>
19983 * tree.def (SAD_EXPR): Remove outdated comment about missing
19986 2023-02-07 Marek Polacek <polacek@redhat.com>
19988 * doc/invoke.texi: Update -fchar8_t documentation.
19990 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
19992 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
19993 * ira.cc (validate_equiv_mem): Check memref address variance.
19994 (update_equiv_regs): Define caller save equivalence for
19996 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
19997 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
19998 call_save_p. Use caller save equivalence depending on the arg.
19999 (split_reg): Adjust the call.
20001 2023-02-07 Richard Biener <rguenther@suse.de>
20003 PR tree-optimization/26854
20004 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
20005 instead of immediate uses.
20007 2023-02-07 Jakub Jelinek <jakub@redhat.com>
20009 PR tree-optimization/106923
20010 * ipa-split.cc (execute_split_functions): Don't split returns_twice
20013 2023-02-07 Jakub Jelinek <jakub@redhat.com>
20015 PR tree-optimization/106433
20016 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
20017 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
20019 2023-02-07 Jan Hubicka <jh@suse.cz>
20021 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
20024 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
20026 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
20027 (process_asm): Create a constructor for GCN_STACK_SIZE.
20028 (main): Parse the -mstack-size option.
20030 2023-02-06 Alex Coplan <alex.coplan@arm.com>
20033 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
20034 Use correct constraint for operand 3.
20036 2023-02-06 Martin Jambor <mjambor@suse.cz>
20038 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
20040 2023-02-06 Xi Ruoyao <xry111@xry111.site>
20042 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
20043 New define_int_iterator.
20044 (bytepick_d_ashift_amount): Likewise.
20045 (bytepick_imm): New define_int_attr.
20046 (bytepick_w_lshiftrt_amount): Likewise.
20047 (bytepick_d_lshiftrt_amount): Likewise.
20048 (bytepick_w_<bytepick_imm>): New define_insn template.
20049 (bytepick_w_<bytepick_imm>_extend): Likewise.
20050 (bytepick_d_<bytepick_imm>): Likewise.
20051 (bytepick_w): Remove unused define_insn.
20052 (bytepick_d): Likewise.
20053 (UNSPEC_BYTEPICK_W): Remove unused unspec.
20054 (UNSPEC_BYTEPICK_D): Likewise.
20055 * config/loongarch/predicates.md (const_0_to_3_operand):
20056 Remove unused define_predicate.
20057 (const_0_to_7_operand): Likewise.
20059 2023-02-06 Jakub Jelinek <jakub@redhat.com>
20061 PR tree-optimization/108655
20062 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
20063 or -fsanitize=unreachable -fsanitize-trap=unreachable return
20064 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
20066 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
20068 * doc/install.texi (Specific): Remove PW32.
20070 2023-02-03 Jakub Jelinek <jakub@redhat.com>
20072 PR tree-optimization/108647
20073 * range-op.cc (operator_equal::op1_range,
20074 operator_not_equal::op1_range): Don't test op2 bound
20075 equality if op2.undefined_p (), instead set_varying.
20076 (operator_lt::op1_range, operator_le::op1_range,
20077 operator_gt::op1_range, operator_ge::op1_range): Return false if
20078 op2.undefined_p ().
20079 (operator_lt::op2_range, operator_le::op2_range,
20080 operator_gt::op2_range, operator_ge::op2_range): Return false if
20081 op1.undefined_p ().
20083 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
20085 PR tree-optimization/108639
20086 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
20088 (irange::operator==): Same.
20090 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
20092 PR tree-optimization/108647
20093 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
20094 (foperator_lt::op2_range): Same.
20095 (foperator_le::op1_range): Same.
20096 (foperator_le::op2_range): Same.
20097 (foperator_gt::op1_range): Same.
20098 (foperator_gt::op2_range): Same.
20099 (foperator_ge::op1_range): Same.
20100 (foperator_ge::op2_range): Same.
20101 (foperator_unordered_lt::op1_range): Same.
20102 (foperator_unordered_lt::op2_range): Same.
20103 (foperator_unordered_le::op1_range): Same.
20104 (foperator_unordered_le::op2_range): Same.
20105 (foperator_unordered_gt::op1_range): Same.
20106 (foperator_unordered_gt::op2_range): Same.
20107 (foperator_unordered_ge::op1_range): Same.
20108 (foperator_unordered_ge::op2_range): Same.
20110 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
20112 PR tree-optimization/107570
20113 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
20115 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
20117 * doc/gm2.texi (Internals): Remove from menu.
20118 (Using): Comment out ifnohtml conditional.
20119 (Documentation): Use gcc url.
20120 (License): Node simplified.
20121 (Copying): New node. Include gpl_v3_without_node.
20122 (Contributing): Node simplified.
20123 (Internals): Commented out.
20124 (Libraries): Node simplified.
20127 (Functions): Ditto.
20129 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
20131 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
20133 (mve_vqshluq_m_n_s<mode>): Likewise.
20134 (mve_vshlq_m_<supf><mode>): Likewise.
20135 (mve_vsriq_m_n_<supf><mode>): Likewise.
20136 (mve_vsubq_m_<supf><mode>): Likewise.
20138 2023-02-03 Martin Jambor <mjambor@suse.cz>
20141 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
20142 when comparing to an IPA-CP value.
20143 (dump_list_of_param_indices): New function.
20144 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
20145 Dump removed candidates using dump_list_of_param_indices.
20146 * ipa-param-manipulation.cc
20147 (ipa_param_body_adjustments::modify_expression): Add assert checking
20148 sizes of a VIEW_CONVERT_EXPR will match.
20149 (ipa_param_body_adjustments::modify_assignment): Likewise.
20151 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
20153 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
20154 * config/riscv/riscv.cc: Ditto.
20156 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20158 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
20162 * config/riscv/vector.md: Ditto.
20164 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20166 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
20167 * config/riscv/riscv-vector-builtins-bases.cc: New class.
20168 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
20171 * config/riscv/riscv-vector-builtins.cc: Ditto.
20172 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
20174 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
20176 * toplev.cc (toplev::main): Only print the version information header
20177 from toplevel main().
20179 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
20181 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
20182 cond_{ashl|ashr|lshr}
20184 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
20186 PR rtl-optimization/108086
20187 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
20188 Adjust size-related commentary accordingly.
20190 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
20192 PR rtl-optimization/108508
20193 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
20194 the splay tree search gives the first clobber in the second group,
20195 make sure that the root of the first clobber group is updated
20196 correctly. Enter the new clobber group into the definition splay
20199 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
20201 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
20202 Fix finding best match score.
20204 2023-02-02 Jakub Jelinek <jakub@redhat.com>
20207 PR rtl-optimization/108463
20209 * cselib.cc (cselib_current_insn): Move declaration earlier.
20210 (cselib_hasher::equal): For debug only locs, temporarily override
20211 cselib_current_insn to their l->setting_insn for the
20212 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
20213 promote some debug locs.
20214 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
20215 when using cselib call cselib_lookup_from_insn on the address but
20216 don't substitute it.
20218 2023-02-02 Richard Biener <rguenther@suse.de>
20220 PR middle-end/108625
20221 * genmatch.cc (expr::gen_transform): Also disallow resimplification
20222 from pushing to lseq with force_leaf.
20223 (dt_simplify::gen_1): Likewise.
20225 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
20227 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
20228 (struct kernargs): Replace the common content with kernargs_abi.
20229 (struct heap): Delete.
20230 (main): Read GCN_STACK_SIZE envvar.
20231 Allocate space for the device stacks.
20232 Write the new kernargs fields.
20233 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
20234 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
20235 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
20236 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
20237 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
20238 Set up the stacks from the values in the kernargs, not private.
20239 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
20240 (gcn_hsa_declare_function_name): Turn off the private segment.
20241 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
20242 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
20243 * config/gcn/gcn.opt (mstack-size): Change the description.
20245 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
20248 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
20249 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
20250 addressing MVE predicate modes.
20251 (mve_bool_vec_to_const): Change to represent correct MVE predicate
20253 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
20255 (arm_vector_mode_supported_p): Likewise.
20256 (arm_mode_to_pred_mode): Add V2QI.
20257 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
20259 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
20260 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
20261 (v2qi_UP): New macro.
20262 (v4bi_UP): New macro.
20263 (v8bi_UP): New macro.
20264 (v16bi_UP): New macro.
20265 (arm_expand_builtin_args): Make it able to expand the new predicate
20267 * config/arm/arm-modes.def (V2QI): New mode.
20268 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
20269 Pred4x4_t): Remove unused predicate builtin types.
20270 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
20271 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
20272 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
20273 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
20274 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
20275 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
20276 of MODE_VECTOR_BOOL.
20277 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
20278 (MVE_VPRED): Likewise.
20279 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
20280 (MVE_vctp): New mode attribute.
20284 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
20285 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
20287 (mve_vpnothi): Rename this...
20288 (mve_vpnotv16bi): ... to this.
20289 (mve_vctp<mode1>q_mhi): Rename this...
20290 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
20291 (mve_vldrdq_gather_base_z_<supf>v2di,
20292 mve_vldrdq_gather_offset_z_<supf>v2di,
20293 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
20294 mve_vstrdq_scatter_base_p_<supf>v2di,
20295 mve_vstrdq_scatter_offset_p_<supf>v2di,
20296 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
20297 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
20298 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
20299 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
20300 mve_vldrdq_gather_base_wb_z_<supf>v2di,
20301 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
20302 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
20304 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
20306 (VCTP): ... with this.
20307 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
20308 (VCTP_M): ... with this.
20309 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
20310 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
20312 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
20315 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
20316 (arm_modes_tieable_p): Make MVE predicate modes tieable.
20317 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
20318 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
20319 simplify_subreg to simplify subregs where the outermode is not scalar.
20321 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
20324 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
20325 new qualifiers parameter and use unsigned short type for MVE predicate.
20326 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
20328 (arm_init_crypto_builtins): Likewise.
20330 2023-02-02 Jakub Jelinek <jakub@redhat.com>
20333 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
20334 * internal-fn.def (TRAP): Remove.
20335 * internal-fn.cc (expand_TRAP): Remove.
20336 * tree.cc (build_common_builtin_nodes): Define
20337 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
20338 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
20339 instead of BUILT_IN_TRAP.
20340 * gimple.cc (gimple_build_builtin_unreachable): Remove
20341 emitting internal function for BUILT_IN_TRAP.
20342 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
20343 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
20344 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
20345 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
20346 BUILT_IN_UNREACHABLE_TRAP.
20347 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
20348 * tree-cfg.cc (verify_gimple_call,
20349 pass_warn_function_return::execute): Likewise.
20350 * attribs.cc (decl_attributes): Don't report exclusions on
20351 BUILT_IN_UNREACHABLE_TRAP either.
20353 2023-02-02 liuhongt <hongtao.liu@intel.com>
20355 PR tree-optimization/108601
20356 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
20357 * tree-vect-loop.cc
20358 (vectorizable_nonlinear_induction): Remove
20359 vect_can_peel_nonlinear_iv_p.
20360 (vect_can_peel_nonlinear_iv_p): Don't peel
20361 nonlinear iv(mult or shift) for epilog when vf is not
20362 constant and moved the defination to ..
20363 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
20366 2023-02-02 Jakub Jelinek <jakub@redhat.com>
20368 PR middle-end/108435
20369 * tree-nested.cc (convert_nonlocal_omp_clauses)
20370 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
20371 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
20372 before calling declare_vars.
20373 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
20374 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
20375 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
20376 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
20378 2023-02-01 Tamar Christina <tamar.christina@arm.com>
20380 * common/config/aarch64/aarch64-common.cc
20381 (struct aarch64_option_extension): Add native_detect and document struct
20383 (all_extensions): Set new field native_detect.
20384 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
20387 2023-02-01 Martin Liska <mliska@suse.cz>
20389 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
20392 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
20394 PR tree-optimization/108356
20395 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
20396 do a search of the DOM tree for a range.
20398 2023-02-01 Martin Liska <mliska@suse.cz>
20401 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
20402 ony non-null values.
20403 * ipa.cc (walk_polymorphic_call_targets): Likewise.
20405 2023-02-01 Martin Liska <mliska@suse.cz>
20408 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
20411 2023-02-01 Jakub Jelinek <jakub@redhat.com>
20414 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
20415 subregs in DEBUG_INSNs.
20417 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
20419 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
20421 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
20423 * config/s390/s390.cc (s390_restore_gpr_p): New function.
20424 (s390_preserve_gpr_arg_in_range_p): New function.
20425 (s390_preserve_gpr_arg_p): New function.
20426 (s390_preserve_fpr_arg_p): New function.
20427 (s390_register_info_stdarg_fpr): Rename to ...
20428 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
20429 (s390_register_info_stdarg_gpr): Rename to ...
20430 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
20431 (s390_register_info): Use the renamed functions above.
20432 (s390_optimize_register_info): Likewise.
20433 (save_fpr): Generate CFI for -mpreserve-args.
20434 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
20435 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
20436 (s390_optimize_prologue): Likewise.
20437 * config/s390/s390.opt: New option -mpreserve-args
20439 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
20441 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
20442 (restore_gprs): Likewise.
20443 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
20444 frame pointer if a frame-pointer is used.
20445 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
20446 * config/s390/s390.md (stack_tie): Add a register operand and
20448 (@stack_tie<mode>): ... this.
20450 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
20452 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
20453 EMIT_CFI parameter.
20454 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
20455 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
20457 2023-02-01 Richard Biener <rguenther@suse.de>
20459 PR middle-end/108500
20460 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
20461 with tree traversal algorithm.
20463 2023-02-01 Jason Merrill <jason@redhat.com>
20465 * doc/invoke.texi: Document -Wno-changes-meaning.
20467 2023-02-01 David Malcolm <dmalcolm@redhat.com>
20469 * doc/invoke.texi (Static Analyzer Options): Add notes about
20470 limitations of -fanalyzer.
20472 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20474 * config/riscv/constraints.md (vj): New.
20476 * config/riscv/iterators.md: Add more opcode.
20477 * config/riscv/predicates.md (vector_arith_operand): New.
20478 (vector_neg_arith_operand): New.
20479 (vector_shift_operand): New.
20480 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
20481 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
20498 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
20515 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
20516 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
20517 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
20518 (DEF_RVV_U_OPS): New.
20519 (rvv_arg_type_info::get_base_vector_type): Handle
20520 RVV_BASE_shift_vector.
20521 (rvv_arg_type_info::get_tree_type): Ditto.
20522 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
20523 RVV_BASE_shift_vector.
20524 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
20525 * config/riscv/vector-iterators.md: Handle more opcode.
20526 * config/riscv/vector.md (@pred_<optab><mode>): New.
20528 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
20531 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
20534 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
20536 PR tree-optimization/108608
20537 * tree-vect-loop.cc (vect_transform_reduction): Handle single
20538 def-use cycles that involve function calls rather than tree codes.
20540 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
20542 PR tree-optimization/108385
20543 * gimple-range-gori.cc (gori_compute::compute_operand_range):
20544 Allow VARYING computations to continue if there is a relation.
20545 * range-op.cc (pointer_plus_operator::op2_range): New.
20547 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
20549 PR tree-optimization/108359
20550 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
20551 (range_operator::fold_range): If op1 is equivalent to op2 then
20552 invoke new fold_in_parts_equiv to operate on sub-components.
20553 * range-op.h (wi_fold_in_parts_equiv): New prototype.
20555 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
20557 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
20558 not abort calculations if there is a valid relation available.
20559 (gori_compute::refine_using_relation): Pass correct relation trio.
20560 (gori_compute::compute_operand1_range): Create trio and use it.
20561 (gori_compute::compute_operand2_range): Ditto.
20562 * range-op.cc (operator_plus::op1_range): Use correct trio member.
20563 (operator_minus::op1_range): Use correct trio member.
20564 * value-relation.cc (value_relation::create_trio): New.
20565 * value-relation.h (value_relation::create_trio): New prototype.
20567 2023-01-31 Jakub Jelinek <jakub@redhat.com>
20570 * config/i386/i386-expand.cc
20571 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
20572 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
20573 equal to bitsize of mode.
20575 2023-01-31 Jakub Jelinek <jakub@redhat.com>
20577 PR rtl-optimization/108596
20578 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
20579 ends with asm goto and has a crossing fallthrough edge to the same bb
20580 that contains at least one of its labels by restoring EDGE_CROSSING
20581 flag even on possible edge from cur_bb to new_bb successor.
20583 2023-01-31 Jakub Jelinek <jakub@redhat.com>
20586 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
20587 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
20588 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
20589 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
20590 uninitialized automatic variable __W.
20592 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
20594 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
20596 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20598 * config/riscv/riscv-protos.h (get_vector_mode): New function.
20599 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
20600 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
20601 (class loadstore): Adjust for indexed loads/stores support.
20603 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
20604 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
20620 * config/riscv/riscv-vector-builtins-shapes.cc
20621 (struct indexed_loadstore_def): New class.
20623 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20624 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
20625 for indexed loads/stores support.
20626 (check_required_extensions): Ditto.
20627 (rvv_arg_type_info::get_base_vector_type): New function.
20628 (rvv_arg_type_info::get_tree_type): Ditto.
20629 (function_builder::add_unique_function): Adjust for indexed loads/stores
20631 (function_expander::use_exact_insn): New function.
20632 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
20633 indexed loads/stores support.
20634 (struct rvv_arg_type_info): Ditto.
20635 (function_expander::index_mode): New function.
20636 (function_base::apply_tail_policy_p): Ditto.
20637 (function_base::apply_mask_policy_p): Ditto.
20638 * config/riscv/vector-iterators.md (unspec): New unspec.
20639 * config/riscv/vector.md (unspec): Ditto.
20640 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
20642 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
20643 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
20644 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
20645 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
20646 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
20647 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
20648 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
20649 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
20650 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
20651 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20652 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20653 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20654 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20656 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
20658 * config.gcc: Recognize x86_64-*-gnu* targets and include
20660 * config/i386/gnu64.h: Define configuration for new target
20661 including ld.so location.
20663 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
20665 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
20666 ampere1a to include SM4.
20668 2023-01-30 Andrew Pinski <apinski@marvell.com>
20670 PR tree-optimization/108582
20671 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
20672 for middlebb to have no phi nodes.
20674 2023-01-30 Richard Biener <rguenther@suse.de>
20676 PR tree-optimization/108574
20677 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
20678 sameval and def, ignore the equivalence if there's the
20679 danger of oscillating between two values.
20681 2023-01-30 Andreas Schwab <schwab@suse.de>
20683 * common/config/riscv/riscv-common.cc
20684 (riscv_option_optimization_table)
20685 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
20686 -fasynchronous-unwind-tables and -funwind-tables.
20687 * config.gcc (riscv*-*-linux*): Define
20688 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
20690 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
20692 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
20693 value of includedir.
20695 2023-01-30 Richard Biener <rguenther@suse.de>
20698 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
20701 2023-01-30 liuhongt <hongtao.liu@intel.com>
20703 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
20704 * doc/invoke.texi: Ditto.
20706 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
20708 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
20709 (stmt_may_terminate_function_p): If assuming return or EH
20710 volatile asm is safe.
20711 (find_always_executed_bbs): Fix handling of terminating BBS and
20712 infinite loops; add debug output.
20713 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
20715 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
20717 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
20718 off-by-one in checking the permissible shift-amount.
20720 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
20722 * doc/extend.texi (Named Address Spaces): Update link to the
20725 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
20727 * doc/standards.texi (Standards): Fix markup.
20729 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
20731 * doc/standards.texi (Standards): Update link to Objective-C book.
20733 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
20735 * doc/invoke.texi (Instrumentation Options): Update reference to
20738 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
20740 * doc/standards.texi: Update Go1 link.
20742 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20744 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
20745 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
20748 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20749 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
20751 * config/riscv/riscv-vector-builtins.cc
20752 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
20753 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
20754 (@pred_strided_store<mode>): Ditto.
20756 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20758 * config/riscv/vector.md (tail_policy_op_idx): Remove.
20759 (mask_policy_op_idx): Remove.
20760 (avl_type_op_idx): Remove.
20762 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
20764 PR tree-optimization/96373
20765 * tree.h (sign_mask_for): Declare.
20766 * tree.cc (sign_mask_for): New function.
20767 (signed_or_unsigned_type_for): For vector types, try to use the
20768 related_int_vector_mode.
20769 * genmatch.cc (commutative_op): Handle conditional internal functions.
20770 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
20772 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
20774 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
20775 Use the likely minimum VF when bounding the denominators to
20776 the estimated number of iterations.
20778 2023-01-27 Richard Biener <rguenther@suse.de>
20781 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
20782 and -Ofast FP environment side-effects.
20784 2023-01-27 Richard Biener <rguenther@suse.de>
20787 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
20788 Don't add crtfastmath.o for -shared.
20790 2023-01-27 Richard Biener <rguenther@suse.de>
20793 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
20796 2023-01-27 Richard Biener <rguenther@suse.de>
20799 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
20800 crtfastmath.o for -shared.
20802 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
20804 PR tree-optimization/108306
20805 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
20806 varying for shifts that are always out of void range.
20807 (operator_rshift::fold_range): Return [0, 0] not
20808 varying for shifts that are always out of void range.
20810 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
20812 PR tree-optimization/108447
20813 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
20814 Do not attempt to fold HONOR_NAN types.
20816 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20818 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
20819 Remove _m suffix for "vop_m" C++ overloaded API name.
20821 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20823 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
20824 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20825 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
20827 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
20828 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
20829 (vbool64_t): Ditto.
20830 (vbool32_t): Ditto.
20831 (vbool16_t): Ditto.
20836 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
20837 (rvv_arg_type_info::get_tree_type): Ditto.
20838 (function_expander::use_contiguous_load_insn): Ditto.
20839 * config/riscv/vector.md (@pred_store<mode>): Ditto.
20841 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20843 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
20844 (vsetvl_discard_result_insn_p): New function.
20845 (reg_killed_by_bb_p): rename to find_reg_killed_by.
20846 (find_reg_killed_by): New name.
20847 (get_vl): allow it to be called by more functions.
20848 (has_vsetvl_killed_avl_p): Add condition.
20849 (get_avl): allow it to be called by more functions.
20850 (insn_should_be_added_p): New function.
20851 (get_all_nonphi_defs): Refine function.
20852 (get_all_sets): Ditto.
20853 (get_same_bb_set): New function.
20854 (any_insn_in_bb_p): Ditto.
20855 (any_set_in_bb_p): Ditto.
20856 (get_vl_vtype_info): Add VLMAX forward optimization.
20857 (source_equal_p): Fix issues.
20858 (extract_single_source): Refine.
20859 (avl_info::multiple_source_equal_p): New function.
20860 (avl_info::operator==): Adjust for final version.
20861 (vl_vtype_info::operator==): Ditto.
20862 (vl_vtype_info::same_avl_p): Ditto.
20863 (vector_insn_info::parse_insn): Ditto.
20864 (vector_insn_info::available_p): New function.
20865 (vector_insn_info::merge): Adjust for final version.
20866 (vector_insn_info::dump): Add hard_empty.
20867 (pass_vsetvl::hard_empty_block_p): New function.
20868 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
20869 (pass_vsetvl::forward_demand_fusion): Ditto.
20870 (pass_vsetvl::demand_fusion): Ditto.
20871 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
20872 (pass_vsetvl::compute_local_properties): Adjust for final version.
20873 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
20874 (pass_vsetvl::refine_vsetvls): Ditto.
20875 (pass_vsetvl::commit_vsetvls): Ditto.
20876 (pass_vsetvl::propagate_avl): New function.
20877 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
20878 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
20880 2023-01-27 Jakub Jelinek <jakub@redhat.com>
20883 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
20884 from size_t to int.
20886 2023-01-27 Jakub Jelinek <jakub@redhat.com>
20889 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
20890 redirection of calls to __builtin_trap in addition to redirection
20891 to __builtin_unreachable.
20893 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20895 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
20897 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20899 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
20900 (emit_vsetvl_insn): Ditto.
20902 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20904 * config/riscv/vector.md: Fix constraints.
20906 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20908 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
20910 2023-01-27 Patrick Palka <ppalka@redhat.com>
20911 Jakub Jelinek <jakub@redhat.com>
20913 * tree-core.h (tree_code_type, tree_code_length): For
20914 C++17 and later, add inline keyword, otherwise don't define
20915 the arrays, but declare extern arrays.
20916 * tree.cc (tree_code_type, tree_code_length): Define these
20917 arrays for C++14 and older.
20919 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20921 * config/riscv/riscv-vsetvl.h: Change it into public.
20923 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20925 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
20928 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20930 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
20932 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20934 * config/riscv/vector.md: Fix incorrect attributes.
20936 2023-01-27 Richard Biener <rguenther@suse.de>
20939 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
20940 Don't add crtfastmath.o for -shared.
20942 2023-01-27 Alexandre Oliva <oliva@gnu.org>
20944 * doc/options.texi (option, RejectNegative): Mention that
20945 -g-started options are also implicitly negatable.
20947 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
20949 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
20950 Use get_typenode_from_name to get fixed-width integer type
20952 * config/riscv/riscv-vector-builtins.def: Update define with
20953 fixed-width integer type nodes.
20955 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20957 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
20958 (real_insn_and_same_bb_p): New function.
20959 (same_bb_and_after_or_equal_p): Remove it.
20960 (before_p): New function.
20961 (reg_killed_by_bb_p): Ditto.
20962 (has_vsetvl_killed_avl_p): Ditto.
20963 (get_vl): Move location so that we can call it.
20964 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
20965 (available_occurrence_p): Ditto.
20966 (dominate_probability_p): Remove it.
20967 (can_backward_propagate_p): Remove it.
20968 (get_all_nonphi_defs): New function.
20969 (get_all_predecessors): Ditto.
20970 (any_insn_in_bb_p): Ditto.
20971 (insert_vsetvl): Adjust AVL REG.
20972 (source_equal_p): New function.
20973 (extract_single_source): Ditto.
20974 (avl_info::single_source_equal_p): Ditto.
20975 (avl_info::operator==): Adjust for AVL=REG.
20976 (vl_vtype_info::same_avl_p): Ditto.
20977 (vector_insn_info::set_demand_info): Remove it.
20978 (vector_insn_info::compatible_p): Adjust for AVL=REG.
20979 (vector_insn_info::compatible_avl_p): New function.
20980 (vector_insn_info::merge): Adjust AVL=REG.
20981 (vector_insn_info::dump): Ditto.
20982 (pass_vsetvl::merge_successors): Remove it.
20983 (enum fusion_type): New enum.
20984 (pass_vsetvl::get_backward_fusion_type): New function.
20985 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
20986 (pass_vsetvl::forward_demand_fusion): Ditto.
20987 (pass_vsetvl::demand_fusion): Ditto.
20988 (pass_vsetvl::prune_expressions): Ditto.
20989 (pass_vsetvl::compute_local_properties): Ditto.
20990 (pass_vsetvl::cleanup_vsetvls): Ditto.
20991 (pass_vsetvl::commit_vsetvls): Ditto.
20992 (pass_vsetvl::init): Ditto.
20993 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
20994 (enum merge_type): New enum.
20996 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20998 * config/riscv/riscv-vsetvl.cc
20999 (vector_infos_manager::vector_infos_manager): Add probability.
21000 (vector_infos_manager::dump): Ditto.
21001 (pass_vsetvl::compute_probabilities): Ditto.
21002 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
21004 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21006 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
21007 (vector_insn_info::merge): Ditto.
21008 (vector_insn_info::dump): Ditto.
21009 (pass_vsetvl::merge_successors): Ditto.
21010 (pass_vsetvl::backward_demand_fusion): Ditto.
21011 (pass_vsetvl::forward_demand_fusion): Ditto.
21012 (pass_vsetvl::commit_vsetvls): Ditto.
21013 * config/riscv/riscv-vsetvl.h: Ditto.
21015 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21017 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
21020 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21022 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
21024 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21026 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
21027 Add pre-check for redundant flow.
21029 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21031 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
21032 (vector_infos_manager::free_bitmap_vectors): Ditto.
21033 (pass_vsetvl::pre_vsetvl): Adjust codes.
21034 * config/riscv/riscv-vsetvl.h: New function declaration.
21036 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21038 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
21039 (vector_insn_info::set_demand_info): New function.
21040 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
21041 (pass_vsetvl::merge_successors): Ditto.
21042 (pass_vsetvl::compute_global_backward_infos): Ditto.
21043 (pass_vsetvl::backward_demand_fusion): Ditto.
21044 (pass_vsetvl::forward_demand_fusion): Ditto.
21045 (pass_vsetvl::demand_fusion): New function.
21046 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
21047 * config/riscv/riscv-vsetvl.h: New function declaration.
21049 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21051 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
21053 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21055 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
21056 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
21058 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21060 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
21061 (backward_propagate_worthwhile_p): Fix non-worthwhile.
21063 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21065 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
21067 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21069 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
21070 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
21071 (pass_vsetvl::commit_vsetvls): Ditto.
21072 * config/riscv/riscv-vsetvl.h: New function declaration.
21074 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21076 * config/riscv/vector.md:
21078 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21080 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
21081 pred_store for vse.
21082 * config/riscv/riscv-vector-builtins.cc
21083 (function_expander::add_mem_operand): Refine function.
21084 (function_expander::use_contiguous_load_insn): Adjust new
21086 (function_expander::use_contiguous_store_insn): Ditto.
21087 * config/riscv/riscv-vector-builtins.h: Refine function.
21088 * config/riscv/vector.md (@pred_store<mode>): New pattern.
21090 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21092 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
21094 2023-01-26 Marek Polacek <polacek@redhat.com>
21096 PR middle-end/108543
21097 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
21098 if it was previously set.
21100 2023-01-26 Jakub Jelinek <jakub@redhat.com>
21102 PR tree-optimization/108540
21103 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
21104 are singletons, use range_true even if op1 != op2
21105 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
21106 even if intersection of the ranges is empty and one has
21107 zero low bound and another zero high bound, use range_true_and_false
21108 rather than range_false.
21109 (foperator_not_equal::fold_range): If both op1 and op2
21110 are singletons, use range_false even if op1 != op2
21111 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
21112 even if intersection of the ranges is empty and one has
21113 zero low bound and another zero high bound, use range_true_and_false
21114 rather than range_true.
21116 2023-01-26 Jakub Jelinek <jakub@redhat.com>
21118 * value-relation.cc (kind_string): Add const.
21119 (rr_negate_table, rr_swap_table, rr_intersect_table,
21120 rr_union_table, rr_transitive_table): Add static const, change
21121 element type from relation_kind to unsigned char.
21122 (relation_negate, relation_swap, relation_intersect, relation_union,
21123 relation_transitive): Cast rr_*_table element to relation_kind.
21124 (relation_to_code): Add static const.
21125 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
21127 2023-01-26 Richard Biener <rguenther@suse.de>
21129 PR tree-optimization/108547
21130 * gimple-predicate-analysis.cc (value_sat_pred_p):
21133 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
21135 PR tree-optimization/108522
21136 * tree-object-size.cc (compute_object_offset): Make EXPR
21137 argument non-const. Call component_ref_field_offset.
21139 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21141 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
21142 FEATURE_STRING field.
21144 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
21146 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
21148 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
21152 * gcc.cc: Provide default specs for Modula-2 so that when the
21153 language is not built-in better diagnostics are emitted for
21154 attempts to use .mod or .m2i file extensions.
21156 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
21158 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
21160 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
21162 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
21164 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
21166 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
21169 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
21171 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
21173 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
21175 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
21177 2023-01-25 Richard Biener <rguenther@suse.de>
21179 PR tree-optimization/108523
21180 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
21181 backedge value for the result when using predication to
21184 2023-01-25 Richard Biener <rguenther@suse.de>
21186 * doc/lto.texi (Command line options): Reword and update reference
21187 to removed lto_read_all_file_options.
21189 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
21191 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
21194 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
21196 * doc/contrib.texi: Add Jose E. Marchesi.
21198 2023-01-25 Jakub Jelinek <jakub@redhat.com>
21200 PR tree-optimization/108498
21201 * gimple-ssa-store-merging.cc (class store_operand_info):
21202 End coment with full stop rather than comma.
21203 (split_group): Likewise.
21204 (merged_store_group::apply_stores): Clear string_concatenation if
21205 start or end aren't on a byte boundary.
21207 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
21208 Jakub Jelinek <jakub@redhat.com>
21210 PR tree-optimization/108522
21211 * tree-object-size.cc (compute_object_offset): Use
21212 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
21214 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21216 * config/xtensa/xtensa.md:
21217 Fix exit from loops detecting references before overwriting in the
21220 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
21222 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
21223 do elimination but only for hard register.
21224 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
21225 calls of get_hard_regno.
21227 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
21229 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
21232 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
21235 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
21236 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
21239 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21241 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
21242 and only include 'csky/t-csky-linux' when enable multilib.
21243 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
21244 define it when disable multilib.
21246 2023-01-24 Richard Biener <rguenther@suse.de>
21248 PR tree-optimization/108500
21249 * dominance.h (calculate_dominance_info): Add parameter
21250 to indicate fast-query compute, defaulted to true.
21251 * dominance.cc (calculate_dominance_info): Honor
21252 fast-query compute parameter.
21253 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
21254 not compute the dominator fast-query DFS numbers.
21256 2023-01-24 Eric Biggers <ebiggers@google.com>
21259 * optc-save-gen.awk: Fix copy-and-paste error.
21261 2023-01-24 Jakub Jelinek <jakub@redhat.com>
21264 * cgraphbuild.cc: Include gimplify.h.
21265 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
21266 their corresponding DECL_VALUE_EXPR expressions after unsharing.
21268 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21271 * config.gcc (tm_file): Move the variable out of loop.
21273 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
21274 Yang Yujie <yangyujie@loongson.cn>
21277 * config/loongarch/loongarch.cc (loongarch_classify_address):
21278 Add precessint for CONST_INT.
21279 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
21280 (loongarch_print_operand): Increase the processing of '%c'.
21281 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
21282 And port the public operand modifiers information to this document.
21284 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21286 * doc/invoke.texi (-mbranch-protection): Update documentation.
21288 2023-01-23 Richard Biener <rguenther@suse.de>
21291 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
21293 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
21294 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
21295 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
21296 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
21298 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21300 * config/arm/aout.h (ra_auth_code): Add entry in enum.
21301 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
21302 to dwarf frame expression.
21303 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
21304 (arm_expand_prologue): Update frame related information and reg notes
21305 for pac/pacbit insn.
21306 (arm_regno_class): Check for pac pseudo reigster.
21307 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
21308 (arm_init_machine_status): Set pacspval_needed to zero.
21309 (arm_debugger_regno): Check for PAC register.
21310 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
21312 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
21313 (arm_unwind_emit): Update REG_CFA_REGISTER case._
21314 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
21315 (DWARF_PAC_REGNUM): Define.
21316 (IS_PAC_REGNUM): Likewise.
21317 (enum reg_class): Add PAC_REG entry.
21318 (machine_function): Add pacbti_needed state to structure.
21319 * config/arm/arm.md (RA_AUTH_CODE): Define.
21321 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21323 * config.gcc ($tm_file): Update variable.
21324 * config/arm/arm-mlib.h: Create new header file.
21325 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
21326 multilib arch directory.
21327 (MULTILIB_REUSE): Add multilib reuse rules.
21328 (MULTILIB_MATCHES): Add multilib match rules.
21330 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21332 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
21333 * config/arm/arm-tables.opt: Regenerate.
21334 * config/arm/arm-tune.md: Likewise.
21335 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
21336 * (-mfix-cmse-cve-2021-35465): Likewise.
21338 2023-01-23 Richard Biener <rguenther@suse.de>
21340 PR tree-optimization/108482
21341 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
21342 .LOOP_DIST_ALIAS calls.
21344 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21346 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
21347 * config/arm/arm-protos.h: Update.
21348 * config/arm/aarch-common-protos.h: Declare
21349 'aarch_bti_arch_check'.
21350 * config/arm/arm.cc (aarch_bti_enabled) Update.
21351 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
21352 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
21353 * config/arm/arm.md (bti_nop): New insn.
21354 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
21355 (aarch-bti-insert.o): New target.
21356 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
21357 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
21359 (gate): Make use of 'aarch_bti_arch_check'.
21360 * config/arm/arm-passes.def: New file.
21361 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
21363 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21365 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
21366 'aarch-bti-insert.o'.
21367 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
21369 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
21370 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
21371 (aarch64_output_mi_thunk)
21372 (aarch64_print_patchable_function_entry)
21373 (aarch64_file_end_indicate_exec_stack): Update renamed function
21374 calls to renamed functions.
21375 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
21376 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
21378 * config/aarch64/aarch64-bti-insert.cc: Delete.
21379 * config/arm/aarch-bti-insert.cc: New file including and
21380 generalizing code from aarch64-bti-insert.cc.
21381 * config/arm/aarch-common-protos.h: Update.
21383 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21385 * config/arm/arm.h (arm_arch8m_main): Declare it.
21386 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
21388 * config/arm/arm.cc (arm_arch8m_main): Define it.
21389 (arm_option_reconfigure_globals): Set arm_arch8m_main.
21390 (arm_compute_frame_layout, arm_expand_prologue)
21391 (thumb2_expand_return, arm_expand_epilogue)
21392 (arm_conditional_register_usage): Update for pac codegen.
21393 (arm_current_function_pac_enabled_p): New function.
21394 (aarch_bti_enabled) New function.
21395 (use_return_insn): Return zero when pac is enabled.
21396 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
21398 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
21399 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
21401 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21403 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
21404 mbranch-protection.
21406 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21407 Tejas Belagod <tbelagod@arm.com>
21409 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
21410 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
21412 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21413 Tejas Belagod <tbelagod@arm.com>
21414 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21416 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
21417 new pseudo register class _UVRSC_PAC.
21419 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21420 Tejas Belagod <tbelagod@arm.com>
21422 * config/arm/arm-c.cc (arm_cpu_builtins): Define
21423 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
21424 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
21426 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21427 Tejas Belagod <tbelagod@arm.com>
21429 * doc/sourcebuild.texi: Document arm_pacbti_hw.
21431 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21432 Tejas Belagod <tbelagod@arm.com>
21433 Richard Earnshaw <Richard.Earnshaw@arm.com>
21435 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
21436 -mbranch-protection option and initialize appropriate data structures.
21437 * config/arm/arm.opt (-mbranch-protection): New option.
21438 * doc/invoke.texi (Arm Options): Document it.
21440 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21441 Tejas Belagod <tbelagod@arm.com>
21443 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
21444 * config/arm/arm-cpus.in (pacbti): New feature.
21445 * doc/invoke.texi (Arm Options): Document it.
21447 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
21448 Tejas Belagod <tbelagod@arm.com>
21450 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
21451 (all_architectures): Fix comment.
21452 (aarch64_parse_extension): Rename return type, enum value names.
21453 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
21454 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
21455 Also rename corresponding enum values.
21456 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
21457 out aarch64_function_type and move it to common code as
21458 aarch_function_type in aarch-common.h.
21459 * config/aarch64/aarch64-protos.h: Include common types header,
21460 move out types aarch64_parse_opt_result and aarch64_key_type to
21462 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
21463 and functions out into aarch-common.h and aarch-common.cc. Fix up
21464 all the name changes resulting from the move.
21465 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
21467 * config/aarch64/aarch64.opt: Include aarch-common.h to import
21468 type move. Fix up name changes from factoring out common code and
21470 * config/arm/aarch-common-protos.h: Export factored out routines to both
21472 * config/arm/aarch-common.cc: Include newly factored out types.
21473 Move all mbranch-protection code and data structures from
21475 * config/arm/aarch-common.h: New header that declares types shared
21476 between aarch32 and aarch64 backends.
21477 * config/arm/arm-protos.h: Declare types and variables that are
21478 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
21479 aarch_ra_sign_scope and aarch_enable_bti.
21480 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
21481 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
21482 * config/arm/arm.cc: Add missing includes.
21484 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
21486 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
21488 2023-01-23 Richard Biener <rguenther@suse.de>
21490 PR tree-optimization/108449
21491 * cgraphunit.cc (check_global_declaration): Do not turn
21492 undefined statics into externs.
21494 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
21496 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
21497 and HI input modes.
21498 * config/pru/pru.md (clz): Fix generated code for QI and HI
21501 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
21503 * config/v850/v850.cc (v850_select_section): Put const volatile
21504 objects into read-only sections.
21506 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
21508 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
21509 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
21510 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
21512 2023-01-20 Jakub Jelinek <jakub@redhat.com>
21514 PR tree-optimization/108457
21515 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
21516 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
21517 argument instead of a temporary. Formatting fixes.
21519 2023-01-19 Jakub Jelinek <jakub@redhat.com>
21521 PR tree-optimization/108447
21522 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
21523 (relation_tests): Add self-tests for relation_{intersect,union}
21525 * selftest.h (relation_tests): Declare.
21526 * function-tests.cc (test_ranges): Call it.
21528 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
21531 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
21532 invalid third argument to __builtin_ia32_prefetch.
21534 2023-01-19 Jakub Jelinek <jakub@redhat.com>
21536 PR middle-end/108459
21537 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
21538 than fold_unary for NEGATE_EXPR.
21540 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
21543 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
21544 comment. Move assert about alignment a bit later.
21546 2023-01-19 Jakub Jelinek <jakub@redhat.com>
21548 PR tree-optimization/108440
21549 * tree-ssa-forwprop.cc: Include gimple-range.h.
21550 (simplify_rotate): For the forms with T2 wider than T and shift counts of
21551 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
21552 to B. For the forms with T2 wider than T and shift counts of
21553 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
21554 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
21555 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
21556 pass specific ranger instead of get_global_range_query.
21557 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
21560 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
21562 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
21563 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
21565 (aarch64_simd_vec_copy_lane<mode>): Likewise.
21566 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
21568 2023-01-19 Alexandre Oliva <oliva@adacore.com>
21571 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
21572 within debug insns.
21574 2023-01-18 Martin Jambor <mjambor@suse.cz>
21577 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
21578 lcone_of chain also do not need the body.
21580 2023-01-18 Richard Biener <rguenther@suse.de>
21583 2022-12-16 Richard Biener <rguenther@suse.de>
21585 PR middle-end/108086
21586 * tree-inline.cc (remap_ssa_name): Do not unshare the
21587 result from the decl_map.
21589 2023-01-18 Murray Steele <murray.steele@arm.com>
21592 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
21594 (__arm_vst1q_p_s8): Likewise.
21595 (__arm_vld1q_z_u8): Likewise.
21596 (__arm_vld1q_z_s8): Likewise.
21597 (__arm_vst1q_p_u16): Likewise.
21598 (__arm_vst1q_p_s16): Likewise.
21599 (__arm_vld1q_z_u16): Likewise.
21600 (__arm_vld1q_z_s16): Likewise.
21601 (__arm_vst1q_p_u32): Likewise.
21602 (__arm_vst1q_p_s32): Likewise.
21603 (__arm_vld1q_z_u32): Likewise.
21604 (__arm_vld1q_z_s32): Likewise.
21605 (__arm_vld1q_z_f16): Likewise.
21606 (__arm_vst1q_p_f16): Likewise.
21607 (__arm_vld1q_z_f32): Likewise.
21608 (__arm_vst1q_p_f32): Likewise.
21610 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21612 * config/xtensa/xtensa.md (xorsi3_internal):
21613 Rename from the original of "xorsi3".
21614 (xorsi3): New expansion pattern that emits addition rather than
21615 bitwise-XOR when the second source is a constant of -2147483648
21618 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
21619 Andrew Pinski <apinski@marvell.com>
21622 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
21623 vec_vsubcuqP with vec_vsubcuq.
21625 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
21628 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
21629 support for invalid uses of MMA opaque type in function arguments.
21631 2023-01-18 liuhongt <hongtao.liu@intel.com>
21634 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
21635 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
21636 -share or -mno-daz-ftz is specified.
21637 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
21638 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
21640 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
21642 * config/bpf/bpf.cc (bpf_option_override): Disable
21645 2023-01-17 Jakub Jelinek <jakub@redhat.com>
21647 PR tree-optimization/106523
21648 * tree-ssa-forwprop.cc (simplify_rotate): For the
21649 patterns with (-Y) & (B - 1) in one operand's shift
21650 count and Y in another, if T2 has wider precision than T,
21651 punt if Y could have a value in [B, B2 - 1] range.
21653 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
21656 * config/i386/i386.cc (x86_output_mi_thunk): Disable
21657 -mforce-indirect-call for PIC in 32-bit mode.
21659 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
21662 * ipa-modref.cc (modref_access_analysis::analyze): Use
21663 find_always_executed_bbs.
21664 * ipa-sra.cc (process_scan_results): Likewise.
21665 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
21666 (find_always_executed_bbs): New function.
21667 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
21668 (find_always_executed_bbs): Declare.
21670 2023-01-16 Jan Hubicka <jh@suse.cz>
21672 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
21673 by TARGET_USE_SCATTER.
21674 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
21675 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
21676 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
21677 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
21678 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
21679 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
21681 2023-01-16 Richard Biener <rguenther@suse.de>
21684 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
21686 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
21690 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
21691 (__ARM_mve_coerce3): Likewise.
21693 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
21695 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
21697 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
21699 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
21700 (number_of_iterations_bitcount): Add call to the above.
21701 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
21702 c[lt]z idiom recognition.
21704 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
21706 * doc/sourcebuild.texi: Add missing target attributes.
21708 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
21710 PR tree-optimization/94793
21711 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
21713 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
21714 (number_of_iterations_cltz_complement): New.
21715 (number_of_iterations_bitcount): Add call to the above.
21717 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
21719 * doc/extend.texi (Common Function Attributes): Fix grammar.
21721 2023-01-16 Jakub Jelinek <jakub@redhat.com>
21724 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
21725 * config/riscv/riscv-vsetvl.cc: Likewise.
21727 2023-01-16 Jakub Jelinek <jakub@redhat.com>
21730 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
21731 disable -Winit-self using pragma GCC diagnostic ignored.
21732 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
21734 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
21735 _mm256_undefined_si256): Likewise.
21736 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
21737 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
21738 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
21739 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
21741 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
21744 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
21745 support for invalid uses in inline asm, factor out the checking and
21746 erroring to lambda function check_and_error_invalid_use.
21748 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
21750 PR tree-optimization/107608
21751 * range-op-float.cc (range_operator_float::fold_range): Avoid
21752 folding into INF when flag_trapping_math.
21753 * value-range.h (frange::known_isinf): Return false for possible NANs.
21755 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21757 * config.gcc (csky-*-*): Support --with-float=softfp.
21759 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21761 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
21762 Rename to xtensa_adjust_reg_alloc_order.
21763 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
21764 Ditto. And also remove code to reorder register numbers for
21765 leaf functions, rename the tables, and adjust the allocation
21766 order for the call0 ABI to use register A0 more.
21767 (xtensa_leaf_regs): Remove.
21768 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
21769 (order_regs_for_local_alloc): Rename as the above.
21770 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
21772 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
21774 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
21775 Change to define_insn_and_split to fold ldr+dup to ld1rq.
21776 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
21778 2023-01-14 Alexandre Oliva <oliva@adacore.com>
21780 * hash-table.h (is_deleted): Precheck !is_empty.
21781 (mark_deleted): Postcheck !is_empty.
21782 (copy constructor): Test is_empty before is_deleted.
21784 2023-01-14 Alexandre Oliva <oliva@adacore.com>
21787 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
21790 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
21792 PR rtl-optimization/108274
21793 * function.cc (thread_prologue_and_epilogue_insns): Also update the
21794 DF information for calls in a few more cases.
21796 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
21798 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
21799 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
21801 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
21802 (MAX_SYNC_LIBFUNC_SIZE): Define.
21803 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
21805 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
21806 libcall when sync libcalls are disabled.
21807 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
21808 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
21809 are disabled on 32-bit target.
21810 * config/pa/pa.opt (matomic-libcalls): New option.
21811 * doc/invoke.texi (HPPA Options): Update.
21813 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
21815 PR rtl-optimization/108117
21816 PR rtl-optimization/108132
21817 * sched-deps.cc (deps_analyze_insn): Do not schedule across
21818 calls before reload.
21820 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
21822 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
21823 options for -mlibarch.
21824 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
21825 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
21827 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
21829 * attribs.cc (strict_flex_array_level_of): Move this function to ...
21830 * attribs.h (strict_flex_array_level_of): Remove the declaration.
21831 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
21832 replace the referece to strict_flex_array_level_of with
21833 DECL_NOT_FLEXARRAY.
21834 * tree.cc (component_ref_size): Likewise.
21836 2023-01-13 Richard Biener <rguenther@suse.de>
21839 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
21840 crtfastmath.o for -shared.
21841 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
21843 2023-01-13 Richard Biener <rguenther@suse.de>
21846 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
21847 crtfastmath.o for -shared.
21848 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
21850 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
21853 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
21855 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
21857 (TARGET_DWARF_FRAME_REG_MODE): Define.
21859 2023-01-13 Richard Biener <rguenther@suse.de>
21862 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
21863 update EH info on the fly.
21865 2023-01-13 Richard Biener <rguenther@suse.de>
21867 PR tree-optimization/108387
21868 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
21869 value before inserting expression into the tables.
21871 2023-01-12 Andrew Pinski <apinski@marvell.com>
21872 Roger Sayle <roger@nextmovesoftware.com>
21874 PR tree-optimization/92342
21875 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
21876 Use tcc_comparison and :c for the multiply.
21877 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
21879 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
21880 Richard Sandiford <richard.sandiford@arm.com>
21883 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
21884 Check DECL_PACKED for bitfield.
21885 (aarch64_layout_arg): Warn when parameter passing ABI changes.
21886 (aarch64_function_arg_boundary): Do not warn here.
21887 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
21890 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
21891 Richard Sandiford <richard.sandiford@arm.com>
21893 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
21895 (aarch64_layout_arg): Factorize warning conditions.
21896 (aarch64_function_arg_boundary): Fix typo.
21897 * function.cc (currently_expanding_function_start): New variable.
21898 (expand_function_start): Handle
21899 currently_expanding_function_start.
21900 * function.h (currently_expanding_function_start): Declare.
21902 2023-01-12 Richard Biener <rguenther@suse.de>
21904 PR tree-optimization/99412
21905 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
21906 (swap_ops_for_binary_stmt): Remove reduction handling.
21907 (rewrite_expr_tree_parallel): Adjust.
21908 (reassociate_bb): Likewise.
21909 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
21911 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21913 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
21914 Rearrange the emitting codes.
21916 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21918 * config/xtensa/xtensa.md (*btrue):
21919 Correct value of the attribute "length" that depends on
21920 TARGET_DENSITY and operands, and add '?' character to the register
21921 constraint of the compared operand.
21923 2023-01-12 Alexandre Oliva <oliva@adacore.com>
21925 * hash-table.h (expand): Check elements and deleted counts.
21926 (verify): Likewise.
21928 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
21930 PR tree-optimization/71343
21931 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
21932 the value number of the expression X << C the same as the value
21933 number for the multiplication X * (1<<C).
21935 2023-01-11 David Faust <david.faust@oracle.com>
21938 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
21939 floating point modes.
21941 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
21943 PR tree-optimization/108199
21944 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
21945 for bit-field references.
21947 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
21949 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
21950 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
21951 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
21952 OPTION_MASK_P10_FUSION.
21954 2023-01-11 Richard Biener <rguenther@suse.de>
21956 PR tree-optimization/107767
21957 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
21958 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
21959 * tree-switch-conversion.cc (switch_conversion::collect):
21960 Count unique non-default targets accounting for later
21961 merging opportunities.
21963 2023-01-11 Martin Liska <mliska@suse.cz>
21965 PR middle-end/107976
21966 * params.opt: Limit JT params.
21967 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
21969 2023-01-11 Richard Biener <rguenther@suse.de>
21971 PR tree-optimization/108352
21972 * tree-ssa-threadbackward.cc
21973 (back_threader_profitability::profitable_path_p): Adjust
21974 heuristic that allows non-multi-way branch threads creating
21976 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
21977 (--param fsm-scale-path-stmts): Adjust.
21978 * params.opt (--param=fsm-scale-path-blocks=): Remove.
21979 (-param=fsm-scale-path-stmts=): Adjust description.
21981 2023-01-11 Richard Biener <rguenther@suse.de>
21983 PR tree-optimization/108353
21984 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
21986 (add_ssa_edge): Simplify.
21987 (add_control_edge): Likewise.
21988 (ssa_prop_init): Likewise.
21989 (ssa_prop_fini): Likewise.
21990 (ssa_propagation_engine::ssa_propagate): Likewise.
21992 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
21994 * config/s390/s390.md (*not<mode>): New pattern.
21996 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21998 * config/xtensa/xtensa.cc (xtensa_insn_cost):
21999 Let insn cost for size be obtained by applying COSTS_N_INSNS()
22000 to instruction length and then dividing by 3.
22002 2023-01-10 Richard Biener <rguenther@suse.de>
22004 PR tree-optimization/106293
22005 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
22006 process degenerate PHI defs.
22008 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
22010 PR rtl-optimization/106421
22011 * cprop.cc (bypass_block): Check that DEST is local to this
22012 function (non-NULL) before calling find_edge.
22014 2023-01-10 Martin Jambor <mjambor@suse.cz>
22017 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
22018 sort_replacements, lookup_first_base_replacement and
22019 m_sorted_replacements_p.
22020 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
22021 (ipa_param_body_adjustments::register_replacement): Set
22022 m_sorted_replacements_p to false.
22023 (compare_param_body_replacement): New function.
22024 (ipa_param_body_adjustments::sort_replacements): Likewise.
22025 (ipa_param_body_adjustments::common_initialization): Call
22027 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
22028 m_sorted_replacements_p.
22029 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
22031 (ipa_param_body_adjustments::lookup_first_base_replacement): New
22033 (ipa_param_body_adjustments::modify_call_stmt): Use
22034 lookup_first_base_replacement.
22035 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
22036 adjustments->sort_replacements.
22038 2023-01-10 Richard Biener <rguenther@suse.de>
22040 PR tree-optimization/108314
22041 * tree-vect-stmts.cc (vectorizable_condition): Do not
22042 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
22044 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22046 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
22048 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22050 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
22052 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22054 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
22055 defines for soft float abi.
22057 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22059 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
22060 (smart_bclri): Likewise.
22061 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
22062 (fast_bclri): Likewise.
22063 (fast_cmpnesi_i): Likewise.
22064 (*fast_cmpltsi_i): Likewise.
22065 (*fast_cmpgeusi_i): Likewise.
22067 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
22069 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
22070 flag_fp_int_builtin_inexact || !flag_trapping_math.
22071 (<frm_pattern><mode>2): Likewise.
22073 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
22075 * config/s390/s390.cc (s390_register_info): Check call_used_regs
22076 instead of hard-coding the register numbers for call saved
22078 (s390_optimize_register_info): Likewise.
22080 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
22082 * doc/gm2.texi (Overview): Fix @node markers.
22083 (Using): Likewise. Remove subsections that were moved to Overview
22084 from the menu and move others around.
22086 2023-01-09 Richard Biener <rguenther@suse.de>
22088 PR middle-end/108209
22089 * genmatch.cc (commutative_op): Fix return value for
22090 user-id with non-commutative first replacement.
22092 2023-01-09 Jakub Jelinek <jakub@redhat.com>
22095 * calls.cc (expand_call): For calls with
22096 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
22099 2023-01-09 Richard Biener <rguenther@suse.de>
22101 PR middle-end/69482
22102 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
22103 qualified accesses also force objects to memory.
22105 2023-01-09 Martin Liska <mliska@suse.cz>
22108 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
22109 NULL (deleleted value) to a hash_set.
22111 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22113 * config/xtensa/xtensa.md (*splice_bits):
22114 New insn_and_split pattern.
22116 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22118 * config/xtensa/xtensa.cc
22119 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
22120 New helper functions.
22121 (xtensa_set_return_address, xtensa_output_mi_thunk):
22122 Change to use the helper function.
22123 (xtensa_emit_adjust_stack_ptr): Ditto.
22124 And also change to try reusing the content of scratch register
22125 A9 if the register is not modified in the function body.
22127 2023-01-07 LIU Hao <lh_mouse@126.com>
22129 PR middle-end/108300
22130 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
22131 before <windows.h>.
22132 * diagnostic-color.cc: Likewise.
22133 * plugin.cc: Likewise.
22134 * prefix.cc: Likewise.
22136 2023-01-06 Joseph Myers <joseph@codesourcery.com>
22138 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
22139 for handling real integer types.
22141 2023-01-06 Tamar Christina <tamar.christina@arm.com>
22144 2022-12-12 Tamar Christina <tamar.christina@arm.com>
22146 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
22147 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
22148 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
22149 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
22150 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
22151 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
22152 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
22153 (aarch64_simd_dupv2hf): New.
22154 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
22156 * config/aarch64/iterators.md (VHSDF_P): New.
22157 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
22158 Vel, q, vp): Add V2HF.
22159 * config/arm/types.md (neon_fp_reduc_add_h): New.
22161 2023-01-06 Martin Liska <mliska@suse.cz>
22163 PR middle-end/107966
22164 * doc/options.texi: Fix Var documentation in internal manual.
22166 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
22169 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
22171 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
22172 RTL expansion to allow condition (mask) to be shared/reused,
22173 by avoiding overwriting pseudos and adding REG_EQUAL notes.
22175 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
22177 * common.opt: Add -static-libgm2.
22178 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
22179 * doc/gm2.texi: Document static-libgm2.
22180 * gcc.cc (driver_handle_option): Allow static-libgm2.
22182 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
22184 * common/config/i386/i386-common.cc (processor_alias_table):
22185 Use CPU_ZNVER4 for znver4.
22186 * config/i386/i386.md: Add znver4.md.
22187 * config/i386/znver4.md: New.
22189 2023-01-04 Jakub Jelinek <jakub@redhat.com>
22191 PR tree-optimization/108253
22192 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
22195 2023-01-04 Jakub Jelinek <jakub@redhat.com>
22197 PR middle-end/108237
22198 * generic-match-head.cc: Include tree-pass.h.
22199 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
22200 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
22201 resp. PROP_gimple_lvec property set.
22203 2023-01-04 Jakub Jelinek <jakub@redhat.com>
22205 PR sanitizer/108256
22206 * convert.cc (do_narrow): Punt for MULT_EXPR if original
22207 type doesn't wrap around and -fsanitize=signed-integer-overflow
22209 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
22211 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
22213 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
22214 * common/config/i386/i386-common.cc: Add Emeraldrapids.
22216 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
22218 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
22221 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
22223 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
22224 default constructor to initialize it.
22225 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
22226 for last and iterate to handle recursive calls. Delete leftover
22227 candidates at the end.
22228 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
22230 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
22231 gc_candidate bit when a clone is used.
22233 2023-01-03 Florian Weimer <fweimer@redhat.com>
22236 2023-01-02 Florian Weimer <fweimer@redhat.com>
22238 * dwarf2cfi.cc (init_return_column_size): Remove.
22239 (init_one_dwarf_reg_size): Adjust.
22240 (generate_dwarf_reg_sizes): New function. Extracted
22241 from expand_builtin_init_dwarf_reg_sizes.
22242 (expand_builtin_init_dwarf_reg_sizes): Call
22243 generate_dwarf_reg_sizes.
22244 * target.def (init_dwarf_reg_sizes_extra): Adjust
22246 * config/msp430/msp430.cc
22247 (msp430_init_dwarf_reg_sizes_extra): Adjust.
22248 * config/rs6000/rs6000.cc
22249 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
22250 * doc/tm.texi: Update.
22252 2023-01-03 Florian Weimer <fweimer@redhat.com>
22255 2023-01-02 Florian Weimer <fweimer@redhat.com>
22257 * debug.h (dwarf_reg_sizes_constant): Declare.
22258 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
22260 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
22262 PR tree-optimization/105043
22263 * doc/extend.texi (Object Size Checking): Split out into two
22264 subsections and mention _FORTIFY_SOURCE.
22266 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
22268 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
22269 RTL expansion to allow condition (mask) to be shared/reused,
22270 by avoiding overwriting pseudos and adding REG_EQUAL notes.
22272 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
22275 * config/i386/i386-features.cc
22276 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
22277 the gain/cost of converting a MEM operand.
22279 2023-01-03 Jakub Jelinek <jakub@redhat.com>
22281 PR middle-end/108264
22282 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
22283 from source which doesn't have scalar integral mode first convert
22286 2023-01-03 Jakub Jelinek <jakub@redhat.com>
22288 PR rtl-optimization/108263
22289 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
22292 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
22295 * config/i386/lujiazui.md (lujiazui_div): New automaton.
22296 (lua_div): New unit.
22297 (lua_idiv_qi): Correct unit in the reservation.
22298 (lua_idiv_qi_load): Ditto.
22299 (lua_idiv_hi): Ditto.
22300 (lua_idiv_hi_load): Ditto.
22301 (lua_idiv_si): Ditto.
22302 (lua_idiv_si_load): Ditto.
22303 (lua_idiv_di): Ditto.
22304 (lua_idiv_di_load): Ditto.
22305 (lua_fdiv_SF): Ditto.
22306 (lua_fdiv_SF_load): Ditto.
22307 (lua_fdiv_DF): Ditto.
22308 (lua_fdiv_DF_load): Ditto.
22309 (lua_fdiv_XF): Ditto.
22310 (lua_fdiv_XF_load): Ditto.
22311 (lua_ssediv_SF): Ditto.
22312 (lua_ssediv_load_SF): Ditto.
22313 (lua_ssediv_V4SF): Ditto.
22314 (lua_ssediv_load_V4SF): Ditto.
22315 (lua_ssediv_V8SF): Ditto.
22316 (lua_ssediv_load_V8SF): Ditto.
22317 (lua_ssediv_SD): Ditto.
22318 (lua_ssediv_load_SD): Ditto.
22319 (lua_ssediv_V2DF): Ditto.
22320 (lua_ssediv_load_V2DF): Ditto.
22321 (lua_ssediv_V4DF): Ditto.
22322 (lua_ssediv_load_V4DF): Ditto.
22324 2023-01-02 Florian Weimer <fweimer@redhat.com>
22326 * debug.h (dwarf_reg_sizes_constant): Declare.
22327 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
22329 2023-01-02 Florian Weimer <fweimer@redhat.com>
22331 * dwarf2cfi.cc (init_return_column_size): Remove.
22332 (init_one_dwarf_reg_size): Adjust.
22333 (generate_dwarf_reg_sizes): New function. Extracted
22334 from expand_builtin_init_dwarf_reg_sizes.
22335 (expand_builtin_init_dwarf_reg_sizes): Call
22336 generate_dwarf_reg_sizes.
22337 * target.def (init_dwarf_reg_sizes_extra): Adjust
22339 * config/msp430/msp430.cc
22340 (msp430_init_dwarf_reg_sizes_extra): Adjust.
22341 * config/rs6000/rs6000.cc
22342 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
22343 * doc/tm.texi: Update.
22345 2023-01-02 Jakub Jelinek <jakub@redhat.com>
22347 * gcc.cc (process_command): Update copyright notice dates.
22348 * gcov-dump.cc (print_version): Ditto.
22349 * gcov.cc (print_version): Ditto.
22350 * gcov-tool.cc (print_version): Ditto.
22351 * gengtype.cc (create_file): Ditto.
22352 * doc/cpp.texi: Bump @copying's copyright year.
22353 * doc/cppinternals.texi: Ditto.
22354 * doc/gcc.texi: Ditto.
22355 * doc/gccint.texi: Ditto.
22356 * doc/gcov.texi: Ditto.
22357 * doc/install.texi: Ditto.
22358 * doc/invoke.texi: Ditto.
22360 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
22361 Uroš Bizjak <ubizjak@gmail.com>
22363 * config/i386/i386.md (extendditi2): New define_insn.
22364 (define_split): Use DWIH mode iterator to treat new extendditi2
22365 identically to existing extendsidi2_1.
22366 (define_peephole2): Likewise.
22367 (define_peephole2): Likewise.
22368 (define_Split): Likewise.
22371 Copyright (C) 2023 Free Software Foundation, Inc.
22373 Copying and distribution of this file, with or without modification,
22374 are permitted in any medium without royalty provided the copyright
22375 notice and this notice are preserved.