ada: Adjust QNX Ada priorities to match QNX system priorities
[official-gcc.git] / gcc / ChangeLog
blobdb1de5741ae58dec2833333eabd0805ac1aafd85
1 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
3         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
5 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
8         Fix signed comparison warning in loop from npats to enelts.
10 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
12         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
13         to offloading compilation.
14         * config/gcn/mkoffload.cc (main): Adjust.
15         * config/nvptx/mkoffload.cc (main): Likewise.
16         * doc/invoke.texi (foffload-options): Update example.
18 2023-06-14  liuhongt  <hongtao.liu@intel.com>
20         PR target/110227
21         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
22         for alternative 2 since there's no evex version for vpcmpeqd
23         ymm, ymm, ymm.
25 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
27         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
29 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
31         * config/sh/divtab.cc: Remove.
33 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
35         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
36         superfluous spaces around \t for vpcmpeqd.
38 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
40         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
41         clearing vectors with only a single element.  Set CLEARED if the
42         vector was initialized to zero.
44 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
46         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
47         #include.
48         (ENTRY): Undef.
49         (TUPLE_ENTRY): Undef.
51 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
53         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
54         (shuffle_generic_patterns): Ditto.
55         (expand_vec_perm_const_1): Ditto.
57 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
59         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
60         (shuffle_decompress_patterns): Ditto.
62 2023-06-13  Richard Biener  <rguenther@suse.de>
64         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
66 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
67             Kito Cheng  <kito.cheng@sifive.com>
69         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
70         warning flag if func is not builtin
71         * config/riscv/riscv.cc
72         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
73         (riscv_arg_has_vector): Determine whether the arg is vector type.
74         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
75         (riscv_init_cumulative_args): The same as header.
76         (riscv_get_arg_info): Add the checking.
77         (riscv_function_value): Check the func return and set warning flag
78         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
79         determine whether warning psabi or not.
81 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
83         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
84         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
85         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
86         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
87         with TP_TPIDRURO.
88         (arm_output_load_tpidr): Define.
89         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
90         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
91         assembly.
92         (reload_tp_hard): Likewise.
93         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
94         arm_tp_type.
95         * doc/invoke.texi (Arm Options, mtp): Document new values.
97 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
99         PR target/108779
100         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
101         AARCH64_TPIDRRO_EL0 value.
102         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
103         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
104         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
105         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
107 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
109         * range-op-float.cc (frange_nextafter): Drop inline.
110         (frelop_early_resolve): Add static.
111         (frange_float): Likewise.
113 2023-06-13  Richard Biener  <rguenther@suse.de>
115         PR middle-end/110232
116         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
117         to check whether the buffer covers the whole vector.
119 2023-06-13  Richard Biener  <rguenther@suse.de>
121         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
122         .MASK_LOAD and friends set the size of the access to unknown.
124 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
126         PR target/96339
127         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
128         calls that have a constant input predicate vector.
129         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
130         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
131         (svlast_impl::vect_all_same): Check if all vector elements are equal.
133 2023-06-13  Andi Kleen  <ak@linux.intel.com>
135         * config/i386/gcc-auto-profile: Regenerate.
137 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
139         * config/riscv/vector-iterators.md: Fix requirement.
141 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
143         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
144         (shuffle_decompress_patterns): New function.
145         (expand_vec_perm_const_1): Add decompress optimization.
147 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
149         PR rtl-optimization/101188
150         * postreload.cc (reload_cse_move2add_invalidate): New function,
151         extracted from...
152         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
154 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
156         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
157         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
158         and if maxv == 1, use constant element for duplicating into register.
160 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
162         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
163         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
164         (gimplify_adjust_omp_clauses): Change
165         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
166         GOMP_MAP_FORCE_PRESENT.
167         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
168         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
169         to/from clauses with present modifier.
171 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
173         PR tree-optimization/110205
174         * range-op-float.cc (range_operator::fold_range): Add default FII
175         fold routine.
176         * range-op-mixed.h (class operator_gt): Add missing final overrides.
177         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
178         (operator_lshift ::update_bitmask): Add final override.
179         (operator_rshift ::update_bitmask): Add final override.
180         * range-op.h (range_operator::fold_range): Add FII prototype.
182 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
184         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
185         Use range_op_handler directly.
186         * range-op.cc (range_op_handler::range_op_handler): Unsigned
187         param instead of tree-code.
188         (ptr_op_widen_plus_signed): Delete.
189         (ptr_op_widen_plus_unsigned): Delete.
190         (ptr_op_widen_mult_signed): Delete.
191         (ptr_op_widen_mult_unsigned): Delete.
192         (range_op_table::initialize_integral_ops): Add new opcodes.
193         * range-op.h (range_op_handler): Use unsigned.
194         (OP_WIDEN_MULT_SIGNED): New.
195         (OP_WIDEN_MULT_UNSIGNED): New.
196         (OP_WIDEN_PLUS_SIGNED): New.
197         (OP_WIDEN_PLUS_UNSIGNED): New.
198         (RANGE_OP_TABLE_SIZE): New.
199         (range_op_table::operator []): Use unsigned.
200         (range_op_table::set): Use unsigned.
201         (m_range_tree): Make unsigned.
202         (ptr_op_widen_mult_signed): Remove.
203         (ptr_op_widen_mult_unsigned): Remove.
204         (ptr_op_widen_plus_signed): Remove.
205         (ptr_op_widen_plus_unsigned): Remove.
207 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
209         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
210         manually as there is no access to the default operator.
211         (cfn_copysign::fold_range): Don't check for validity.
212         (cfn_ubsan::fold_range): Ditto.
213         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
214         * range-op.cc (default_operator): New.
215         (range_op_handler::range_op_handler): Use default_operator
216         instead of NULL.
217         (range_op_handler::operator bool): Move from header, compare
218         against default operator.
219         (range_op_handler::range_op): New.
220         * range-op.h (range_op_handler::operator bool): Move.
222 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
224         * range-op.cc (unified_table): Delete.
225         (range_op_table operator_table): Instantiate.
226         (range_op_table::range_op_table): Rename from unified_table.
227         (range_op_handler::range_op_handler): Use range_op_table.
228         * range-op.h (range_op_table::operator []): Inline.
229         (range_op_table::set): Inline.
231 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
233         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
234         pass type.
235         * gimple-range-op.cc (get_code): Rename from get_code_and_type
236         and simplify.
237         (gimple_range_op_handler::supported_p): No need for type.
238         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
239         (cfn_copysign::fold_range): Ditto.
240         (cfn_ubsan::fold_range): Ditto.
241         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
242         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
243         * range-op-float.cc (operator_plus::op1_range): Ditto.
244         (operator_mult::op1_range): Ditto.
245         (range_op_float_tests): Ditto.
246         * range-op.cc (get_op_handler): Remove.
247         (range_op_handler::set_op_handler): Remove.
248         (operator_plus::op1_range): No need for type.
249         (operator_minus::op1_range): Ditto.
250         (operator_mult::op1_range): Ditto.
251         (operator_exact_divide::op1_range): Ditto.
252         (operator_cast::op1_range): Ditto.
253         (perator_bitwise_not::fold_range): Ditto.
254         (operator_negate::fold_range): Ditto.
255         * range-op.h (range_op_handler::range_op_handler): Remove type param.
256         (range_cast): No need for type.
257         (range_op_table::operator[]): Check for enum_code >= 0.
258         * tree-data-ref.cc (compute_distributive_range): No need for type.
259         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
260         * value-query.cc (range_query::get_tree_range): Ditto.
261         * value-relation.cc (relation_oracle::validate_relation): Ditto.
262         * vr-values.cc (range_of_var_in_loop): Ditto.
263         (simplify_using_ranges::fold_cond_with_ops): Ditto.
265 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
267         * range-op-mixed.h (operator_max): Remove final.
268         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
269         (pointer_table::pointer_table): Remove.
270         (class hybrid_max_operator): New.
271         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
272         * range-op.cc (pointer_tree_table): Remove.
273         (unified_table::unified_table): Comment out MAX_EXPR.
274         (get_op_handler): Remove check of pointer table.
275         * range-op.h (class pointer_table): Remove.
277 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
279         * range-op-mixed.h (operator_min): Remove final.
280         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
281         (class hybrid_min_operator): New.
282         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
283         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
285 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
287         * range-op-mixed.h (operator_bitwise_or): Remove final.
288         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
289         (class hybrid_or_operator): New.
290         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
291         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
293 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
295         * range-op-mixed.h (operator_bitwise_and): Remove final.
296         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
297         (class hybrid_and_operator): New.
298         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
299         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
301 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
303         * Makefile.in (OBJS): Add range-op-ptr.o.
304         * range-op-mixed.h (update_known_bitmask): Move prototype here.
305         (minus_op1_op2_relation_effect): Move prototype here.
306         (wi_includes_zero_p): Move function to here.
307         (wi_zero_p): Ditto.
308         * range-op.cc (update_known_bitmask): Remove static.
309         (wi_includes_zero_p): Move to header.
310         (wi_zero_p): Move to header.
311         (minus_op1_op2_relation_effect): Remove static.
312         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
313         (pointer_plus_operator): Ditto.
314         (pointer_min_max_operator): Ditto.
315         (pointer_and_operator): Ditto.
316         (pointer_or_operator): Ditto.
317         (pointer_table): Ditto.
318         (range_op_table::initialize_pointer_ops): Ditto.
319         * range-op-ptr.cc: New.
321 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
323         * range-op-mixed.h (class operator_max): Move from...
324         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
325         (get_op_handler): Remove the integral table.
326         (class operator_max): Move from here.
327         (integral_table::integral_table): Delete.
328         * range-op.h (class integral_table): Delete.
330 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
332         * range-op-mixed.h (class operator_min): Move from...
333         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
334         (class operator_min): Move from here.
335         (integral_table::integral_table): Remove MIN_EXPR.
337 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
339         * range-op-mixed.h (class operator_bitwise_or): Move from...
340         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
341         (class operator_bitwise_or): Move from here.
342         (integral_table::integral_table): Remove BIT_IOR_EXPR.
344 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
346         * range-op-mixed.h (class operator_bitwise_and): Move from...
347         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
348         (get_op_handler): Check for a pointer table entry first.
349         (class operator_bitwise_and): Move from here.
350         (integral_table::integral_table): Remove BIT_AND_EXPR.
352 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
354         * range-op-mixed.h (class operator_bitwise_xor): Move from...
355         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
356         (class operator_bitwise_xor): Move from here.
357         (integral_table::integral_table): Remove BIT_XOR_EXPR.
358         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
360 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
362         * range-op-mixed.h (class operator_bitwise_not): Move from...
363         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
364         (class operator_bitwise_not): Move from here.
365         (integral_table::integral_table): Remove BIT_NOT_EXPR.
366         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
368 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
370         * range-op-mixed.h (class operator_addr_expr): Move from...
371         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
372         (class operator_addr_expr): Move from here.
373         (integral_table::integral_table): Remove ADDR_EXPR.
374         (pointer_table::pointer_table): Remove ADDR_EXPR.
376 2023-06-12  Pan Li  <pan2.li@intel.com>
378         * config/riscv/riscv-vector-builtins-types.def
379         (vfloat16m1_t): Add type to lmul1 ops.
380         (vfloat16m2_t): Likewise.
381         (vfloat16m4_t): Likewise.
383 2023-06-12  Richard Biener  <rguenther@suse.de>
385         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
386         .MASK_STORE and friend set the size of the access to
387         unknown.
389 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
391         * config.in: Regenerate.
392         * configure: Regenerate.
393         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
395 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
397         * config/riscv/autovec-opt.md
398         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
399         (*<any_shiftrt:optab>trunc<mode>): Ditto.
400         * config/riscv/autovec.md (<optab><mode>3): Change to
401         define_insn_and_split.
402         (v<optab><mode>3): Ditto.
403         (trunc<mode><v_double_trunc>2): Ditto.
405 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
407         * simplify-rtx.cc (simplify_const_unary_operation):
408         Handle US_TRUNCATE, SS_TRUNCATE.
410 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
412         PR modula2/109952
413         * doc/gm2.texi (Standard procedures): Fix Next link.
415 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
417         * config.in: Regenerate.
419 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
421         PR middle-end/110142
422         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
423         subtype to vect_widened_op_tree and remove subtype parameter, also
424         remove superfluous overloaded function definition.
425         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
426         to call to vect_recog_widen_op_pattern.
427         (vect_recog_widen_minus_pattern): Likewise.
429 2023-06-12  liuhongt  <hongtao.liu@intel.com>
431         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
432         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
433         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
434         (vec_unpacks_lo_<mode>): Ditto.
435         (vec_unpacks_hi_<mode>): Ditto.
436         (sse_movlhps_<mode>): New define_insn.
437         (ssse3_palignr<mode>_perm): Extend to V_128H.
438         (V_128H): New mode iterator.
439         (ssepackPHmode): New mode attribute.
440         (vunpck_extract_mode): Ditto.
441         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
442         (vpckfloat_temp_mode): Ditto.
443         (vpckfloat_op_mode): Ditto.
444         (vunpckfixt_mode): Extend to VxHF.
445         (vunpckfixt_model): Ditto.
446         (vunpckfixt_extract_mode): Ditto.
448 2023-06-12  Richard Biener  <rguenther@suse.de>
450         PR middle-end/110200
451         * genmatch.cc (expr::gen_transform): Put braces around
452         the if arm for the (convert ...) short-cut.
454 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
456         PR target/109932
457         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
458         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
460 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
462         PR target/110011
463         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
464         floating constant itself for real_to_target call.
466 2023-06-12  Pan Li  <pan2.li@intel.com>
468         * config/riscv/riscv-vector-builtins-types.def
469         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
470         (vfloat16mf2_t): Ditto.
471         (vfloat16m1_t): Ditto.
472         (vfloat16m2_t): Ditto.
473         (vfloat16m4_t): Ditto.
475 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
477         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
478         Do not require a stack frame when debugging is enabled for AIX.
480 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
482         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
483         Remove attribute values.
484         (insv_notbit): New post-reload insn.
485         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
486         (*insv.not-bit.0_split, *insv.not-bit.7_split)
487         (*insv.xor-extract_split): Split to insv_notbit.
488         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
489         (*insv.xor-extract): Remove post-reload insns.
490         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
491         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
492         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
493         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
495 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
497         PR target/109907
498         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
499         (MSB, SIZE): New mode attributes.
500         (any_shift): New code iterator.
501         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
502         (*lshr<mode>3_const_split): Add constraint alternative for
503         the case of shift-offset = MSB.  Ditch "length" attribute.
504         (extzv<mode): New. replaces extzv.  Adjust following patterns.
505         Use avr_out_extr, avr_out_extr_not to print asm.
506         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
507         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
508         * config/avr/constraints.md (C15, C23, C31, Yil): New
509         * config/avr/predicates.md (reg_or_low_io_operand)
510         (const7_operand, reg_or_low_io_operand)
511         (const15_operand, const_0_to_15_operand)
512         (const23_operand, const_0_to_23_operand)
513         (const31_operand, const_0_to_31_operand): New.
514         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
515         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
516         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
517         MSB case to new insn constraint "r" for operands[1].
518         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
519         Handle these cases.
520         (avr_rtx_costs_1): Adjust cost for a new pattern.
522 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
524         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
525         (vector_insn_info::parse_insn): Add rtx_insn parse.
526         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
527         (get_first_vsetvl): New function.
528         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
529         (pass_vsetvl::cleanup_insns): Remove it.
530         (pass_vsetvl::ssa_post_optimization): New function.
531         (has_no_uses): Ditto.
532         (pass_vsetvl::propagate_avl): Remove it.
533         (pass_vsetvl::df_post_optimization): New function.
534         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
535         * config/riscv/riscv-vsetvl.h: Adapt declaration.
537 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
539         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
540         (ipcp_vr_lattice::print): Call dump method.
541         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
542         Value_Range.
543         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
544         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
545         range.
546         (initialize_node_lattices): Pass type when appropriate.
547         (ipa_vr_operation_and_type_effects): Make type agnostic.
548         (ipa_value_range_from_jfunc): Same.
549         (propagate_vr_across_jump_function): Same.
550         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
551         (evaluate_properties_for_edge): Same.
552         * ipa-prop.cc (ipa_vr::get_vrange): Same.
553         (ipcp_update_vr): Same.
554         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
555         (ipa_range_set_and_normalize): Same.
557 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
559         PR target/109650
560         PR target/92729
561         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
562         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
563         (avr_pass_data_ifelse): New pass_data for it.
564         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
565         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
566         (avr_out_cmp_ext): New functions.
567         (compare_condtition): Make sure REG_CC dies in the branch insn.
568         (avr_rtx_costs_1): Add computation of cbranch costs.
569         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
570         [ADJUST_LEN_CMP_SEXT]Handle them.
571         (TARGET_CANONICALIZE_COMPARISON): New define.
572         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
573         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
574         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
575         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
576         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
577         (avr_out_cmp_zext): New Protos
578         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
579         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
580         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
581         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
582         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
583         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
584         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
585         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
586         (adjust_len) [add_set_ZN, cmp_zext]: New.
587         (QIPSI): New mode iterator.
588         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
589         (gelt): New code iterator.
590         (gelt_eqne): New code attribute.
591         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
592         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
593         (*cmpqi_sign_extend): Remove insns.
594         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
595         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
596         * config/avr/predicates.md (scratch_or_d_register_operand): New.
597         * config/avr/constraints.md (Yxx): New constraint.
599 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
601         * config/riscv/autovec.md (select_vl<mode>): New pattern.
602         * config/riscv/riscv-protos.h (expand_select_vl): New function.
603         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
605 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
607         * range-op-float.cc (foperator_mult_div_base): Delete.
608         (foperator_mult_div_base::find_range): Make static local function.
609         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
610         (operator_mult::op1_range): Rename from foperator_mult.
611         (operator_mult::op2_range): Ditto.
612         (operator_mult::rv_fold): Ditto.
613         (float_table::float_table): Remove MULT_EXPR.
614         (class foperator_div): Inherit from range_operator.
615         (float_table::float_table): Delete.
616         * range-op-mixed.h (class operator_mult): Combined from integer
617         and float files.
618         * range-op.cc (float_tree_table): Delete.
619         (op_mult): New object.
620         (unified_table::unified_table): Add MULT_EXPR.
621         (get_op_handler): Do not check float table any longer.
622         (class cross_product_operator): Move to range-op-mixed.h.
623         (class operator_mult): Move to range-op-mixed.h.
624         (integral_table::integral_table): Remove MULT_EXPR.
625         (pointer_table::pointer_table): Remove MULT_EXPR.
626         * range-op.h (float_table): Remove.
628 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
630         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
631         to range-op-mixed.h
632         (operator_negate::fold_range): Rename from foperator_negate.
633         (operator_negate::op1_range): Ditto.
634         (float_table::float_table): Remove NEGATE_EXPR.
635         * range-op-mixed.h (class operator_negate): Combined from integer
636         and float files.
637         * range-op.cc (op_negate): New object.
638         (unified_table::unified_table): Add NEGATE_EXPR.
639         (class operator_negate): Move to range-op-mixed.h.
640         (integral_table::integral_table): Remove NEGATE_EXPR.
641         (pointer_table::pointer_table): Remove NEGATE_EXPR.
643 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
645         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
646         to range-op-mixed.h
647         (operator_minus::fold_range): Rename from foperator_minus.
648         (operator_minus::op1_range): Ditto.
649         (operator_minus::op2_range): Ditto.
650         (operator_minus::rv_fold): Ditto.
651         (float_table::float_table): Remove MINUS_EXPR.
652         * range-op-mixed.h (class operator_minus): Combined from integer
653         and float files.
654         * range-op.cc (op_minus): New object.
655         (unified_table::unified_table): Add MINUS_EXPR.
656         (class operator_minus): Move to range-op-mixed.h.
657         (integral_table::integral_table): Remove MINUS_EXPR.
658         (pointer_table::pointer_table): Remove MINUS_EXPR.
660 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
662         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
663         to range-op-mixed.h
664         (operator_abs::fold_range): Rename from foperator_abs.
665         (operator_abs::op1_range): Ditto.
666         (float_table::float_table): Remove ABS_EXPR.
667         * range-op-mixed.h (class operator_abs): Combined from integer
668         and float files.
669         * range-op.cc (op_abs): New object.
670         (unified_table::unified_table): Add ABS_EXPR.
671         (class operator_abs): Move to range-op-mixed.h.
672         (integral_table::integral_table): Remove ABS_EXPR.
673         (pointer_table::pointer_table): Remove ABS_EXPR.
675 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
677         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
678         to range-op-mixed.h
679         (operator_plus::fold_range): Rename from foperator_plus.
680         (operator_plus::op1_range): Ditto.
681         (operator_plus::op2_range): Ditto.
682         (operator_plus::rv_fold): Ditto.
683         (float_table::float_table): Remove PLUS_EXPR.
684         * range-op-mixed.h (class operator_plus): Combined from integer
685         and float files.
686         * range-op.cc (op_plus): New object.
687         (unified_table::unified_table): Add PLUS_EXPR.
688         (class operator_plus): Move to range-op-mixed.h.
689         (integral_table::integral_table): Remove PLUS_EXPR.
690         (pointer_table::pointer_table): Remove PLUS_EXPR.
692 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
694         * range-op-mixed.h (class operator_cast): Combined from integer
695         and float files.
696         * range-op.cc (op_cast): New object.
697         (unified_table::unified_table): Add op_cast
698         (class operator_cast): Move to range-op-mixed.h.
699         (integral_table::integral_table): Remove op_cast
700         (pointer_table::pointer_table): Remove op_cast.
702 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
704         * range-op-float.cc (operator_cst::fold_range): New.
705         * range-op-mixed.h (class operator_cst): Move from integer file.
706         * range-op.cc (op_cst): New object.
707         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
708         (class operator_cst): Move to range-op-mixed.h.
709         (integral_table::integral_table): Remove op_cst.
710         (pointer_table::pointer_table): Remove op_cst.
712 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
714         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
715         to range-op-mixed.h
716         (operator_identity::fold_range): Rename from foperator_identity.
717         (operator_identity::op1_range): Ditto.
718         (float_table::float_table): Remove fop_identity.
719         * range-op-mixed.h (class operator_identity): Combined from integer
720         and float files.
721         * range-op.cc (op_identity): New object.
722         (unified_table::unified_table): Add op_identity.
723         (class operator_identity): Move to range-op-mixed.h.
724         (integral_table::integral_table): Remove identity.
725         (pointer_table::pointer_table): Remove identity.
727 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
729         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
730         to range-op-mixed.h
731         (operator_ge::fold_range): Rename from foperator_ge.
732         (operator_ge::op1_range): Ditto.
733         (float_table::float_table): Remove GE_EXPR.
734         * range-op-mixed.h (class operator_ge): Combined from integer
735         and float files.
736         * range-op.cc (op_ge): New object.
737         (unified_table::unified_table): Add GE_EXPR.
738         (class operator_ge): Move to range-op-mixed.h.
739         (ge_op1_op2_relation): Fold into
740         operator_ge::op1_op2_relation.
741         (integral_table::integral_table): Remove GE_EXPR.
742         (pointer_table::pointer_table): Remove GE_EXPR.
743         * range-op.h (ge_op1_op2_relation): Delete.
745 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
747         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
748         to range-op-mixed.h
749         (operator_gt::fold_range): Rename from foperator_gt.
750         (operator_gt::op1_range): Ditto.
751         (float_table::float_table): Remove GT_EXPR.
752         * range-op-mixed.h (class operator_gt): Combined from integer
753         and float files.
754         * range-op.cc (op_gt): New object.
755         (unified_table::unified_table): Add GT_EXPR.
756         (class operator_gt): Move to range-op-mixed.h.
757         (gt_op1_op2_relation): Fold into
758         operator_gt::op1_op2_relation.
759         (integral_table::integral_table): Remove GT_EXPR.
760         (pointer_table::pointer_table): Remove GT_EXPR.
761         * range-op.h (gt_op1_op2_relation): Delete.
763 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
765         * range-op-float.cc (foperator_le): Remove.  Move prototypes
766         to range-op-mixed.h
767         (operator_le::fold_range): Rename from foperator_le.
768         (operator_le::op1_range): Ditto.
769         (float_table::float_table): Remove LE_EXPR.
770         * range-op-mixed.h (class operator_le): Combined from integer
771         and float files.
772         * range-op.cc (op_le): New object.
773         (unified_table::unified_table): Add LE_EXPR.
774         (class operator_le): Move to range-op-mixed.h.
775         (le_op1_op2_relation): Fold into
776         operator_le::op1_op2_relation.
777         (integral_table::integral_table): Remove LE_EXPR.
778         (pointer_table::pointer_table): Remove LE_EXPR.
779         * range-op.h (le_op1_op2_relation): Delete.
781 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
783         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
784         to range-op-mixed.h
785         (operator_lt::fold_range): Rename from foperator_lt.
786         (operator_lt::op1_range): Ditto.
787         (float_table::float_table): Remove LT_EXPR.
788         * range-op-mixed.h (class operator_lt): Combined from integer
789         and float files.
790         * range-op.cc (op_lt): New object.
791         (unified_table::unified_table): Add LT_EXPR.
792         (class operator_lt): Move to range-op-mixed.h.
793         (lt_op1_op2_relation): Fold into
794         operator_lt::op1_op2_relation.
795         (integral_table::integral_table): Remove LT_EXPR.
796         (pointer_table::pointer_table): Remove LT_EXPR.
797         * range-op.h (lt_op1_op2_relation): Delete.
799 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
801         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
802         to range-op-mixed.h
803         (operator_equal::fold_range): Rename from foperator_not_equal.
804         (operator_equal::op1_range): Ditto.
805         (float_table::float_table): Remove NE_EXPR.
806         * range-op-mixed.h (class operator_not_equal): Combined from integer
807         and float files.
808         * range-op.cc (op_equal): New object.
809         (unified_table::unified_table): Add NE_EXPR.
810         (class operator_not_equal): Move to range-op-mixed.h.
811         (not_equal_op1_op2_relation): Fold into
812         operator_not_equal::op1_op2_relation.
813         (integral_table::integral_table): Remove NE_EXPR.
814         (pointer_table::pointer_table): Remove NE_EXPR.
815         * range-op.h (not_equal_op1_op2_relation): Delete.
817 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
819         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
820         to range-op-mixed.h
821         (operator_equal::fold_range): Rename from foperator_equal.
822         (operator_equal::op1_range): Ditto.
823         (float_table::float_table): Remove EQ_EXPR.
824         * range-op-mixed.h (class operator_equal): Combined from integer
825         and float files.
826         * range-op.cc (op_equal): New object.
827         (unified_table::unified_table): Add EQ_EXPR.
828         (class operator_equal): Move to range-op-mixed.h.
829         (equal_op1_op2_relation): Fold into
830         operator_equal::op1_op2_relation.
831         (integral_table::integral_table): Remove EQ_EXPR.
832         (pointer_table::pointer_table): Remove EQ_EXPR.
833         * range-op.h (equal_op1_op2_relation): Delete.
835 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
837         * range-op-float.cc (class float_table): Move to header.
838         (float_table::float_table): Move float only operators to...
839         (range_op_table::initialize_float_ops): Here.
840         * range-op-mixed.h: New.
841         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
842         to top of file.
843         (float_tree_table): Moved from range-op-float.cc.
844         (unified_tree_table): New.
845         (unified_table::unified_table): New.  Call initialize routines.
846         (get_op_handler): Check unified table first.
847         (range_op_handler::range_op_handler): Handle no type constructor.
848         (integral_table::integral_table): Move integral only operators to...
849         (range_op_table::initialize_integral_ops): Here.
850         (pointer_table::pointer_table): Move pointer only operators to...
851         (range_op_table::initialize_pointer_ops): Here.
852         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
853         (get_bool_state): Ditto.
854         (empty_range_varying): Ditto.
855         (relop_early_resolve): Ditto.
856         (class range_op_table): Add new init methods for range types.
857         (class integral_table): Move declaration to here.
858         (class pointer_table): Move declaration to here.
859         (class float_table): Move declaration to here.
861 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
862             Richard Sandiford <richard.sandiford@arm.com>
863             Richard Biener  <rguenther@suse.de>
865         * doc/md.texi: Add SELECT_VL support.
866         * internal-fn.def (SELECT_VL): Ditto.
867         * optabs.def (OPTAB_D): Ditto.
868         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
869         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
870         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
871         (vectorizable_store): Ditto.
872         (vectorizable_load): Ditto.
873         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
875 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
877         PR ipa/109886
878         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
879         type as well.
881 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
883         * range-op.cc (range_cast): Move to...
884         * range-op.h (range_cast): Here and add generic a version.
886 2023-06-09  Marek Polacek  <polacek@redhat.com>
888         PR c/39589
889         PR c++/96868
890         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
891         warn about designated initializers in C only.
893 2023-06-09  Andrew Pinski  <apinski@marvell.com>
895         PR tree-optimization/97711
896         PR tree-optimization/110155
897         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
898         ((zero_one != 0) ? z <op> y : y): Likewise.
900 2023-06-09  Andrew Pinski  <apinski@marvell.com>
902         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
903         multiply rather than negation/bit_and.
905 2023-06-09  Andrew Pinski  <apinski@marvell.com>
907         * match.pd (`X & -Y -> X * Y`): Allow for truncation
908         and the same type for unsigned types.
910 2023-06-09  Andrew Pinski  <apinski@marvell.com>
912         PR tree-optimization/110165
913         PR tree-optimization/110166
914         * match.pd (zero_one_valued_p): Don't accept
915         signed 1-bit integers.
917 2023-06-09  Richard Biener  <rguenther@suse.de>
919         * match.pd (two conversions in a row): Use element_precision
920         to DTRT for VECTOR_TYPE.
922 2023-06-09  Pan Li  <pan2.li@intel.com>
924         * config/riscv/riscv.md (enabled): Move to another place, and
925         add fp_vector_disabled to the cond.
926         (fp_vector_disabled): New attr defined for disabling fp.
927         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
929 2023-06-09  Pan Li  <pan2.li@intel.com>
931         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
932         literal to int.
934 2023-06-09  liuhongt  <hongtao.liu@intel.com>
936         PR target/110108
937         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
938         view_convert_expr mask to signed type when folding pblendvb
939         builtins.
941 2023-06-09  liuhongt  <hongtao.liu@intel.com>
943         PR target/110108
944         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
945         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
946         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
947         TARGET_64BIT.
948         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
949         real codename for __builtin_ia32_pabs{b,w,d}.
951 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
953         * gimple-range-op.cc
954         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
955         (gimple_range_op_handler::maybe_builtin_call): Adjust.
956         * gimple-range-op.h (operand1, operand2): Use m_operator.
957         * range-op.cc (integral_table, pointer_table): Relocate.
958         (get_op_handler): Rename from get_handler and handle all types.
959         (range_op_handler::range_op_handler): Relocate.
960         (range_op_handler::set_op_handler): Relocate and adjust.
961         (range_op_handler::range_op_handler): Relocate.
962         (dispatch_trio): New.
963         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
964         (range_op_handler::dispatch_kind): New.
965         (range_op_handler::fold_range): Relocate and Use new dispatch value.
966         (range_op_handler::op1_range): Ditto.
967         (range_op_handler::op2_range): Ditto.
968         (range_op_handler::lhs_op1_relation): Ditto.
969         (range_op_handler::lhs_op2_relation): Ditto.
970         (range_op_handler::op1_op2_relation): Ditto.
971         (range_op_handler::set_op_handler): Use m_operator member.
972         * range-op.h (range_op_handler::operator bool): Use m_operator.
973         (range_op_handler::dispatch_kind): New.
974         (range_op_handler::m_valid): Delete.
975         (range_op_handler::m_int): Delete
976         (range_op_handler::m_float): Delete
977         (range_op_handler::m_operator): New.
978         (range_op_table::operator[]): Relocate from .cc file.
979         (range_op_table::set): Ditto.
980         * value-range.h (class vrange): Make range_op_handler a friend.
982 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
984         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
985         (cfn_pass_through_arg1): Adjust using statemenmt.
986         (cfn_signbit): Change base class, adjust using statement.
987         (cfn_copysign): Ditto.
988         (cfn_sqrt): Ditto.
989         (cfn_sincos): Ditto.
990         * range-op-float.cc (fold_range): Change class to range_operator.
991         (rv_fold): Ditto.
992         (op1_range): Ditto
993         (op2_range): Ditto
994         (lhs_op1_relation): Ditto.
995         (lhs_op2_relation): Ditto.
996         (op1_op2_relation): Ditto.
997         (foperator_*): Ditto.
998         (class float_table): New.  Inherit from range_op_table.
999         (floating_tree_table) Change to range_op_table pointer.
1000         (class floating_op_table): Delete.
1001         * range-op.cc (operator_equal): Adjust using statement.
1002         (operator_not_equal): Ditto.
1003         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
1004         (operator_minus, operator_cast): Ditto.
1005         (operator_bitwise_and, pointer_plus_operator): Ditto.
1006         (get_float_handle): Change return type.
1007         * range-op.h (range_operator_float): Delete.  Relocate all methods
1008         into class range_operator.
1009         (range_op_handler::m_float): Change type to range_operator.
1010         (floating_op_table): Delete.
1011         (floating_tree_table): Change type.
1013 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
1015         * range-op.cc (range_operator::fold_range): Call virtual routine.
1016         (range_operator::update_bitmask): New.
1017         (operator_equal::update_bitmask): New.
1018         (operator_not_equal::update_bitmask): New.
1019         (operator_lt::update_bitmask): New.
1020         (operator_le::update_bitmask): New.
1021         (operator_gt::update_bitmask): New.
1022         (operator_ge::update_bitmask): New.
1023         (operator_ge::update_bitmask): New.
1024         (operator_plus::update_bitmask): New.
1025         (operator_minus::update_bitmask): New.
1026         (operator_pointer_diff::update_bitmask): New.
1027         (operator_min::update_bitmask): New.
1028         (operator_max::update_bitmask): New.
1029         (operator_mult::update_bitmask): New.
1030         (operator_div:operator_div):New.
1031         (operator_div::update_bitmask): New.
1032         (operator_div::m_code): New member.
1033         (operator_exact_divide::operator_exact_divide): New constructor.
1034         (operator_lshift::update_bitmask): New.
1035         (operator_rshift::update_bitmask): New.
1036         (operator_bitwise_and::update_bitmask): New.
1037         (operator_bitwise_or::update_bitmask): New.
1038         (operator_bitwise_xor::update_bitmask): New.
1039         (operator_trunc_mod::update_bitmask): New.
1040         (op_ident, op_unknown, op_ptr_min_max): New.
1041         (op_nop, op_convert): Delete.
1042         (op_ssa, op_paren, op_obj_type): Delete.
1043         (op_realpart, op_imagpart): Delete.
1044         (op_ptr_min, op_ptr_max): Delete.
1045         (pointer_plus_operator:update_bitmask): New.
1046         (range_op_table::set): Do not use m_code.
1047         (integral_table::integral_table): Adjust to single instances.
1048         * range-op.h (range_operator::range_operator): Delete.
1049         (range_operator::m_code): Delete.
1050         (range_operator::update_bitmask): New.
1052 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
1054         * range-op-float.cc (range_operator_float::fold_range): Return
1055         NAN of the result type.
1057 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
1059         * optabs.cc (expand_ffs): Add forward declaration.
1060         (expand_doubleword_clz): Rename to ...
1061         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
1062         handle also doubleword CTZ and FFS in addition to CLZ.
1063         (expand_unop): Adjust caller.  Also call it for doubleword
1064         ctz_optab and ffs_optab.
1066 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
1068         PR target/110152
1069         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
1070         n_words == 2 recurse with mmx_ok as first argument rather than false.
1072 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
1074         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
1075         avoid sign extension/undefined behaviour when setting each bit.
1077 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
1078             Uros Bizjak  <ubizjak@gmail.com>
1080         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
1081         Use new x86_stc instruction when the carry flag must be set.
1082         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
1083         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
1084         * config/i386/i386.h (TARGET_SLOW_STC): New define.
1085         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
1086         (x86_stc): New define_insn.
1087         (define_peephole2): Convert x86_stc into alternate implementation
1088         on pentium4 without -Os when a QImode register is available.
1089         (*x86_cmc): New define_insn.
1090         (define_peephole2): Convert *x86_cmc into alternate implementation
1091         on pentium4 without -Os when a QImode register is available.
1092         (*setccc): New define_insn_and_split for a no-op CCCmode move.
1093         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
1094         recognize (and eliminate) the carry flag being copied to itself.
1095         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
1096         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
1098 2023-06-07  Andrew Pinski  <apinski@marvell.com>
1100         * match.pd: Fix comment for the
1101         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
1103 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
1104             Jeff Law   <jlaw@ventanamicro.com>
1106         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
1107         (rotrsi3_sext): Expose generator.
1108         (rotlsi3 pattern): Hide generator.
1109         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
1110         declaration.
1111         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
1112         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
1113         (mulsi3, <optab>si3): Likewise.
1114         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
1115         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
1116         (<u>mulsidi3): Likewise.
1117         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
1118         (mulsi3_extended, <optab>si3_extended): Likewise.
1119         (splitter for shadd feeding divison): Update RTL pattern to account
1120         for changes in how 32 bit ops are expanded for TARGET_64BIT.
1121         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
1123 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
1125         PR target/109725
1126         * config/riscv/riscv.cc (riscv_print_operand): Calculate
1127         memmodel only when it is valid.
1129 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
1131         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
1132         for constant element of a vector.
1134 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
1136         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
1137         instead compare tree_nonzero_bits <= 1U rather than just == 1.
1139 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
1141         PR target/110132
1142         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
1143         New. Use it ...
1144         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
1145         names for builtins.
1146         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
1147         setup if in_lto_p, just like we do for SVE.
1148         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
1149         (__arm_st64b): Delete.
1150         (__arm_st64bv): Delete.
1151         (__arm_st64bv0): Delete.
1153 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
1155         PR target/110100
1156         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
1157         Use input operand for the destination address.
1158         * config/aarch64/aarch64.md (st64b): Fix constraint on address
1159         operand.
1161 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
1163         PR target/110100
1164         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
1165         Replace eight consecutive spaces with tabs.
1166         (aarch64_init_ls64_builtins): Likewise.
1167         (aarch64_expand_builtin_ls64): Likewise.
1168         * config/aarch64/aarch64.md (ld64b): Likewise.
1169         (st64b): Likewise.
1170         (st64bv): Likewise
1171         (st64bv0): Likewise.
1173 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
1175         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
1176         offset table pseudo to a general reg subset.
1178 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1180         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
1181         Rename to...
1182         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
1183         with RTL codes.
1184         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
1185         (aarch64_sqxtun2<mode>_le): Likewise.
1186         (aarch64_sqxtun2<mode>_be): Likewise.
1187         (aarch64_sqxtun2<mode>): Adjust for the above.
1188         (aarch64_sqmovun<mode>): New define_expand.
1189         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
1190         (half_mask): New mode attribute.
1191         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
1192         New predicate.
1194 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1196         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
1197         Reimplement as...
1198         (aarch64_addp<mode>_insn): ... This...
1199         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
1200         (aarch64_addp<mode>): New define_expand.
1202 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1204         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
1205         * config/riscv/riscv-v.cc
1206         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
1207         handling.
1208         (rvv_builder::single_step_npatterns_p): New function.
1209         (rvv_builder::npatterns_all_equal_p): Ditto.
1210         (const_vec_all_in_range_p): Support POLY handling.
1211         (gen_const_vector_dup): Ditto.
1212         (emit_vlmax_gather_insn): Add vrgatherei16.
1213         (emit_vlmax_masked_gather_mu_insn): Ditto.
1214         (expand_const_vector): Add VLA SLP const vector support.
1215         (expand_vec_perm): Support POLY.
1216         (struct expand_vec_perm_d): New struct.
1217         (shuffle_generic_patterns): New function.
1218         (expand_vec_perm_const_1): Ditto.
1219         (expand_vec_perm_const): Ditto.
1220         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
1221         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
1223 2023-06-07  Andrew Pinski  <apinski@marvell.com>
1225         PR middle-end/110117
1226         * expr.cc (expand_single_bit_test): Handle
1227         const_int from expand_expr.
1229 2023-06-07  Andrew Pinski  <apinski@marvell.com>
1231         * expr.cc (do_store_flag): Rearrange the
1232         TER code so that it overrides the nonzero bits
1233         info if we had `a & POW2`.
1235 2023-06-07  Andrew Pinski  <apinski@marvell.com>
1237         PR tree-optimization/110134
1238         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
1239         types.
1240         (-A CMP CST -> B CMP (-CST)): Likewise.
1242 2023-06-07  Andrew Pinski  <apinski@marvell.com>
1244         PR tree-optimization/89263
1245         PR tree-optimization/99069
1246         PR tree-optimization/20083
1247         PR tree-optimization/94898
1248         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
1249         one of the operands are constant.
1251 2023-06-07  Andrew Pinski  <apinski@marvell.com>
1253         * match.pd (zero_one_valued_p): Match 0 integer constant
1254         too.
1256 2023-06-07  Pan Li  <pan2.li@intel.com>
1258         * config/riscv/riscv-vector-builtins-types.def
1259         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
1260         (vfloat32m1_t): Ditto.
1261         (vfloat32m2_t): Ditto.
1262         (vfloat32m4_t): Ditto.
1263         (vfloat32m8_t): Ditto.
1264         (vint16mf4_t): Ditto.
1265         (vint16mf2_t): Ditto.
1266         (vint16m1_t): Ditto.
1267         (vint16m2_t): Ditto.
1268         (vint16m4_t): Ditto.
1269         (vint16m8_t): Ditto.
1270         (vuint16mf4_t): Ditto.
1271         (vuint16mf2_t): Ditto.
1272         (vuint16m1_t): Ditto.
1273         (vuint16m2_t): Ditto.
1274         (vuint16m4_t): Ditto.
1275         (vuint16m8_t): Ditto.
1276         (vint32mf2_t): Ditto.
1277         (vint32m1_t): Ditto.
1278         (vint32m2_t): Ditto.
1279         (vint32m4_t): Ditto.
1280         (vint32m8_t): Ditto.
1281         (vuint32mf2_t): Ditto.
1282         (vuint32m1_t): Ditto.
1283         (vuint32m2_t): Ditto.
1284         (vuint32m4_t): Ditto.
1285         (vuint32m8_t): Ditto.
1287 2023-06-07  Jason Merrill  <jason@redhat.com>
1289         PR c++/58487
1290         * doc/invoke.texi: Document it.
1292 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
1294         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
1295         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
1296         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
1297         NOT (BITREVERSE x) as BITREVERSE (NOT x).
1298         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
1299         Optimize PARITY (BITREVERSE x) as PARITY x.
1300         Optimize BITREVERSE (BITREVERSE x) as x.
1301         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
1302         BITREVERSE of a constant integer at compile-time.
1303         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
1304         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
1305         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
1306         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
1307         Optimize COPYSIGN (x, ABS y) as ABS x.
1308         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
1309         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
1310         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
1311         arguments at compile-time.
1313 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
1315         * rtl.h (function_invariant_p): Change return type from int to bool.
1316         * reload1.cc (function_invariant_p): Change return type from
1317         int to bool and adjust function body accordingly.
1319 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1321         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
1322         (*single_<optab>mult_plus<mode>): Ditto.
1323         (*double_<optab>mult_plus<mode>): Ditto.
1324         (*sign_zero_extend_fma): Ditto.
1325         (*zero_sign_extend_fma): Ditto.
1326         * config/riscv/riscv-protos.h (enum insn_type): New enum.
1328 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
1329             Tobias Burnus  <tobias@codesourcery.com>
1331         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
1332         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
1333         set.
1334         (omp_get_attachment): Handle map clauses with 'present' modifier.
1335         (omp_group_base): Likewise.
1336         (gimplify_scan_omp_clauses): Reorder present maps to come first.
1337         Set GOVD flags for present defaultmaps.
1338         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
1339         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
1340         clauses.
1341         (lower_omp_target): Handle map clauses with 'present' modifier.
1342         Handle 'to' and 'from' clauses with 'present'.
1343         * tree-core.h (enum omp_clause_defaultmap_kind): Add
1344         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
1345         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
1346         'from' clauses with 'present' modifier.  Handle present defaultmap.
1347         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
1349 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
1351         * config/rs6000/genfusion.pl: Delete some dead code.
1353 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
1355         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
1356         split out from...
1357         (gen_ld_cmpi_p10): ... this.
1359 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
1361         PR target/106907
1362         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
1363         duplicate expression.
1365 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1367         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
1368         Handle unsigned reduc_plus_scal_ builtins.
1369         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
1370         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
1371         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
1372         __builtin_aarch64_reduc_plus_scal_v2di.
1373         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
1375 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1377         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
1378         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
1379         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
1381 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1383         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
1384         (aarch64_shrn<mode>_insn_be): Delete.
1385         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
1386         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
1387         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
1388         (aarch64_rshrn<mode>_insn_le): Delete.
1389         (aarch64_rshrn<mode>_insn_be): Delete.
1390         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
1391         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
1393 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1395         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
1396         Define prototype.
1397         (aarch64_pars_overlap_p): Likewise.
1398         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
1399         Express in terms of UNSPEC_ADDV.
1400         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
1401         (*aarch64_<su>addlv<mode>_reduction): Define.
1402         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
1403         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
1404         (aarch64_pars_overlap_p): Likewise.
1405         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
1406         (VQUADW): New mode attribute.
1407         (VWIDE2X_S): Likewise.
1408         (USADDLV): Delete.
1409         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
1410         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
1412 2023-06-06  Richard Biener  <rguenther@suse.de>
1414         PR middle-end/110055
1415         * gimplify.cc (gimplify_target_expr): Do not emit
1416         CLOBBERs for variables which have static storage duration
1417         after gimplifying their initializers.
1419 2023-06-06  Richard Biener  <rguenther@suse.de>
1421         PR tree-optimization/109143
1422         * tree-ssa-structalias.cc (solution_set_expand): Avoid
1423         one bitmap iteration and optimize bit range setting.
1425 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
1427         PR bootstrap/110120
1428         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
1429         XVECEXP, not XEXP, to access first item of a PARALLEL.
1431 2023-06-06  Pan Li  <pan2.li@intel.com>
1433         * config/riscv/riscv-vector-builtins-types.def
1434         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
1435         (vfloat16mf2_t): Likewise.
1436         (vfloat16m1_t): Likewise.
1437         (vfloat16m2_t): Likewise.
1438         (vfloat16m4_t): Likewise.
1439         (vfloat16m8_t): Likewise.
1440         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
1441         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
1443 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
1445         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
1446         for cfi reg/mem machmode
1447         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
1449 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
1451         * config/riscv/vector-iterators.md:
1452         Fix 'REQUIREMENT' for machine_mode 'MODE'.
1453         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
1454         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
1455         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
1457 2023-06-06  Pan Li  <pan2.li@intel.com>
1459         * config/riscv/vector-iterators.md: Fix typo in mode attr.
1461 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1462             Joel Hutton  <joel.hutton@arm.com>
1464         * doc/generic.texi: Remove old tree codes.
1465         * expr.cc (expand_expr_real_2): Remove old tree code cases.
1466         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
1467         * optabs-tree.cc (optab_for_tree_code): Likewise.
1468         (supportable_half_widening_operation): Likewise.
1469         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
1470         * tree-inline.cc (estimate_operator_cost): Likewise.
1471         (op_symbol_code): Likewise.
1472         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
1473         (vect_analyze_data_ref_accesses): Likewise.
1474         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
1475         * cfgexpand.cc (expand_debug_expr): Likewise.
1476         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
1477         (supportable_widening_operation): Likewise.
1478         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
1479         Likewise.
1480         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
1481         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
1482         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
1483         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
1484         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
1485         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
1486         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
1487         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
1489 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1490             Joel Hutton  <joel.hutton@arm.com>
1491             Tamar Christina  <tamar.christina@arm.com>
1493         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
1494         this ...
1495         (vec_widen_<su>add_lo_<mode>): ... to this.
1496         (vec_widen_<su>addl_hi_<mode>): Rename this ...
1497         (vec_widen_<su>add_hi_<mode>): ... to this.
1498         (vec_widen_<su>subl_lo_<mode>): Rename this ...
1499         (vec_widen_<su>sub_lo_<mode>): ... to this.
1500         (vec_widen_<su>subl_hi_<mode>): Rename this ...
1501         (vec_widen_<su>sub_hi_<mode>): ...to this.
1502         * doc/generic.texi: Document new IFN codes.
1503         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
1504         (commutative_binary_fn_p): Add widen_plus fn's.
1505         (widening_fn_p): New function.
1506         (narrowing_fn_p): New function.
1507         (direct_internal_fn_optab): Change visibility.
1508         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
1509         internal_fn that expands into multiple internal_fns for widening.
1510         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
1511         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
1512         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
1513         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
1514         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
1515         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
1516         (lookup_hilo_internal_fn): Likewise.
1517         (widening_fn_p): Likewise.
1518         (Narrowing_fn_p): Likewise.
1519         * optabs.cc (commutative_optab_p): Add widening plus optabs.
1520         * optabs.def (OPTAB_D): Define widen add, sub optabs.
1521         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
1522         patterns with a hi/lo or even/odd split.
1523         (vect_recog_sad_pattern): Refactor to use new IFN codes.
1524         (vect_recog_widen_plus_pattern): Likewise.
1525         (vect_recog_widen_minus_pattern): Likewise.
1526         (vect_recog_average_pattern): Likewise.
1527         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
1528         _HILO IFNs.
1529         (supportable_widening_operation): Likewise.
1530         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
1532 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1533             Joel Hutton  <joel.hutton@arm.com>
1535         * tree-vect-patterns.cc: Add include for gimple-iterator.
1536         (vect_recog_widen_op_pattern): Refactor to use code_helper.
1537         (vect_gimple_build): New function.
1538         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
1539         code_helper.
1540         (vectorizable_call): Likewise.
1541         (vect_gen_widened_results_half): Likewise.
1542         (vect_create_vectorized_demotion_stmts): Likewise.
1543         (vect_create_vectorized_promotion_stmts): Likewise.
1544         (vect_create_half_widening_stmts): Likewise.
1545         (vectorizable_conversion): Likewise.
1546         (supportable_widening_operation): Likewise.
1547         (supportable_narrowing_operation): Likewise.
1548         * tree-vectorizer.h (supportable_widening_operation): Change
1549         prototype to use code_helper.
1550         (supportable_narrowing_operation): Likewise.
1551         (vect_gimple_build): New function prototype.
1552         * tree.h (code_helper::safe_as_tree_code): New function.
1553         (code_helper::safe_as_fn_code): New function.
1555 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
1557         * wide-int.cc (wi::bitreverse_large): New function implementing
1558         bit reversal of an integer.
1559         * wide-int.h (wi::bitreverse): New (template) function prototype.
1560         (bitreverse_large): Prototype helper function/implementation.
1561         (wi::bitreverse): New template wrapper around bitreverse_large.
1563 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
1565         * rtl.h (print_rtl_single): Change return type from int to void.
1566         (print_rtl_single_with_indent): Ditto.
1567         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
1568         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
1569         (rtx_writer::print_rtx_operand_code_0): Ditto.
1570         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
1571         (rtx_writer::print_rtx_operand_code_i): Ditto.
1572         (rtx_writer::print_rtx_operand_code_u): Ditto.
1573         (rtx_writer::print_rtx_operand): Ditto.
1574         (rtx_writer::print_rtx): Ditto.
1575         (rtx_writer::finish_directive): Ditto.
1576         (print_rtl_single): Change return type from int to void
1577         and adjust function body accordingly.
1578         (rtx_writer::print_rtl_single_with_indent): Ditto.
1580 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
1582         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
1583         (reg_class_subset_p): Ditto.
1584         * reginfo.cc (reg_classes_intersect_p): Ditto.
1585         (reg_class_subset_p): Ditto.
1587 2023-06-05  Pan Li  <pan2.li@intel.com>
1589         * config/riscv/riscv-vector-builtins-types.def
1590         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
1591         (vfloat32m1_t): Ditto.
1592         (vfloat32m2_t): Ditto.
1593         (vfloat32m4_t): Ditto.
1594         (vfloat32m8_t): Ditto.
1595         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
1596         (vint16mf2_t): Ditto.
1597         (vint16m1_t): Ditto.
1598         (vint16m2_t): Ditto.
1599         (vint16m4_t): Ditto.
1600         (vint16m8_t): Ditto.
1601         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
1602         (vuint16mf2_t): Ditto.
1603         (vuint16m1_t): Ditto.
1604         (vuint16m2_t): Ditto.
1605         (vuint16m4_t): Ditto.
1606         (vuint16m8_t): Ditto.
1607         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
1608         (vint32m1_t): Ditto.
1609         (vint32m2_t): Ditto.
1610         (vint32m4_t): Ditto.
1611         (vint32m8_t): Ditto.
1612         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
1613         (vuint32m1_t): Ditto.
1614         (vuint32m2_t): Ditto.
1615         (vuint32m4_t): Ditto.
1616         (vuint32m8_t): Ditto.
1617         * config/riscv/vector-iterators.md: Add FP=16 support for V,
1618         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
1620 2023-06-05  Andrew Pinski  <apinski@marvell.com>
1622         PR bootstrap/110085
1623         * Makefile.in (clean): Remove the removing of
1624         MULTILIB_DIR/MULTILIB_OPTIONS directories.
1626 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
1628         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
1629         prototype.
1630         * config/mips/mips.cc (speculation_barrier_libfunc): New static
1631         variable.
1632         (mips_init_libfuncs): Initialize it.
1633         (mips_emit_speculation_barrier): New function.
1634         * config/mips/mips.md (speculation_barrier): Call
1635         mips_emit_speculation_barrier.
1637 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1639         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
1640         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
1641         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
1642         (rvv_builder::get_merged_repeating_sequence): Ditto.
1643         (rvv_builder::get_merge_scalar_mask): Ditto.
1644         (emit_scalar_move_insn): Ditto.
1645         (emit_vlmax_integer_move_insn): Ditto.
1646         (emit_nonvlmax_integer_move_insn): Ditto.
1647         (emit_vlmax_gather_insn): Ditto.
1648         (emit_vlmax_masked_gather_mu_insn): Ditto.
1649         (get_repeating_sequence_dup_machine_mode): Ditto.
1651 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1653         * config/riscv/autovec.md: Split arguments.
1654         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
1655         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
1657 2023-06-04  Andrew Pinski  <apinski@marvell.com>
1659         * expr.cc (do_store_flag): Improve for single bit testing
1660         not against zero but against that single bit.
1662 2023-06-04  Andrew Pinski  <apinski@marvell.com>
1664         * expr.cc (do_store_flag): Extend the one bit checking case
1665         to handle the case where we don't have an and but rather still
1666         one bit is known to be non-zero.
1668 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
1670         * config/h8300/constraints.md (Zz): Make this a normal
1671         constraint.
1672         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
1673         * config/h8300/logical.md (H8/SX bit patterns): Remove.
1675 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
1677         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
1678         New insn_and_split patterns.
1680 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1682         PR target/110109
1683         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
1684         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
1685         (@vlmul_extx4<mode>): Ditto.
1686         (@vlmul_extx8<mode>): Ditto.
1687         (@vlmul_extx16<mode>): Ditto.
1688         (@vlmul_extx32<mode>): Ditto.
1689         (@vlmul_extx64<mode>): Ditto.
1690         (*vlmul_extx2<mode>): Ditto.
1691         (*vlmul_extx4<mode>): Ditto.
1692         (*vlmul_extx8<mode>): Ditto.
1693         (*vlmul_extx16<mode>): Ditto.
1694         (*vlmul_extx32<mode>): Ditto.
1695         (*vlmul_extx64<mode>): Ditto.
1697 2023-06-04  Pan Li  <pan2.li@intel.com>
1699         * config/riscv/riscv-vector-builtins-types.def
1700         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
1701         (vfloat32m1_t): Likewise.
1702         (vfloat32m2_t): Likewise.
1703         (vfloat32m4_t): Likewise.
1704         (vfloat32m8_t): Likewise.
1705         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
1706         * config/riscv/vector-iterators.md: Add single to half machine
1707         mode conversion.
1709 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1711         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
1712         (*n<optab><mode>): Ditto.
1713         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
1714         (*n<optab><mode>): Ditto.
1715         * config/riscv/vector.md: Ditto.
1717 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
1719         PR target/110083
1720         * config/i386/i386-features.cc (scalar_chain::convert_compare):
1721         Update or delete REG_EQUAL notes, converting CONST_INT and
1722         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
1724 2023-06-04  Jason Merrill  <jason@redhat.com>
1726         PR c++/97720
1727         * tree-eh.cc (lower_resx): Pass the exception pointer to the
1728         failure_decl.
1729         * except.h: Tweak comment.
1731 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
1733         * postreload.cc (move2add_use_add2_insn): Handle
1734         trivial single_sets.  Rename variable PAT to SET.
1735         (move2add_use_add3_insn, reload_cse_move2add): Similar.
1737 2023-06-04  Pan Li  <pan2.li@intel.com>
1739         * config/riscv/riscv-vector-builtins-types.def
1740         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
1741         (vfloat16mf2_t): Likewise.
1742         (vfloat16m1_t): Likewise.
1743         (vfloat16m2_t): Likewise.
1744         (vfloat16m4_t): Likewise.
1745         (vfloat16m8_t): Likewise.
1746         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
1747         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
1748         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
1749         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
1750         vlmul and ratio.
1752 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
1754         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
1755         correct offset.
1757 2023-06-03  Die Li  <lidie@eswincomputing.com>
1759         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
1761 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1763         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
1765 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1767         * config/riscv/vector.md: Add vector-opt.md.
1768         * config/riscv/autovec-opt.md: New file.
1770 2023-06-03  liuhongt  <hongtao.liu@intel.com>
1772         PR tree-optimization/110067
1773         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
1774         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
1776 2023-06-03  liuhongt  <hongtao.liu@intel.com>
1778         PR target/92658
1779         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
1780         (truncv2si<mode>2): Ditto.
1782 2023-06-02  Andrew Pinski  <apinski@marvell.com>
1784         PR rtl-optimization/102733
1785         * dse.cc (store_info): Add addrspace field.
1786         (record_store): Record the address space
1787         and check to make sure they are the same.
1789 2023-06-02  Andrew Pinski  <apinski@marvell.com>
1791         PR rtl-optimization/110042
1792         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
1793         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
1795 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
1797         PR target/110044
1798         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
1799         Make sure that we do not have a cap on field alignment before altering
1800         the struct layout based on the type alignment of the first entry.
1802 2023-06-02  David Faust  <david.faust@oracle.com>
1804         PR debug/110073
1805         * btfout.cc (btf_absolute_func_id): New function.
1806         (btf_asm_func_type): Call it here.  Change index parameter from
1807         size_t to ctf_id_t.  Use PRIu64 formatter.
1809 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
1811         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
1812         (btf_asm_datasec_type): Likewise.
1814 2023-06-02  Carl Love  <cel@us.ibm.com>
1816         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
1817         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
1819 2023-06-02  Jason Merrill  <jason@redhat.com>
1821         PR c++/110070
1822         PR c++/105838
1823         * tree.h (DECL_MERGEABLE): New.
1824         * tree-core.h (struct tree_decl_common): Mention it.
1825         * gimplify.cc (gimplify_init_constructor): Check it.
1826         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
1827         * varasm.cc (categorize_decl_for_section): Likewise.
1829 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
1831         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
1832         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
1833         (stack_regs_mentioned_p): Change return type from int to bool
1834         and adjust function body accordingly.
1835         (stack_regs_mentioned): Ditto.
1836         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
1837         variable to bool.
1838         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
1839         (swap_rtx_condition_1): Change return type from int to bool
1840         and adjust function body accordingly.  Change "r" variable to bool.
1841         (swap_rtx_condition): Change return type from int to bool
1842         and adjust function body accordingly.
1843         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
1844         (subst_stack_regs): Ditto.
1845         (convert_regs_entry): Change return type from int to bool and adjust
1846         function body accordingly.  Change "inserted" variable to bool.
1847         (convert_regs_1): Recode handling of control_flow_insn_deleted.
1848         (convert_regs_2): Recode handling of cfg_altered.
1849         (convert_regs): Ditto.  Change "inserted" variable to bool.
1851 2023-06-02  Jason Merrill  <jason@redhat.com>
1853         PR c++/95226
1854         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
1855         (initializer_constant_valid_p_1): Compare float precision.
1857 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
1859         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
1860         semantics.
1862 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1864         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
1865         (vect_set_loop_condition_partial_vectors): Ditto.
1867 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
1869         PR target/110088
1870         * config/avr/avr.md: Add an RTL peephole to optimize operations on
1871         non-LD_REGS after a move from LD_REGS.
1872         (piaop): New code iterator.
1874 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
1876         PR testsuite/66005
1877         * doc/install.texi: Document (optional) Perl usage for parallel
1878         testing of libgomp.
1880 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
1882         PR bootstrap/82856
1883         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
1884         later)".
1886 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1887             KuanLin Chen  <best124612@gmail.com>
1889         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
1890         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
1892 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1894         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
1896 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1898         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
1900 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1902         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
1903         __RISCV_ prefix.
1904         (DEF_RVV_FRM_ENUM): Ditto.
1906 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1908         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
1909         intrinsic API expander
1910         * config/riscv/vector.md
1911         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
1912         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
1913         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
1915 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1917         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
1918         * config/riscv/predicates.md (vector_perm_operand): New predicate.
1919         * config/riscv/riscv-protos.h (enum insn_type): New enum.
1920         (expand_vec_perm): New function.
1921         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
1922         (gen_const_vector_dup): Ditto.
1923         (emit_vlmax_gather_insn): Ditto.
1924         (emit_vlmax_masked_gather_mu_insn): Ditto.
1925         (expand_vec_perm): Ditto.
1927 2023-06-01  Jason Merrill  <jason@redhat.com>
1929         * doc/invoke.texi (-Wpedantic): Improve clarity.
1931 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
1933         * rtl.h (exp_equiv_p): Change return type from int to bool.
1934         * cse.cc (mention_regs): Change return type from int to bool
1935         and adjust function body accordingly.
1936         (exp_equiv_p): Ditto.
1937         (insert_regs): Ditto. Change "modified" function argument to bool
1938         and update usage accordingly.
1939         (record_jump_cond): Remove always zero "reversed_nonequality"
1940         function argument and update usage accordingly.
1941         (fold_rtx): Change "changed" variable to bool.
1942         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
1943         (is_dead_reg): Change return type from int to bool.
1945 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
1947         * config/xtensa/xtensa.md (adddi3, subdi3):
1948         New RTL generation patterns implemented according to the instruc-
1949         tion idioms described in the Xtensa ISA reference manual (p. 600).
1951 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
1952             Uros Bizjak  <ubizjak@gmail.com>
1954         PR target/109973
1955         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
1956         CODE_for_sse4_1_ptestzv2di.
1957         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
1958         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
1959         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
1960         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
1961         when expanding UNSPEC_PTEST to compare against zero.
1962         * config/i386/i386-features.cc (scalar_chain::convert_compare):
1963         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
1964         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
1965         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
1966         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
1967         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
1968         check for suitable matching modes for the UNSPEC_PTEST pattern.
1969         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
1970         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
1971         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
1972         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
1973         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
1974         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
1975         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
1976         current behavior.
1977         (*ptest<mode>_and): Specify CCZ to only perform this optimization
1978         when only the Z flag is required.
1980 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
1982         PR target/109954
1983         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
1985 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1987         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
1988         Add =r,m and =r,m alternatives.
1989         (load_pair<DREG:mode><DREG2:mode>): Likewise.
1990         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
1992 2023-06-01  Pan Li  <pan2.li@intel.com>
1994         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
1995         and zvfh.
1996         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
1997         (main): Disable FP16 tuple.
1998         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
1999         (TARGET_VECTOR_ELEN_FP_16): Ditto.
2000         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
2001         Add FP16.
2002         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
2003         (vfloat16mf2_t): Ditto.
2004         (vfloat16m1_t): Ditto.
2005         (vfloat16m2_t): Ditto.
2006         (vfloat16m4_t): Ditto.
2007         (vfloat16m8_t): Ditto.
2008         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
2009         New macro.
2010         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
2011         machine mode based on TARGET_VECTOR_ELEN_FP_16.
2013 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2015         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
2016         (DEF_RVV_FRM_ENUM): New macro.
2017         (handle_pragma_vector): Add FRM enum
2018         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
2019         (RNE): Ditto.
2020         (RTZ): Ditto.
2021         (RDN): Ditto.
2022         (RUP): Ditto.
2023         (RMM): Ditto.
2025 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
2026             Richard Sandiford  <richard.sandiford@arm.com>
2028         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
2029         Update call to wi::bswap.
2030         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
2031         Update call to wi::bswap.
2032         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
2033         Update calls to wi::bswap.
2034         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
2035         (wi::bswap_large): New function, with revised API.
2036         * wide-int.h (wi::bswap): New (template) function prototype.
2037         (wide_int_storage::bswap): Remove method.
2038         (sext_large, zext_large): Consistent indentation/line wrapping.
2039         (bswap_large): Prototype helper function containing implementation.
2040         (wi::bswap): New template wrapper around bswap_large.
2042 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2044         PR target/99195
2045         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
2046         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
2047         (usdot_prod<vsi2qi>): Rename to...
2048         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
2049         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
2050         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
2051         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
2052         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
2053         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
2054         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
2055         ... This.
2057 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2059         PR target/99195
2060         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
2061         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
2062         (aarch64_sq<r>dmulh_n<mode>): Rename to...
2063         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
2064         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
2065         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
2066         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
2067         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
2068         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
2069         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
2070         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
2071         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
2072         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
2073         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
2075 2023-05-31  David Faust  <david.faust@oracle.com>
2077         * btfout.cc (btf_kind_names): New.
2078         (btf_kind_name): New.
2079         (btf_absolute_var_id): New utility function.
2080         (btf_relative_var_id): Likewise.
2081         (btf_relative_func_id): Likewise.
2082         (btf_absolute_datasec_id): Likewise.
2083         (btf_asm_type_ref): New.
2084         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
2085         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
2086         (btf_asm_varent): Likewise.
2087         (btf_asm_func_arg): Likewise.
2088         (btf_asm_datasec_entry): Likewise.
2089         (btf_asm_datasec_type): Likewise.
2090         (btf_asm_func_type): Likewise. Add index parameter.
2091         (btf_asm_enum_const): Likewise.
2092         (btf_asm_sou_member): Likewise.
2093         (output_btf_vars): Update btf_asm_* call accordingly.
2094         (output_asm_btf_sou_fields): Likewise.
2095         (output_asm_btf_enum_list): Likewise.
2096         (output_asm_btf_func_args_list): Likewise.
2097         (output_asm_btf_vlen_bytes): Likewise.
2098         (output_btf_func_types): Add ctf_container_ref parameter.
2099         Pass it to btf_asm_func_type.
2100         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
2101         (btf_output): Update output_btf_func_types call similarly.
2103 2023-05-31  David Faust  <david.faust@oracle.com>
2105         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
2106         and BTF_KIND_FWD which do not use the size/type field at all.
2108 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
2110         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
2111         (active_insn_p): Ditto.
2112         (in_sequence_p): Ditto.
2113         (unshare_all_rtl): Change return type from int to void.
2114         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
2115         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
2116         and adjust function body accordingly.
2117         (mem_expr_equal_p): Ditto.
2118         (unshare_all_rtl): Change return type from int to void
2119         and adjust function body accordingly.
2120         (verify_rtx_sharing): Remove unneeded return.
2121         (active_insn_p): Change return type from int to bool
2122         and adjust function body accordingly.
2123         (in_sequence_p): Ditto.
2125 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
2127         * rtl.h (true_dependence): Change return type from int to bool.
2128         (canon_true_dependence): Ditto.
2129         (read_dependence): Ditto.
2130         (anti_dependence): Ditto.
2131         (canon_anti_dependence): Ditto.
2132         (output_dependence): Ditto.
2133         (canon_output_dependence): Ditto.
2134         (may_alias_p): Ditto.
2135         * alias.h (alias_sets_conflict_p): Ditto.
2136         (alias_sets_must_conflict_p): Ditto.
2137         (objects_must_conflict_p): Ditto.
2138         (nonoverlapping_memrefs_p): Ditto.
2139         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
2140         (record_set): Ditto.
2141         (base_alias_check): Ditto.
2142         (find_base_value): Ditto.
2143         (mems_in_disjoint_alias_sets_p): Ditto.
2144         (get_alias_set_entry): Ditto.
2145         (decl_for_component_ref): Ditto.
2146         (write_dependence_p): Ditto.
2147         (memory_modified_1): Ditto.
2148         (mems_in_disjoint_alias_set_p): Change return type from int to bool
2149         and adjust function body accordingly.
2150         (alias_sets_conflict_p): Ditto.
2151         (alias_sets_must_conflict_p): Ditto.
2152         (objects_must_conflict_p): Ditto.
2153         (rtx_equal_for_memref_p): Ditto.
2154         (base_alias_check): Ditto.
2155         (read_dependence): Ditto.
2156         (nonoverlapping_memrefs_p): Ditto.
2157         (true_dependence_1): Ditto.
2158         (true_dependence): Ditto.
2159         (canon_true_dependence): Ditto.
2160         (write_dependence_p): Ditto.
2161         (anti_dependence): Ditto.
2162         (canon_anti_dependence): Ditto.
2163         (output_dependence): Ditto.
2164         (canon_output_dependence): Ditto.
2165         (may_alias_p): Ditto.
2166         (init_alias_analysis): Change "changed" variable to bool.
2168 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2170         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
2171         expand into define_insn_and_split.
2173 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2175         * config/riscv/vector.md: Remove FRM.
2177 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2179         * config/riscv/vector.md: Remove FRM.
2181 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2183         * config/riscv/vector.md: Remove FRM.
2185 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
2187         PR target/110039
2188         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
2189         pattern.
2191 2023-05-31  Richard Biener  <rguenther@suse.de>
2193         PR ipa/109983
2194         PR tree-optimization/109143
2195         * tree-ssa-structalias.cc (struct topo_info): Remove.
2196         (init_topo_info): Likewise.
2197         (free_topo_info): Likewise.
2198         (compute_topo_order): Simplify API, put the component
2199         with ESCAPED last so it's processed first.
2200         (topo_visit): Adjust.
2201         (solve_graph): Likewise.
2203 2023-05-31  Richard Biener  <rguenther@suse.de>
2205         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
2206         New.
2207         (add_graph_edge): Count redundant edges we avoid to create.
2208         (dump_sa_stats): Dump them.
2209         (ipa_pta_execute): Do not dump generating constraints when
2210         we are not dumping them.
2212 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2214         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
2215         output template to avoid explicit switch on which_alternative.
2216         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
2217         (and<mode>3): Likewise.
2218         (ior<mode>3): Likewise.
2219         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
2221 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2223         * config/xtensa/predicates.md (xtensa_bit_join_operator):
2224         New predicate.
2225         * config/xtensa/xtensa.md (ior_op): Remove.
2226         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
2227         insn_and_split pattern of the same name to express and capture
2228         the bit-combining operation with both sides swapped.
2229         In addition, replace use of code iterator with new operator
2230         predicate.
2231         (*shlrd_const, *shlrd_per_byte):
2232         Likewise regarding the code iterator.
2234 2023-05-31  Cui, Lili  <lili.cui@intel.com>
2236         PR tree-optimization/110038
2237         * params.opt: Add a limit on tree-reassoc-width.
2238         * tree-ssa-reassoc.cc
2239         (rewrite_expr_tree_parallel): Add width limit.
2241 2023-05-31  Pan Li  <pan2.li@intel.com>
2243         * common/config/riscv/riscv-common.cc:
2244         (riscv_implied_info): Add zvfh item.
2245         (riscv_ext_version_table): Ditto.
2246         (riscv_ext_flag_table): Ditto.
2247         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
2248         (TARGET_ZVFH): Ditto.
2250 2023-05-30  liuhongt  <hongtao.liu@intel.com>
2252         PR tree-optimization/108804
2253         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
2254         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
2255         Add new parameter narrow_src_p.
2256         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
2257         vectorization by truncating to lower precision.
2258         * tree-vectorizer.h (vect_get_range_info): New declare.
2260 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
2262         * lra-int.h (lra_update_sp_offset): Add the prototype.
2263         * lra.cc (setup_sp_offset): Change the return type.  Use
2264         lra_update_sp_offset.
2265         * lra-eliminations.cc (lra_update_sp_offset): New function.
2266         (lra_process_new_insns): Push the current insn to reprocess if the
2267         input reload changes sp offset.
2269 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
2271         PR target/110041
2272         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
2273         Fix misleading identation.
2275 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
2277         * rtl.h (comparison_dominates_p): Change return type from int to bool.
2278         (condjump_p): Ditto.
2279         (any_condjump_p): Ditto.
2280         (any_uncondjump_p): Ditto.
2281         (simplejump_p): Ditto.
2282         (returnjump_p): Ditto.
2283         (eh_returnjump_p): Ditto.
2284         (onlyjump_p): Ditto.
2285         (invert_jump_1): Ditto.
2286         (invert_jump): Ditto.
2287         (rtx_renumbered_equal_p): Ditto.
2288         (redirect_jump_1): Ditto.
2289         (redirect_jump): Ditto.
2290         (condjump_in_parallel_p): Ditto.
2291         * jump.cc (invert_exp_1): Adjust forward declaration.
2292         (comparison_dominates_p): Change return type from int to bool
2293         and adjust function body accordingly.
2294         (simplejump_p): Ditto.
2295         (condjump_p): Ditto.
2296         (condjump_in_parallel_p): Ditto.
2297         (any_uncondjump_p): Ditto.
2298         (any_condjump_p): Ditto.
2299         (returnjump_p): Ditto.
2300         (eh_returnjump_p): Ditto.
2301         (onlyjump_p): Ditto.
2302         (redirect_jump_1): Ditto.
2303         (redirect_jump): Ditto.
2304         (invert_exp_1): Ditto.
2305         (invert_jump_1): Ditto.
2306         (invert_jump): Ditto.
2307         (rtx_renumbered_equal_p): Ditto.
2309 2023-05-30  Andrew Pinski  <apinski@marvell.com>
2311         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
2312         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
2313         Add ne as a possible cmp.
2314         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
2316 2023-05-30  Andrew Pinski  <apinski@marvell.com>
2318         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
2319         pattern.
2321 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
2323         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
2324         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
2325         (and (extend X) C) as (zero_extend (and X C)), to also optimize
2326         modes wider than HOST_WIDE_INT.
2328 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
2330         PR target/107172
2331         * simplify-rtx.cc (simplify_const_relational_operation): Return
2332         early if we have a MODE_CC comparison that isn't a COMPARE against
2333         const0_rtx.
2335 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
2337         * config/riscv/riscv.cc (riscv_const_insns): Allow
2338         const_vec_duplicates.
2340 2023-05-30  liuhongt  <hongtao.liu@intel.com>
2342         PR middle-end/108938
2343         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
2344         function, cut from original find_bswap_or_nop function.
2345         (find_bswap_or_nop): Add a new parameter, detect bswap +
2346         rotate and save rotate result in the new parameter.
2347         (bswap_replace): Add a new parameter to indicate rotate and
2348         generate rotate stmt if needed.
2349         (maybe_optimize_vector_constructor): Adjust for new rotate
2350         parameter in the upper 2 functions.
2351         (pass_optimize_bswap::execute): Ditto.
2352         (imm_store_chain_info::output_merged_store): Ditto.
2354 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2356         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
2357         (aarch64_<su>adalp<mode>): New define_expand.
2358         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
2359         (aarch64_<su>addlp<mode>): Convert to define_expand.
2360         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
2361         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
2362         (ADALP): Likewise.
2363         (USADDLP): Likewise.
2364         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
2366 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2368         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
2369         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
2370         srhadd, urhadd builtin codes for standard optab ones.
2371         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
2372         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
2373         unspec.
2374         (<u>avg<mode>3_ceil): Rename to...
2375         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
2376         unspec.
2377         (aarch64_<su>hsub<mode>): New define_expand.
2378         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
2379         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
2380         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
2382 2023-05-30  Andreas Schwab  <schwab@suse.de>
2384         PR target/110036
2385         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
2386         match libsanitizer.
2388 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2390         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
2391         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
2392         Declare prototype.
2393         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
2394         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
2395         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
2396         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
2397         (aarch64_<sra_op>sra_n<mode>): New define_expand.
2398         (aarch64_<sra_op>rsra_n<mode>): Likewise.
2399         (aarch64_<sur>sra_n<mode>): Rename to...
2400         (aarch64_<sur>sra_ndi): ... This.
2401         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
2402         any_target_p argument.
2403         (aarch64_extract_vec_duplicate_wide_int): Define.
2404         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
2405         (aarch64_const_vec_rnd_cst_p): Likewise.
2406         (aarch64_vector_mode_supported_any_target_p): Likewise.
2407         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
2408         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
2409         (VSRA): Adjust for the above.
2410         (sur): Likewise.
2411         (V2XWIDE): New mode_attr.
2412         (vec_or_offset): Likewise.
2413         (SHIFTEXTEND): Likewise.
2414         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
2415         predicate.
2416         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
2417         clarify that it applies to current target options.
2418         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
2419         * doc/tm.texi.in: Regenerate.
2420         * stor-layout.cc (mode_for_vector): Check
2421         vector_mode_supported_any_target_p when iterating through vector modes.
2422         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
2423         clarify that it applies to current target options.
2424         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
2426 2023-05-30  Lili Cui  <lili.cui@intel.com>
2428         PR tree-optimization/98350
2429         * tree-ssa-reassoc.cc
2430         (rewrite_expr_tree_parallel): Rewrite this function.
2431         (rank_ops_for_fma): New.
2432         (reassociate_bb): Handle new function.
2434 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
2436         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
2437         (rtx_unstable_p): Ditto.
2438         (reg_mentioned_p): Ditto.
2439         (reg_referenced_p): Ditto.
2440         (reg_used_between_p): Ditto.
2441         (reg_set_between_p): Ditto.
2442         (modified_between_p): Ditto.
2443         (no_labels_between_p): Ditto.
2444         (modified_in_p): Ditto.
2445         (reg_set_p): Ditto.
2446         (multiple_sets): Ditto.
2447         (set_noop_p): Ditto.
2448         (noop_move_p): Ditto.
2449         (reg_overlap_mentioned_p): Ditto.
2450         (dead_or_set_p): Ditto.
2451         (dead_or_set_regno_p): Ditto.
2452         (find_reg_fusage): Ditto.
2453         (find_regno_fusage): Ditto.
2454         (side_effects_p): Ditto.
2455         (volatile_refs_p): Ditto.
2456         (volatile_insn_p): Ditto.
2457         (may_trap_p_1): Ditto.
2458         (may_trap_p): Ditto.
2459         (may_trap_or_fault_p): Ditto.
2460         (computed_jump_p): Ditto.
2461         (auto_inc_p): Ditto.
2462         (loc_mentioned_in_p): Ditto.
2463         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
2464         (rtx_unstable_p): Change return type from int to bool
2465         and adjust function body accordingly.
2466         (rtx_addr_can_trap_p): Ditto.
2467         (reg_mentioned_p): Ditto.
2468         (no_labels_between_p): Ditto.
2469         (reg_used_between_p): Ditto.
2470         (reg_referenced_p): Ditto.
2471         (reg_set_between_p): Ditto.
2472         (reg_set_p): Ditto.
2473         (modified_between_p): Ditto.
2474         (modified_in_p): Ditto.
2475         (multiple_sets): Ditto.
2476         (set_noop_p): Ditto.
2477         (noop_move_p): Ditto.
2478         (reg_overlap_mentioned_p): Ditto.
2479         (dead_or_set_p): Ditto.
2480         (dead_or_set_regno_p): Ditto.
2481         (find_reg_fusage): Ditto.
2482         (find_regno_fusage): Ditto.
2483         (remove_node_from_insn_list): Ditto.
2484         (volatile_insn_p): Ditto.
2485         (volatile_refs_p): Ditto.
2486         (side_effects_p): Ditto.
2487         (may_trap_p_1): Ditto.
2488         (may_trap_p): Ditto.
2489         (may_trap_or_fault_p): Ditto.
2490         (computed_jump_p): Ditto.
2491         (auto_inc_p): Ditto.
2492         (loc_mentioned_in_p): Ditto.
2493         * combine.cc (can_combine_p): Update indirect function.
2495 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2497         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
2498         * config/riscv/iterators.md: New attribute.
2499         * config/riscv/vector-iterators.md: New attribute.
2501 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2503         * config/riscv/riscv.md: Fix signed and unsigned comparison
2504         warning.
2506 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2508         * config/riscv/autovec.md (fnma<mode>4): New pattern.
2509         (*fnma<mode>): Ditto.
2511 2023-05-29  Die Li  <lidie@eswincomputing.com>
2513         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
2514         Delete.
2515         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
2516         process for TARGET_XTHEADCONDMOV
2518 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
2520         PR target/110021
2521         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
2522         TARGET_AVX512BW to generate truncv16hiv16qi2.
2524 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
2526         * config/riscv/riscv.md (and<mode>3): New expander.
2527         (*and<mode>3) New pattern.
2528         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
2529         predicate.
2531 2023-05-29  Pan Li  <pan2.li@intel.com>
2533         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
2534         comments and rename local variables.
2535         (emit_nonvlmax_insn): Diito.
2536         (emit_vlmax_merge_insn): Ditto.
2537         (emit_vlmax_cmp_insn): Ditto.
2538         (emit_vlmax_cmp_mu_insn): Ditto.
2539         (emit_scalar_move_insn): Ditto.
2541 2023-05-29  Pan Li  <pan2.li@intel.com>
2543         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
2544         magic number.
2545         (emit_nonvlmax_insn): Ditto.
2546         (emit_vlmax_merge_insn): Ditto.
2547         (emit_vlmax_cmp_insn): Ditto.
2548         (emit_vlmax_cmp_mu_insn): Ditto.
2549         (expand_vec_series): Ditto.
2551 2023-05-29  Pan Li  <pan2.li@intel.com>
2553         * config/riscv/riscv-protos.h (enum insn_type): New type.
2554         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
2555         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
2556         class member.
2557         (rvv_builder::get_merged_repeating_sequence): Ditto.
2558         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
2559         to evaluate the optimization cost.
2560         (rvv_builder::get_merge_scalar_mask): New function to get the merge
2561         mask.
2562         (emit_scalar_move_insn): New function to emit vmv.s.x.
2563         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
2564         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
2565         vmv.v.x.
2566         (get_repeating_sequence_dup_machine_mode): New function to get the dup
2567         machine mode.
2568         (expand_vector_init_merge_repeating_sequence): New function to perform
2569         the optimization.
2570         (expand_vec_init): Add this vector init optimization.
2571         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
2573 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
2575         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
2576         put onto the increment when it is inserted after the position.
2578 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
2580         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
2581         on constants.
2583 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2585         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
2587 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2589         * config/riscv/autovec.md (fma<mode>4): New pattern.
2590         (*fma<mode>): Ditto.
2591         * config/riscv/riscv-protos.h (enum insn_type): New enum.
2592         (emit_vlmax_ternary_insn): New function.
2593         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
2595 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2597         * config/riscv/vector.md: Fix vimuladd instruction bug.
2599 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2601         * config/riscv/riscv.cc (global_state_unknown_p): New function.
2602         (riscv_mode_after): Fix incorrect VXM.
2604 2023-05-29  Pan Li  <pan2.li@intel.com>
2606         * common/config/riscv/riscv-common.cc:
2607         (riscv_implied_info): Add zvfhmin item.
2608         (riscv_ext_version_table): Ditto.
2609         (riscv_ext_flag_table): Ditto.
2610         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
2611         (TARGET_ZFHMIN): Align indent.
2612         (TARGET_ZFH): Ditto.
2613         (TARGET_ZVFHMIN): New macro.
2615 2023-05-27  liuhongt  <hongtao.liu@intel.com>
2617         PR target/100711
2618         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
2619         to VI_AVX2 to cover more modes.
2621 2023-05-27  liuhongt  <hongtao.liu@intel.com>
2623         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
2624         Remove ATOM and ICELAKE(and later) core processors.
2626 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
2628         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
2629         (abs<mode>2): Add.
2630         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
2631         Declare.
2632         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
2633         function.
2635 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
2636             Juzhe Zhong  <juzhe.zhong@rivai.ai>
2638         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
2639         expander.
2640         (<optab><v_quad_trunc><mode>2): Dito.
2641         (<optab><v_oct_trunc><mode>2): Dito.
2642         (trunc<mode><v_double_trunc>2): Dito.
2643         (trunc<mode><v_quad_trunc>2): Dito.
2644         (trunc<mode><v_oct_trunc>2): Dito.
2645         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
2646         (autovectorize_vector_modes): Define.
2647         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
2648         hook.
2649         (autovectorize_vector_modes): Implement hook.
2650         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
2651         Implement target hook.
2652         (riscv_vectorize_related_mode): Implement target hook.
2653         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
2654         (TARGET_VECTORIZE_RELATED_MODE): Define.
2655         * config/riscv/vector-iterators.md: Add lowercase versions of
2656         mode_attr iterators.
2658 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
2659             Tobias Burnus  <tobias@codesourcery.com>
2661         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
2662         (ASM_SPEC): Use XNACKOPT.
2663         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
2664         (enum hsaco_attr_type): ... this, and generalize the names.
2665         (TARGET_XNACK): New macro.
2666         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
2667         but -mxnack=off.
2668         (output_file_start): Update xnack handling.
2669         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
2670         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
2671         (sram_ecc_type): Rename to ...
2672         (hsaco_attr_type: ... this.)
2673         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
2674         (TEST_XNACK): Delete.
2675         (TEST_XNACK_ANY): New macro.
2676         (TEST_XNACK_ON): New macro.
2677         (main): Support the new -mxnack=on/off/any syntax.
2678         * doc/invoke.texi (-mxnack): Update for new syntax.
2680 2023-05-26  Andrew Pinski  <apinski@marvell.com>
2682         * genmatch.cc (emit_debug_printf): New function.
2683         (dt_simplify::gen_1): Emit printf into the code
2684         before the `return true` or returning the folded result
2685         instead of emitting it always.
2687 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2689         * config/xtensa/xtensa-protos.h
2690         (xtensa_expand_block_set_unrolled_loop,
2691         xtensa_expand_block_set_small_loop): Remove.
2692         (xtensa_expand_block_set): New prototype.
2693         * config/xtensa/xtensa.cc
2694         (xtensa_expand_block_set_libcall): New subfunction.
2695         (xtensa_expand_block_set_unrolled_loop,
2696         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
2697         (xtensa_expand_block_set): New function that calls the above
2698         subfunctions.
2699         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
2700         xtensa_expand_block_set().
2702 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2704         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
2705         New prototype.
2706         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
2707         New function.
2708         * config/xtensa/constraints.md (O):
2709         Change to use the above function.
2710         * config/xtensa/xtensa.md (*subsi3_from_const):
2711         New insn_and_split pattern.
2713 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2715         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
2716         Retract excessive line folding, and correct the value of
2717         the "length" insn attribute related to TARGET_DENSITY.
2718         (*extzvsi-1bit_addsubx): Ditto.
2720 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
2722         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
2723         Do not disable call to ix86_expand_vecop_qihi2.
2725 2023-05-26  liuhongt  <hongtao.liu@intel.com>
2727         PR target/109610
2728         PR target/109858
2729         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
2730         calculation when !hard_regno_mode_ok for GENERAL_REGS and
2731         mode, otherwise still use GENERAL_REGS.
2733 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2735         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
2736         explict VL and drop VL in ops.
2738 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
2740         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
2741         in different BB blocks.
2743 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
2745         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
2746         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
2747         instructions when available.  Emulate truncation via
2748         ix86_expand_vec_perm_const_1 when native truncate insn
2749         is not available.
2750         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
2751         when available.  Trivially rename some variables.
2752         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
2753         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
2754         calculation of V*QImode emulations to account for generation of
2755         2x-wider mode instructions.
2756         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
2757         emulations to account for generation of 2x-wider mode instructions.
2759 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
2761         PR target/104327
2762         * config/avr/avr.cc (avr_can_inline_p): New static function.
2763         (TARGET_CAN_INLINE_P): Define to that function.
2765 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
2767         PR target/82931
2768         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
2769         Handle any bit position and use mode QISI.
2770         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
2771         of 2 insns for bit-transfer of respective style.
2773 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
2775         * config/arm/iterators.md (MVE_6): Remove.
2776         * config/arm/mve.md: Replace MVE_6 with MVE_5.
2778 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2779             Richard Sandiford  <richard.sandiford@arm.com>
2781         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
2782         function.
2783         (vect_set_loop_controls_directly): Add decrement IV support.
2784         (vect_set_loop_condition_partial_vectors): Ditto.
2785         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
2786         variable.
2787         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
2788         macro.
2790 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2792         PR target/99195
2793         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
2794         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
2795         Fix canonicalization of PLUS operands.
2796         (aarch64_fcmla<rot><mode>): Rename to...
2797         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
2798         Fix canonicalization of PLUS operands.
2799         (aarch64_fcmla_lane<rot><mode>): Rename to...
2800         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
2801         Fix canonicalization of PLUS operands.
2802         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
2803         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
2804         Fix canonicalization of PLUS operands.
2805         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
2807 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
2809         * config/arm/arm.md (rbitsi2): Rename to...
2810         (arm_rbit): ... This.
2811         (ctzsi2): Adjust for the above.
2812         (arm_rev16si2): Convert to define_expand.
2813         (arm_rev16si2_alt1): New pattern.
2814         (arm_rev16si2_alt): Rename to...
2815         (*arm_rev16si2_alt2): ... This.
2816         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
2817         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
2818         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
2819         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
2821 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
2823         PR target/109800
2824         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
2825         instead of DFmode.
2826         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
2827         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
2828         DFmode as an rvalue.
2830 2023-05-25  Richard Biener  <rguenther@suse.de>
2832         PR target/109955
2833         * tree-vect-stmts.cc (vectorizable_condition): For
2834         embedded comparisons also handle the case when the target
2835         only provides vec_cmp and vcond_mask.
2837 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
2839         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
2840         TLS Local Dynamic.
2842 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2844         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
2845         (seq_cost_ignoring_scalar_moves): Likewise.
2846         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
2848 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2850         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
2851         (vcage_f32): Likewise.
2852         (vcages_f32): Likewise.
2853         (vcageq_f32): Likewise.
2854         (vcaged_f64): Likewise.
2855         (vcageq_f64): Likewise.
2856         (vcagts_f32): Likewise.
2857         (vcagt_f32): Likewise.
2858         (vcagt_f64): Likewise.
2859         (vcagtq_f32): Likewise.
2860         (vcagtd_f64): Likewise.
2861         (vcagtq_f64): Likewise.
2862         (vcale_f32): Likewise.
2863         (vcale_f64): Likewise.
2864         (vcaled_f64): Likewise.
2865         (vcales_f32): Likewise.
2866         (vcaleq_f32): Likewise.
2867         (vcaleq_f64): Likewise.
2868         (vcalt_f32): Likewise.
2869         (vcalt_f64): Likewise.
2870         (vcaltd_f64): Likewise.
2871         (vcaltq_f32): Likewise.
2872         (vcaltq_f64): Likewise.
2873         (vcalts_f32): Likewise.
2875 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
2877         PR target/109173
2878         PR target/109174
2879         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
2880         int to const int or const int to const unsigned int.
2881         (_mm512_mask_srli_epi16): Ditto.
2882         (_mm512_slli_epi16): Ditto.
2883         (_mm512_mask_slli_epi16): Ditto.
2884         (_mm512_maskz_slli_epi16): Ditto.
2885         (_mm512_srai_epi16): Ditto.
2886         (_mm512_mask_srai_epi16): Ditto.
2887         (_mm512_maskz_srai_epi16): Ditto.
2888         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
2889         (_mm512_mask_slli_epi64): Ditto.
2890         (_mm512_maskz_slli_epi64): Ditto.
2891         (_mm512_srli_epi64): Ditto.
2892         (_mm512_mask_srli_epi64): Ditto.
2893         (_mm512_maskz_srli_epi64): Ditto.
2894         (_mm512_srai_epi64): Ditto.
2895         (_mm512_mask_srai_epi64): Ditto.
2896         (_mm512_maskz_srai_epi64): Ditto.
2897         (_mm512_slli_epi32): Ditto.
2898         (_mm512_mask_slli_epi32): Ditto.
2899         (_mm512_maskz_slli_epi32): Ditto.
2900         (_mm512_srli_epi32): Ditto.
2901         (_mm512_mask_srli_epi32): Ditto.
2902         (_mm512_maskz_srli_epi32): Ditto.
2903         (_mm512_srai_epi32): Ditto.
2904         (_mm512_mask_srai_epi32): Ditto.
2905         (_mm512_maskz_srai_epi32): Ditto.
2906         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
2907         (_mm256_maskz_srai_epi16): Ditto.
2908         (_mm_mask_srai_epi16): Ditto.
2909         (_mm_maskz_srai_epi16): Ditto.
2910         (_mm256_mask_slli_epi16): Ditto.
2911         (_mm256_maskz_slli_epi16): Ditto.
2912         (_mm_mask_slli_epi16): Ditto.
2913         (_mm_maskz_slli_epi16): Ditto.
2914         (_mm_maskz_srli_epi16): Ditto.
2915         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
2916         (_mm256_maskz_srli_epi32): Ditto.
2917         (_mm_mask_srli_epi32): Ditto.
2918         (_mm_maskz_srli_epi32): Ditto.
2919         (_mm256_mask_srli_epi64): Ditto.
2920         (_mm256_maskz_srli_epi64): Ditto.
2921         (_mm_mask_srli_epi64): Ditto.
2922         (_mm_maskz_srli_epi64): Ditto.
2923         (_mm256_mask_srai_epi32): Ditto.
2924         (_mm256_maskz_srai_epi32): Ditto.
2925         (_mm_mask_srai_epi32): Ditto.
2926         (_mm_maskz_srai_epi32): Ditto.
2927         (_mm256_srai_epi64): Ditto.
2928         (_mm256_mask_srai_epi64): Ditto.
2929         (_mm256_maskz_srai_epi64): Ditto.
2930         (_mm_srai_epi64): Ditto.
2931         (_mm_mask_srai_epi64): Ditto.
2932         (_mm_maskz_srai_epi64): Ditto.
2933         (_mm_mask_slli_epi32): Ditto.
2934         (_mm_maskz_slli_epi32): Ditto.
2935         (_mm_mask_slli_epi64): Ditto.
2936         (_mm_maskz_slli_epi64): Ditto.
2937         (_mm256_mask_slli_epi32): Ditto.
2938         (_mm256_maskz_slli_epi32): Ditto.
2939         (_mm256_mask_slli_epi64): Ditto.
2940         (_mm256_maskz_slli_epi64): Ditto.
2942 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2944         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
2945         instructions.
2947 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
2949         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
2950         * data-streamer-out.cc (streamer_write_vrange): Same.
2951         * value-range.h (class vrange): Make streamer_write_vrange a friend.
2953 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
2955         * value-query.cc (range_query::get_tree_range): Set NAN directly
2956         if necessary.
2957         * value-range.cc (frange::set): Assert that bounds are not NAN.
2959 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
2961         * value-range.cc (add_vrange): Handle known NANs.
2963 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
2965         * value-range.h (frange::set_nan): New.
2967 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
2969         PR target/100106
2970         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
2971         requires stricter alignment than MEM's.
2973 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
2975         PR tree-optimization/107822
2976         PR tree-optimization/107986
2977         * Makefile.in (OBJS): Add gimple-range-phi.o.
2978         * gimple-range-cache.h (ranger_cache::m_estimate): New
2979         phi_analyzer pointer member.
2980         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
2981         phi_analyzer if no loop info is available.
2982         * gimple-range-phi.cc: New file.
2983         * gimple-range-phi.h: New file.
2984         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
2986 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
2988         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
2989         to contructors.
2990         (fold_range): Add range_query parameter.
2991         (fur_relation::fur_relation): New.
2992         (fur_relation::trio): New.
2993         (fur_relation::register_relation): New.
2994         (fold_relations): New.
2995         * gimple-range-fold.h (fold_range): Adjust prototypes.
2996         (fold_relations): New.
2998 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
3000         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
3001         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
3002         (ranger_cache::const_query): New.
3003         * gimple-range.cc (gimple_ranger::const_query): New.
3004         * gimple-range.h (gimple_ranger::const_query): New prototype.
3006 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
3008         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
3009         (ssa_cache::dump_range_query): Delete.
3010         (ssa_lazy_cache::dump_range_query): Delete.
3011         (ssa_lazy_cache::get_range): Move from header file.
3012         (ssa_lazy_cache::clear_range): ditto.
3013         (ssa_lazy_cache::clear): Ditto.
3014         * gimple-range-cache.h (class ssa_cache): Virtualize.
3015         (class ssa_lazy_cache): Inherit and virtualize.
3017 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
3019         * value-range.h (vrange::kind): Remove.
3021 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
3023         PR middle-end/109840
3024         * match.pd <popcount optimizations>: Preserve zero-extension when
3025         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
3026         popcount((T)x), so the popcount's argument keeps the same type.
3027         <parity optimizations>:  Likewise preserve extensions when
3028         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
3029         parity((T)x), so that the parity's argument type is the same.
3031 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
3033         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
3034         (ipcp_store_vr_results): Same.
3035         * ipa-prop.cc (ipa_vr::ipa_vr): New.
3036         (ipa_vr::get_vrange): New.
3037         (ipa_vr::set_unknown): New.
3038         (ipa_vr::streamer_read): New.
3039         (ipa_vr::streamer_write): New.
3040         (write_ipcp_transformation_info): Use new ipa_vr API.
3041         (read_ipcp_transformation_info): Same.
3042         (ipa_vr::nonzero_p): Delete.
3043         (ipcp_update_vr): Use new ipa_vr API.
3044         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
3045         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
3047 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
3049         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
3050         silence overflow warnings later on.
3052 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
3054         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
3055         Remove handling of V8QImode.
3056         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
3057         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
3058         (v<insn>v4qi3): Ditto.
3059         * config/i386/sse.md (v<insn>v8qi3): Remove.
3061 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3063         PR target/99195
3064         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
3065         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
3066         (aarch64_simd_ashr<mode>): Rename to...
3067         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
3068         (aarch64_simd_imm_shl<mode>): Rename to...
3069         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
3070         (aarch64_simd_reg_sshl<mode>): Rename to...
3071         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
3072         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
3073         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
3074         (aarch64_simd_reg_shl<mode>_signed): Rename to...
3075         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
3076         (vec_shr_<mode>): Rename to...
3077         (vec_shr_<mode><vczle><vczbe>): ... This.
3078         (aarch64_<sur>shl<mode>): Rename to...
3079         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
3080         (aarch64_<sur>q<r>shl<mode>): Rename to...
3081         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
3083 2023-05-24  Richard Biener  <rguenther@suse.de>
3085         PR target/109944
3086         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
3087         Perform final vector composition using
3088         ix86_expand_vector_init_general instead of setting
3089         the highpart and lowpart which causes spilling.
3091 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
3093         PR tree-optimization/109695
3094         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
3095         changed param.
3096         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
3097         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
3098         flag to set_global_range.
3099         (gimple_ranger::prefill_stmt_dependencies): Ditto.
3101 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
3103         PR tree-optimization/109695
3104         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
3105         a positive int.
3106         (temporal_cache::current_p): Check always_current method.
3107         (temporal_cache::set_always_current): Add param and set value
3108         appropriately.
3109         (temporal_cache::always_current_p): New.
3110         (ranger_cache::get_global_range): Adjust.
3111         (ranger_cache::set_global_range): set always current first.
3113 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
3115         PR tree-optimization/109695
3116         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
3117         fold_range with global query to choose an initial value.
3119 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3121         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
3122         prefix.
3124 2023-05-24  Richard Biener  <rguenther@suse.de>
3126         PR tree-optimization/109849
3127         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
3128         expressions but take the first sets.
3130 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
3132         PR modula2/109952
3133         * doc/gm2.texi (High procedure function): New node.
3134         (Using): New menu entry for High procedure function.
3136 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
3138         PR rtl-optimization/109940
3139         * early-remat.cc (postorder_index): Rename to...
3140         (rpo_index): ...this.
3141         (compare_candidates): Sort by decreasing rpo_index rather than
3142         increasing postorder_index.
3143         (early_remat::sort_candidates): Calculate the forward RPO from
3144         DF_FORWARD.
3145         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
3146         rather than DF_BACKWARD in reverse.
3148 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3150         PR target/109939
3151         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
3152         qualifier_none for the return operand.
3154 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3156         * config/riscv/autovec.md (<optab><mode>3): New pattern.
3157         (one_cmpl<mode>2): Ditto.
3158         (*<optab>not<mode>): Ditto.
3159         (*n<optab><mode>): Ditto.
3160         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
3161         one_cmpl.
3163 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
3165         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
3166         calculation on n_perms by considering nvectors_per_build.
3168 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3169             Richard Sandiford  <richard.sandiford@arm.com>
3171         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
3172         (vec_cmp<mode><vm>): New pattern.
3173         (vec_cmpu<mode><vm>): New pattern.
3174         (vcond<V:mode><VI:mode>): New pattern.
3175         (vcondu<V:mode><VI:mode>): New pattern.
3176         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
3177         (emit_vlmax_merge_insn): New function.
3178         (emit_vlmax_cmp_insn): Ditto.
3179         (emit_vlmax_cmp_mu_insn): Ditto.
3180         (expand_vec_cmp): Ditto.
3181         (expand_vec_cmp_float): Ditto.
3182         (expand_vcond): Ditto.
3183         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
3184         (emit_vlmax_cmp_insn): Ditto.
3185         (emit_vlmax_cmp_mu_insn): Ditto.
3186         (get_cmp_insn_code): Ditto.
3187         (expand_vec_cmp): Ditto.
3188         (expand_vec_cmp_float): Ditto.
3189         (expand_vcond): Ditto.
3191 2023-05-24  Pan Li  <pan2.li@intel.com>
3193         * config/riscv/genrvv-type-indexer.cc (main): Add
3194         unsigned_eew*_lmul1_interpret for indexer.
3195         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
3196         Register vuint*m1_t interpret function.
3197         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
3198         New macro for vuint8m1_t.
3199         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3200         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3201         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3202         (vbool1_t): Add to unsigned_eew*_interpret_ops.
3203         (vbool2_t): Likewise.
3204         (vbool4_t): Likewise.
3205         (vbool8_t): Likewise.
3206         (vbool16_t): Likewise.
3207         (vbool32_t): Likewise.
3208         (vbool64_t): Likewise.
3209         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
3210         New macro for vuint*m1_t.
3211         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3212         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3213         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3214         (required_extensions_p): Add vuint*m1_t interpret case.
3215         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
3216         Add vuint*m1_t interpret to base type.
3217         (unsigned_eew16_lmul1_interpret): Likewise.
3218         (unsigned_eew32_lmul1_interpret): Likewise.
3219         (unsigned_eew64_lmul1_interpret): Likewise.
3221 2023-05-24  Pan Li  <pan2.li@intel.com>
3223         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
3224         for the eew size list.
3225         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
3226         (main): Add signed_eew*_lmul1_interpret for indexer.
3227         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
3228         Register vint*m1_t interpret function.
3229         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
3230         New macro for vint8m1_t.
3231         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3232         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3233         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3234         (vbool1_t): Add to signed_eew*_interpret_ops.
3235         (vbool2_t): Likewise.
3236         (vbool4_t): Likewise.
3237         (vbool8_t): Likewise.
3238         (vbool16_t): Likewise.
3239         (vbool32_t): Likewise.
3240         (vbool64_t): Likewise.
3241         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
3242         New macro for vint*m1_t.
3243         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
3244         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
3245         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
3246         (required_extensions_p): Add vint8m1_t interpret case.
3247         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
3248         Add vint*m1_t interpret to base type.
3249         (signed_eew16_lmul1_interpret): Likewise.
3250         (signed_eew32_lmul1_interpret): Likewise.
3251         (signed_eew64_lmul1_interpret): Likewise.
3253 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3255         * config/riscv/autovec.md: Adjust for new interface.
3256         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
3257         (emit_nonvlmax_insn): Add AVL operand.
3258         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
3259         (emit_nonvlmax_insn): Add AVL operand.
3260         (sew64_scalar_helper): Adjust for new interface.
3261         (expand_tuple_move): Ditto.
3262         * config/riscv/vector.md: Ditto.
3264 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3266         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
3267         (expand_const_vector): Ditto.
3268         (legitimize_move): Ditto.
3269         (sew64_scalar_helper): Ditto.
3270         (expand_tuple_move): Ditto.
3271         (expand_vector_init_insert_elems): Ditto.
3272         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
3274 2023-05-24  liuhongt  <hongtao.liu@intel.com>
3276         PR target/109900
3277         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
3278         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
3279         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
3280         (ix86_masked_all_ones): Handle 64-bit mask.
3281         * config/i386/i386-builtin.def: Replace icode of related
3282         non-mask simd abs builtins with CODE_FOR_nothing.
3284 2023-05-23  Martin Uecker  <uecker@tugraz.at>
3286         PR c/109450
3287         * function.cc (gimplify_parm_type): Remove function.
3288         (gimplify_parameters): Call gimplify_type_sizes.
3290 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
3292         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
3293         and change to also accept '*subx' pattern.
3294         (*subx): Remove.
3296 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
3298         * config/xtensa/predicates.md (addsub_operator): New.
3299         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
3300         *extzvsi-1bit_addsubx): New insn_and_split patterns.
3301         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
3302         Add a special case about ifcvt 'noce_try_cmove()' to handle
3303         constant loads that do not fit into signed 12 bits in the
3304         patterns added above.
3306 2023-05-23  Richard Biener  <rguenther@suse.de>
3308         PR tree-optimization/109747
3309         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
3310         the SLP node only once to the cost hook.
3312 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
3314         * config/avr/avr.cc (avr_insn_cost): New static function.
3315         (TARGET_INSN_COST): Define to that function.
3317 2023-05-23  Richard Biener  <rguenther@suse.de>
3319         PR target/109944
3320         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
3321         For vector construction or splats apply GPR->XMM move
3322         costing.  QImode memory can be handled directly only
3323         with SSE4.1 pinsrb.
3325 2023-05-23  Richard Biener  <rguenther@suse.de>
3327         PR tree-optimization/108752
3328         * tree-vect-stmts.cc (vectorizable_operation): For bit
3329         operations with generic word_mode vectors do not cost
3330         an extra stmt.  For plus, minus and negate also cost the
3331         constant materialization.
3333 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
3335         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
3336         Call ix86_expand_vec_shift_qihi_constant for shifts
3337         with constant count operand.
3338         * config/i386/i386.cc (ix86_shift_rotate_cost):
3339         Handle V4QImode and V8QImode.
3340         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
3341         (<insn>v4qi3): Ditto.
3343 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3345         * config/riscv/vector.md: Add mode.
3347 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
3349         PR tree-optimization/109934
3350         * value-range.cc (irange::invert): Remove buggy special case.
3352 2023-05-23  Richard Biener  <rguenther@suse.de>
3354         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
3355         ANTIC_OUT.
3357 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
3359         PR target/109632
3360         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
3361         subregs between any scalars that are 64 bits or smaller.
3362         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
3363         (bits_etype): New int attribute.
3364         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
3365         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
3366         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
3368 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
3370         * doc/md.texi: Document that <FOO> can be used to refer to the
3371         numerical value of an int iterator FOO.  Tweak other parts of
3372         the int iterator documentation.
3373         * read-rtl.cc (iterator_group::has_self_attr): New field.
3374         (map_attr_string): When has_self_attr is true, make <FOO>
3375         expand to the current value of iterator FOO.
3376         (initialize_iterators): Set has_self_attr for int iterators.
3378 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3380         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
3381         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
3382         (RVV_UNOP_NUM): New macro.
3383         (RVV_BINOP_NUM): Ditto.
3384         (legitimize_move): Refactor the framework of RVV auto-vectorization.
3385         (emit_vlmax_op): Ditto.
3386         (emit_vlmax_reg_op): Ditto.
3387         (emit_len_op): Ditto.
3388         (emit_len_binop): Ditto.
3389         (emit_vlmax_tany_many): Ditto.
3390         (emit_nonvlmax_tany_many): Ditto.
3391         (sew64_scalar_helper): Ditto.
3392         (expand_tuple_move): Ditto.
3393         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
3394         (emit_pred_binop): Ditto.
3395         (emit_vlmax_op): Ditto.
3396         (emit_vlmax_tany_many): New function.
3397         (emit_len_op): Remove.
3398         (emit_nonvlmax_tany_many): New function.
3399         (emit_vlmax_reg_op): Remove.
3400         (emit_len_binop): Ditto.
3401         (emit_index_op): Ditto.
3402         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
3403         (expand_const_vector): Ditto.
3404         (legitimize_move): Ditto.
3405         (sew64_scalar_helper): Ditto.
3406         (expand_tuple_move): Ditto.
3407         (expand_vector_init_insert_elems): Ditto.
3408         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
3409         * config/riscv/vector.md: Ditto.
3411 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3413         PR target/109855
3414         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
3415         and constraint for operand 0.
3416         (add_vec_concat_subst_be): Likewise.
3418 2023-05-23  Richard Biener  <rguenther@suse.de>
3420         PR tree-optimization/109849
3421         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
3422         and use that to determine what to hoist.
3424 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
3426         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
3427         specific treatment for bit-fields only if they have an integral type
3428         and filter out non-integral bit-fields that do not start and end on
3429         a byte boundary.
3431 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
3433         PR tree-optimization/109920
3434         * value-range.h (RESIZABLE>::~int_range): Use delete[].
3436 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
3438         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
3439         calcuation of integer vector mode costs to reflect generated
3440         instruction sequences of different integer vector modes and
3441         different target ABIs.  Remove "speed" function argument.
3442         (ix86_rtx_costs): Update call for removed function argument.
3443         (ix86_vector_costs::add_stmt_cost): Ditto.
3445 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
3447         * value-range.h (class Value_Range): Implement set_zero,
3448         set_nonzero, and nonzero_p.
3450 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
3452         * config/i386/i386.cc (ix86_multiplication_cost): Add
3453         the cost of a memory read to the cost of V?QImode sequences.
3455 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3457         * config/riscv/riscv-v.cc: Add "m_" prefix.
3459 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3461         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
3462         multiple-rgroup of length.
3463         * tree-vect-stmts.cc (vectorizable_store): Ditto.
3464         (vectorizable_load): Ditto.
3465         * tree-vectorizer.h (vect_get_loop_len): Ditto.
3467 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3469         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
3470         codes.
3472 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
3474         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
3475         handling for the case index == count.
3477 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
3479         PR target/90622
3480         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
3481         Don't fold to XOR / AND / XOR if just one bit is copied to the
3482         same position.
3484 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
3486         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
3487         builtin for bit reversal using brev instruction.
3488         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
3489         NVPTX_BUILTIN_BREVLL.
3490         (nvptx_init_builtins): Define "brev" and "brevll".
3491         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
3492         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
3493         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
3494         section, document __builtin_nvptx_brev{,ll}.
3496 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
3498         PR tree-optimization/109505
3499         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
3500         Combine successive equal operations with constants,
3501         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
3502         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
3503         operands.
3505 2023-05-21  Andrew Pinski  <apinski@marvell.com>
3507         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
3509 2023-05-21  Pan Li  <pan2.li@intel.com>
3511         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
3512         rest bool size, aka 2, 4, 8, 16, 32, 64.
3513         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
3514         Register vbool[2|4|8|16|32|64] interpret function.
3515         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
3516         New macro for vbool2_t.
3517         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
3518         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
3519         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
3520         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
3521         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
3522         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
3523         (vint16m1_t): Likewise.
3524         (vint32m1_t): Likewise.
3525         (vint64m1_t): Likewise.
3526         (vuint8m1_t): Likewise.
3527         (vuint16m1_t): Likewise.
3528         (vuint32m1_t): Likewise.
3529         (vuint64m1_t): Likewise.
3530         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
3531         New macro for vbool2_t.
3532         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
3533         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
3534         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
3535         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
3536         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
3537         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
3538         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
3539         vbool2_t interprect to base type.
3540         (bool4_interpret): Likewise.
3541         (bool8_interpret): Likewise.
3542         (bool16_interpret): Likewise.
3543         (bool32_interpret): Likewise.
3544         (bool64_interpret): Likewise.
3546 2023-05-21  Andrew Pinski  <apinski@marvell.com>
3548         PR middle-end/109919
3549         * expr.cc (expand_single_bit_test): Don't use the
3550         target for expand_expr.
3552 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
3554         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
3555         section.
3557 2023-05-20  Pan Li  <pan2.li@intel.com>
3559         * mode-switching.cc (entity_map): Initialize the array to zero.
3560         (bb_info): Ditto.
3562 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
3564         PR target/105753
3565         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
3566         Remove superfluous "parallel" in insn pattern.
3567         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
3568         printing error text to assembly.
3570 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3572         * expr.cc (fold_single_bit_test): Rename to ...
3573         (expand_single_bit_test): This and expand directly.
3574         (do_store_flag): Update for the rename function.
3576 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3578         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
3579         instead of shift/and.
3581 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3583         * expr.cc (fold_single_bit_test): Add an assert
3584         and simplify based on code being NE_EXPR or EQ_EXPR.
3586 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3588         * expr.cc (fold_single_bit_test): Take inner and bitnum
3589         instead of arg0 and arg1. Update the code.
3590         (do_store_flag): Don't create a tree when calling
3591         fold_single_bit_test instead just call it with the bitnum
3592         and the inner tree.
3594 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3596         * expr.cc (fold_single_bit_test): Use get_def_for_expr
3597         instead of checking the inner's code.
3599 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3601         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
3602         (fold_single_bit_test): This and simplify.
3604 2023-05-20  Andrew Pinski  <apinski@marvell.com>
3606         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
3607         expr.cc.
3608         (fold_single_bit_test): Likewise.
3609         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
3610         (fold_single_bit_test): Likewise and make static.
3611         * fold-const.h (fold_single_bit_test): Remove declaration.
3613 2023-05-20  Die Li  <lidie@eswincomputing.com>
3615         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
3616         checking.
3618 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
3620         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
3622 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
3624         PR target/106888
3625         * config/riscv/bitmanip.md
3626         (<bitmanip_optab>disi2): Match with any_extend.
3627         (<bitmanip_optab>disi2_sext): New pattern to match
3628         with sign extend using an ANDI instruction.
3630 2023-05-19  Nathan Sidwell  <nathan@acm.org>
3632         PR other/99451
3633         * opts.h (handle_deferred_dump_options): Declare.
3634         * opts-global.cc (handle_common_deferred_options): Do not handle
3635         dump options here.
3636         (handle_deferred_dump_options): New.
3637         * toplev.cc (toplev::main): Call it after plugin init.
3639 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
3641         * config/riscv/constraints.md (DsS, DsD): Restore agreement
3642         with shiftm1 mode attribute.
3644 2023-05-19  Andrew Pinski  <apinski@marvell.com>
3646         PR driver/33980
3647         * gcc.cc (default_compilers["@c-header"]): Add %w
3648         after the --output-pch.
3650 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
3652         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
3653         to hival, ASHIFT the corresponding regs.
3655 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
3657         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
3659 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
3661         PR tree-optimization/105776
3662         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
3663         non-NULL, allow division statement to have a cast as single imm use
3664         rather than comparison/condition.
3665         (match_arith_overflow): In that case remove the cast stmt in addition
3666         to the division statement.
3668 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
3670         PR tree-optimization/101856
3671         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
3672         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
3673         support it but umul_highpart_optab does.
3675 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
3677         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
3678         of tree_to_shwi on array indices.  Minor tweaks.
3680 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3682         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
3683         * attribs.cc (diag_attr_exclusions): Ditto.
3684         (decl_attributes): Ditto.
3685         (build_type_attribute_qual_variant): Ditto.
3686         * builtins.cc (fold_builtin_carg): Ditto.
3687         (fold_builtin_next_arg): Ditto.
3688         (do_mpc_arg2): Ditto.
3689         * cfgexpand.cc (expand_return): Ditto.
3690         * cgraph.h (decl_in_symtab_p): Ditto.
3691         (symtab_node::get_create): Ditto.
3692         * dwarf2out.cc (base_type_die): Ditto.
3693         (implicit_ptr_descriptor): Ditto.
3694         (gen_array_type_die): Ditto.
3695         (gen_type_die_with_usage): Ditto.
3696         (optimize_location_into_implicit_ptr): Ditto.
3697         * expr.cc (do_store_flag): Ditto.
3698         * fold-const.cc (negate_expr_p): Ditto.
3699         (fold_negate_expr_1): Ditto.
3700         (fold_convert_const): Ditto.
3701         (fold_convert_loc): Ditto.
3702         (constant_boolean_node): Ditto.
3703         (fold_binary_op_with_conditional_arg): Ditto.
3704         (build_fold_addr_expr_with_type_loc): Ditto.
3705         (fold_comparison): Ditto.
3706         (fold_checksum_tree): Ditto.
3707         (tree_unary_nonnegative_warnv_p): Ditto.
3708         (integer_valued_real_unary_p): Ditto.
3709         (fold_read_from_constant_string): Ditto.
3710         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
3711         * gimple-expr.cc (useless_type_conversion_p): Ditto.
3712         (is_gimple_reg): Ditto.
3713         (is_gimple_asm_val): Ditto.
3714         (mark_addressable): Ditto.
3715         * gimple-expr.h (is_gimple_variable): Ditto.
3716         (virtual_operand_p): Ditto.
3717         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
3718         * gimplify.cc (gimplify_bind_expr): Ditto.
3719         (gimplify_return_expr): Ditto.
3720         (gimple_add_padding_init_for_auto_var): Ditto.
3721         (gimplify_addr_expr): Ditto.
3722         (omp_add_variable): Ditto.
3723         (omp_notice_variable): Ditto.
3724         (omp_get_base_pointer): Ditto.
3725         (omp_strip_components_and_deref): Ditto.
3726         (omp_strip_indirections): Ditto.
3727         (omp_accumulate_sibling_list): Ditto.
3728         (omp_build_struct_sibling_lists): Ditto.
3729         (gimplify_adjust_omp_clauses_1): Ditto.
3730         (gimplify_adjust_omp_clauses): Ditto.
3731         (gimplify_omp_for): Ditto.
3732         (goa_lhs_expr_p): Ditto.
3733         (gimplify_one_sizepos): Ditto.
3734         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
3735         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
3736         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
3737         (propagate_controlled_uses): Ditto.
3738         * ipa-sra.cc (type_prevails_p): Ditto.
3739         (scan_expr_access): Ditto.
3740         * optabs-tree.cc (optab_for_tree_code): Ditto.
3741         * toplev.cc (wrapup_global_declaration_1): Ditto.
3742         * trans-mem.cc (transaction_invariant_address_p): Ditto.
3743         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
3744         (verify_gimple_comparison): Ditto.
3745         (verify_gimple_assign_binary): Ditto.
3746         (verify_gimple_assign_single): Ditto.
3747         * tree-complex.cc (get_component_ssa_name): Ditto.
3748         * tree-emutls.cc (lower_emutls_2): Ditto.
3749         * tree-inline.cc (copy_tree_body_r): Ditto.
3750         (estimate_move_cost): Ditto.
3751         (copy_decl_for_dup_finish): Ditto.
3752         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
3753         (note_nonlocal_vla_type): Ditto.
3754         (convert_local_omp_clauses): Ditto.
3755         (remap_vla_decls): Ditto.
3756         (fixup_vla_decls): Ditto.
3757         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
3758         * tree-pretty-print.cc (print_declaration): Ditto.
3759         (print_call_name): Ditto.
3760         * tree-sra.cc (compare_access_positions): Ditto.
3761         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
3762         * tree-ssa-ccp.cc (get_default_value): Ditto.
3763         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
3764         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
3765         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
3766         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
3767         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
3768         * tree-ssa-sink.cc (statement_sink_location): Ditto.
3769         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
3770         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
3771         * tree-ssa-uninit.cc (warn_uninit): Ditto.
3772         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
3773         (non_rewritable_mem_ref_base): Ditto.
3774         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
3775         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
3776         * tree-vect-generic.cc (do_binop): Ditto.
3777         (do_cond): Ditto.
3778         * tree-vect-stmts.cc (vect_init_vector): Ditto.
3779         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
3780         * tree.cc (sign_mask_for): Ditto.
3781         (verify_type_variant): Ditto.
3782         (gimple_canonical_types_compatible_p): Ditto.
3783         (verify_type): Ditto.
3784         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
3785         * var-tracking.cc (prepare_call_arguments): Ditto.
3786         (vt_add_function_parameters): Ditto.
3787         * varasm.cc (decode_addr_const): Ditto.
3789 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3791         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
3792         (lower_reduction_clauses): Ditto.
3793         (lower_send_clauses): Ditto.
3794         (lower_omp_task_reductions): Ditto.
3795         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
3796         (worker_single_copy): Ditto.
3797         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
3798         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
3800 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3802         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
3803         tree.h.
3804         (lto_read_body_or_constructor): Ditto.
3805         * lto-streamer-out.cc (tree_is_indexable): Ditto.
3806         (lto_output_var_decl_ref): Ditto.
3807         (DFS::DFS_write_tree_body): Ditto.
3808         (wrap_refs): Ditto.
3809         (write_symbol_extension_info): Ditto.
3811 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3813         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
3814         defines from tree.h.
3815         (aarch64_mangle_type): Ditto.
3816         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
3817         (alpha_gimplify_va_arg_1): Ditto.
3818         * config/arc/arc.cc (arc_encode_section_info): Ditto.
3819         (arc_is_aux_reg_p): Ditto.
3820         (arc_is_uncached_mem_p): Ditto.
3821         (arc_handle_aux_attribute): Ditto.
3822         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
3823         (arm_handle_cmse_nonsecure_call): Ditto.
3824         (arm_set_default_type_attributes): Ditto.
3825         (arm_is_segment_info_known): Ditto.
3826         (arm_mangle_type): Ditto.
3827         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
3828         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
3829         (avr_decl_absdata_p): Ditto.
3830         (avr_insert_attributes): Ditto.
3831         (avr_section_type_flags): Ditto.
3832         (avr_encode_section_info): Ditto.
3833         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
3834         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
3835         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
3836         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
3837         (csky_mangle_type): Ditto.
3838         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
3839         * config/darwin.cc (is_objc_metadata): Ditto.
3840         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
3841         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
3842         * config/frv/frv.cc (frv_emit_movsi): Ditto.
3843         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
3844         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
3845         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
3846         * config/i386/i386-expand.cc: Ditto.
3847         * config/i386/i386.cc (type_natural_mode): Ditto.
3848         (ix86_function_arg): Ditto.
3849         (ix86_data_alignment): Ditto.
3850         (ix86_local_alignment): Ditto.
3851         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
3852         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
3853         (i386_pe_type_dllexport_p): Ditto.
3854         (i386_pe_adjust_class_at_definition): Ditto.
3855         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
3856         (i386_pe_binds_local_p): Ditto.
3857         (i386_pe_section_type_flags): Ditto.
3858         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
3859         (ia64_gimplify_va_arg): Ditto.
3860         (ia64_in_small_data_p): Ditto.
3861         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
3862         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
3863         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
3864         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
3865         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
3866         (mcore_encode_section_info): Ditto.
3867         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
3868         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
3869         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
3870         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
3871         (pass_in_memory): Ditto.
3872         (nvptx_generate_vector_shuffle): Ditto.
3873         (nvptx_lockless_update): Ditto.
3874         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
3875         (pa_function_value): Ditto.
3876         (pa_function_arg): Ditto.
3877         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
3878         (TEXT_SPACE_P): Ditto.
3879         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
3880         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
3881         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
3882         (riscv_mangle_type): Ditto.
3883         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
3884         (rl78_addsi3_internal): Ditto.
3885         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
3886         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
3887         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
3888         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
3889         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
3890         (rs6000_function_arg_advance_1): Ditto.
3891         (rs6000_function_arg): Ditto.
3892         (rs6000_pass_by_reference): Ditto.
3893         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
3894         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
3895         (rs6000_set_default_type_attributes): Ditto.
3896         (rs6000_elf_in_small_data_p): Ditto.
3897         (IN_NAMED_SECTION): Ditto.
3898         (rs6000_xcoff_encode_section_info): Ditto.
3899         (rs6000_function_value): Ditto.
3900         (invalid_arg_for_unprototyped_fn): Ditto.
3901         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
3902         (s390_vec_n_elem): Ditto.
3903         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
3904         (s390_function_arg_integer): Ditto.
3905         (s390_return_in_memory): Ditto.
3906         (s390_encode_section_info): Ditto.
3907         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
3908         (sh_function_value): Ditto.
3909         * config/sol2.cc (solaris_insert_attributes): Ditto.
3910         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
3911         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
3912         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
3913         (xstormy16_handle_below100_attribute): Ditto.
3914         * config/v850/v850.cc (v850_encode_section_info): Ditto.
3915         (v850_insert_attributes): Ditto.
3916         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
3917         (visium_return_in_memory): Ditto.
3918         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
3920 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
3922         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
3923         (ix86_expand_vecop_qihi): Add op2vec bool variable.
3924         Do not set REG_EQUAL note.
3925         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
3926         Add prototype.
3927         * config/i386/i386.cc (ix86_multiplication_cost): Handle
3928         V4QImode and V8QImode.
3929         * config/i386/mmx.md (mulv8qi3): New expander.
3930         (mulv4qi3): Ditto.
3931         * config/i386/sse.md (mulv8qi3): Remove.
3933 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
3935         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
3937 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
3939         PR bootstrap/105831
3940         * config.gcc: Use = operator instead of ==.
3942 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
3944         PR bootstrap/105831
3945         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
3946         * configure.ac: Likewise.
3947         * configure: Regenerate.
3949 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
3951         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
3952         (__ARM_mve_coerce1): Remove.
3953         (__ARM_mve_coerce2): Remove.
3954         (__ARM_mve_coerce3): Remove.
3955         (__ARM_mve_coerce_i_scalar): New.
3956         (__ARM_mve_coerce_s8_ptr): New.
3957         (__ARM_mve_coerce_u8_ptr): New.
3958         (__ARM_mve_coerce_s16_ptr): New.
3959         (__ARM_mve_coerce_u16_ptr): New.
3960         (__ARM_mve_coerce_s32_ptr): New.
3961         (__ARM_mve_coerce_u32_ptr): New.
3962         (__ARM_mve_coerce_s64_ptr): New.
3963         (__ARM_mve_coerce_u64_ptr): New.
3964         (__ARM_mve_coerce_f_scalar): New.
3965         (__ARM_mve_coerce_f16_ptr): New.
3966         (__ARM_mve_coerce_f32_ptr): New.
3967         (__arm_vst4q): Change _coerce_ overloads.
3968         (__arm_vbicq): Change _coerce_ overloads.
3969         (__arm_vld1q): Change _coerce_ overloads.
3970         (__arm_vld1q_z): Change _coerce_ overloads.
3971         (__arm_vld2q): Change _coerce_ overloads.
3972         (__arm_vld4q): Change _coerce_ overloads.
3973         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
3974         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
3975         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
3976         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
3977         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
3978         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
3979         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
3980         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
3981         (__arm_vst1q_p): Change _coerce_ overloads.
3982         (__arm_vst2q): Change _coerce_ overloads.
3983         (__arm_vst1q): Change _coerce_ overloads.
3984         (__arm_vstrhq): Change _coerce_ overloads.
3985         (__arm_vstrhq_p): Change _coerce_ overloads.
3986         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
3987         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
3988         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
3989         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
3990         (__arm_vstrwq_p): Change _coerce_ overloads.
3991         (__arm_vstrwq): Change _coerce_ overloads.
3992         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
3993         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
3994         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
3995         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
3996         (__arm_vsetq_lane): Change _coerce_ overloads.
3997         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
3998         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
3999         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
4000         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
4001         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
4002         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
4003         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
4004         (__arm_vidupq_x_u8): Change _coerce_ overloads.
4005         (__arm_vddupq_x_u8): Change _coerce_ overloads.
4006         (__arm_vidupq_x_u16): Change _coerce_ overloads.
4007         (__arm_vddupq_x_u16): Change _coerce_ overloads.
4008         (__arm_vidupq_x_u32): Change _coerce_ overloads.
4009         (__arm_vddupq_x_u32): Change _coerce_ overloads.
4010         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
4011         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
4012         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
4013         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
4014         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
4015         (__arm_vidupq_u16): Change _coerce_ overloads.
4016         (__arm_vidupq_u32): Change _coerce_ overloads.
4017         (__arm_vidupq_u8): Change _coerce_ overloads.
4018         (__arm_vddupq_u16): Change _coerce_ overloads.
4019         (__arm_vddupq_u32): Change _coerce_ overloads.
4020         (__arm_vddupq_u8): Change _coerce_ overloads.
4021         (__arm_viwdupq_m): Change _coerce_ overloads.
4022         (__arm_viwdupq_u16): Change _coerce_ overloads.
4023         (__arm_viwdupq_u32): Change _coerce_ overloads.
4024         (__arm_viwdupq_u8): Change _coerce_ overloads.
4025         (__arm_vdwdupq_m): Change _coerce_ overloads.
4026         (__arm_vdwdupq_u16): Change _coerce_ overloads.
4027         (__arm_vdwdupq_u32): Change _coerce_ overloads.
4028         (__arm_vdwdupq_u8): Change _coerce_ overloads.
4029         (__arm_vstrbq): Change _coerce_ overloads.
4030         (__arm_vstrbq_p): Change _coerce_ overloads.
4031         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
4032         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
4033         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
4034         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
4035         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
4037 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
4039         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
4040         scalar constant.
4042 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
4044         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
4045         (__arm_vadcq_u32): Likewise.
4046         (__arm_vadcq_m_s32): Likewise.
4047         (__arm_vadcq_m_u32): Likewise.
4048         (__arm_vsbcq_s32): Likewise.
4049         (__arm_vsbcq_u32): Likewise.
4050         (__arm_vsbcq_m_s32): Likewise.
4051         (__arm_vsbcq_m_u32): Likewise.
4052         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
4054 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
4056         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
4057         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
4058         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
4059         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
4060         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
4061         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
4062         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
4063         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
4064         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
4065         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
4066         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
4067         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
4068         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
4069         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
4070         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
4071         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
4072         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
4073         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
4074         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
4075         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
4076         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
4077         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
4078         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
4079         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
4080         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
4081         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
4082         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
4083         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
4084         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
4085         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
4086         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
4087         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
4088         (mve_vorrq_m_f<mode>)
4089         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
4090         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
4091         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
4092         capitalization in the emitted asm.
4094 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
4096         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
4097         predicates.md.
4098         (Ri): Move constraint definition from predicates.md.
4099         (Rl): Define new constraint.
4100         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
4101         missing constraint.
4102         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
4103         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
4104         op 2. Fix asm output spacing.
4105         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
4106         * config/arm/predicates.md (Ri) Move constraint to constraints.md
4107         (mve_vldrd_immediate): Move it from
4108         constraints.md.
4109         (mve_vstrw_immediate): New predicate.
4111 2023-05-18  Pan Li  <pan2.li@intel.com>
4112             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4113             Kito Cheng  <kito.cheng@sifive.com>
4114             Richard Biener  <rguenther@suse.de>
4115             Richard Sandiford  <richard.sandiford@arm.com>
4117         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
4118         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
4119         (struct table_elt): Extend machine_mode to 16 bits.
4120         (struct set): Ditto.
4121         * genmodes.cc (emit_mode_wider): Extend type from char to short.
4122         (emit_mode_complex): Ditto.
4123         (emit_mode_inner): Ditto.
4124         (emit_class_narrowest_mode): Ditto.
4125         * genopinit.cc (main): Extend the machine_mode limit.
4126         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
4127         re-ordered the struct fields for padding.
4128         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
4129         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
4130         (get_mode_alignment): Extend type from char to short.
4131         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
4132         removed the ATTRIBUTE_PACKED.
4133         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
4134         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
4135         m_kind to 2 bits and remove m_spare.
4136         * rtl.h (RTX_CODE_BITSIZE): New macro.
4137         (struct rtx_def): Swap both the bit size and location between the
4138         rtx_code and the machine_mode.
4139         (subreg_shape::unique_id): Extend the machine_mode limit.
4140         * rtlanal.h: Extend machine_mode to 16 bits.
4141         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
4142         bits and re-ordered the struct fields for padding.
4143         (struct tree_decl_common): Extend machine_mode to 16 bits.
4145 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
4147         * genrecog.cc (print_nonbool_test): Fix type error of
4148         switch (SUBREG_BYTE (op))'.
4150 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
4152         * common/config/riscv/riscv-common.cc: Remove
4153         trailing spaces on lines.
4154         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
4155         * config/riscv/riscv.h (enum reg_class): Likewise.
4156         * config/riscv/riscv.md: Likewise.
4158 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
4160         * config/pa/pa.md (clear_cache): New.
4162 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
4164         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
4165         parenthesis.  Fix misnamed index entry.
4166         <concept>: Fix misnamed index entry.
4168 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
4170         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
4171         combined from ...
4172         (*<optab>si3_mask, *<optab>di3_mask): Here.
4173         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
4174         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
4175         pattern.
4176         (*<bitmanip_optab>si3_sext_mask): Likewise.
4177         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
4178         and const_di_mask_operand.
4179         (bitmanip_rotate): New iterator.
4180         (bitmanip_optab): Add rotates.
4181         * config/riscv/predicates.md (const_si_mask_operand): Renamed
4182         from const31_operand.  Generalize to handle more mask constants.
4183         (const_di_mask_operand): Similarly.
4185 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
4187         PR c++/109884
4188         * config/i386/i386-builtin-types.def (FLOAT128): Use
4189         float128t_type_node rather than float128_type_node.
4191 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
4193         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
4194         FP_CONTRACT_FAST (no functional change).
4196 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
4198         * config/i386/i386.cc (ix86_multiplication_cost): Correct
4199         calcuation of integer vector mode costs to reflect generated
4200         instruction sequences of different integer vector modes and
4201         different target ABIs.
4203 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4205         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
4206         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
4207         (riscv_mode_needed): Ditto.
4208         (riscv_mode_after): Ditto.
4209         (riscv_mode_entry): Ditto.
4210         (riscv_mode_exit): Ditto.
4211         (riscv_mode_priority): Ditto.
4212         (TARGET_MODE_EMIT): New target hook.
4213         (TARGET_MODE_NEEDED): Ditto.
4214         (TARGET_MODE_AFTER): Ditto.
4215         (TARGET_MODE_ENTRY): Ditto.
4216         (TARGET_MODE_EXIT): Ditto.
4217         (TARGET_MODE_PRIORITY): Ditto.
4218         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
4219         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
4220         * config/riscv/riscv.md: Add csrwvxrm.
4221         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
4222         (vxrmsi): New pattern.
4224 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4226         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
4227         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
4228         (struct narrow_alu_def): Ditto.
4229         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
4230         (function_expander::use_exact_insn): Ditto.
4231         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
4232         (function_base::has_rounding_mode_operand_p): New function.
4234 2023-05-17  Andrew Pinski  <apinski@marvell.com>
4236         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
4237         against 0 instead of calling integer_zerop.
4239 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4241         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
4242         (DEF_RVV_VXRM_ENUM): New macro.
4243         (handle_pragma_vector): Add vxrm enum register.
4244         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
4245         (RNU): Ditto.
4246         (RNE): Ditto.
4247         (RDN): Ditto.
4248         (ROD): Ditto.
4250 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
4252         * value-range.h (Value_Range::operator=): New.
4254 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
4256         * value-range.cc (vrange::operator=): Add a stub to copy
4257         unsupported ranges.
4258         * value-range.h (is_a <unsupported_range>): New.
4259         (Value_Range::operator=): Support copying unsupported ranges.
4261 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
4263         * data-streamer-in.cc (streamer_read_real_value): New.
4264         (streamer_read_value_range): New.
4265         * data-streamer-out.cc (streamer_write_real_value): New.
4266         (streamer_write_vrange): New.
4267         * data-streamer.h (streamer_write_vrange): New.
4268         (streamer_read_value_range): New.
4270 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
4272         PR c++/109532
4273         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
4274         is ignored for a fixed underlying type.
4275         (C++ Dialect Options): Likewise for -fstrict-enums.
4277 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
4279         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
4280         special case.
4282 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4284         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
4285         New.
4286         (s390_atomic_align_for_mode): New.
4288 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
4290         * wide-int.cc (wi::from_array): Add missing closing paren in function
4291         comment.
4293 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
4295         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
4296         suggested unroll factor once the previous analysis fails.
4298 2023-05-17  Pan Li  <pan2.li@intel.com>
4300         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
4301         macro.
4302         (main): Add bool1 to the type indexer.
4303         * config/riscv/riscv-vector-builtins-functions.def
4304         (vreinterpret): Register vbool1 interpret function.
4305         * config/riscv/riscv-vector-builtins-types.def
4306         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
4307         (vint8m1_t): Add the type to bool1_interpret_ops.
4308         (vint16m1_t): Ditto.
4309         (vint32m1_t): Ditto.
4310         (vint64m1_t): Ditto.
4311         (vuint8m1_t): Ditto.
4312         (vuint16m1_t): Ditto.
4313         (vuint32m1_t): Ditto.
4314         (vuint64m1_t): Ditto.
4315         * config/riscv/riscv-vector-builtins.cc
4316         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
4317         (required_extensions_p): Add bool1 interpret case.
4318         * config/riscv/riscv-vector-builtins.def
4319         (bool1_interpret): Add bool1 interpret to base type.
4320         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
4321         with VB dest for vreinterpret.
4323 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
4325         PR target/106708
4326         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
4327         constants through "lis; xoris".
4329 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
4331         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
4332         default rs6000 target pass for O2 and above.
4333         * doc/invoke.texi: Document -free
4335 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
4337         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
4338         Fix wrong select_kind...
4340 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4342         * config/s390/s390-protos.h (s390_expand_setmem): Change
4343         function signature.
4344         * config/s390/s390.cc (s390_expand_setmem): For memset's less
4345         than or equal to 256 byte do not perform a libc call.
4346         * config/s390/s390.md: Change expander into a version which
4347         takes 8 operands.
4349 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4351         * config/s390/s390-protos.h (s390_expand_movmem): New.
4352         * config/s390/s390.cc (s390_expand_movmem): New.
4353         * config/s390/s390.md (movmem<mode>): New.
4354         (*mvcrl): New.
4355         (mvcrl): New.
4357 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4359         * config/s390/s390-protos.h (s390_expand_cpymem): Change
4360         function signature.
4361         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
4362         than or equal to 256 byte do not perform a libc call.
4363         (s390_expand_insv): Adapt new function signature of
4364         s390_expand_cpymem.
4365         * config/s390/s390.md: Change expander into a version which
4366         takes 8 operands.
4368 2023-05-16  Andrew Pinski  <apinski@marvell.com>
4370         PR tree-optimization/109424
4371         * match.pd: Add patterns for min/max of zero_one_valued
4372         values to `&`/`|`.
4374 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4376         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
4377         * config/riscv/riscv-vector-builtins.cc
4378         (function_expander::use_ternop_insn): Add default rounding mode.
4379         (function_expander::use_widen_ternop_insn): Ditto.
4380         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
4381         (riscv_hard_regno_mode_ok): Ditto.
4382         (riscv_conditional_register_usage): Ditto.
4383         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
4384         (FRM_REG_P): Ditto.
4385         (RISCV_DWARF_FRM): Ditto.
4386         * config/riscv/riscv.md: Ditto.
4387         * config/riscv/vector-iterators.md: split no frm and has frm operations.
4388         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
4389         (@pred_<optab><mode>): Ditto.
4391 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
4393         PR tree-optimization/109695
4394         * value-range.cc (irange::operator=): Resize range.
4395         (irange::union_): Same.
4396         (irange::intersect): Same.
4397         (irange::invert): Same.
4398         (int_range_max): Default to 3 sub-ranges and resize as needed.
4399         * value-range.h (irange::maybe_resize): New.
4400         (~int_range): New.
4401         (int_range::int_range): Adjust for resizing.
4402         (int_range::operator=): Same.
4404 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
4406         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
4407         range copying
4408         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
4409         when range changed.
4411 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4413         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
4414         * config/riscv/riscv-vector-builtins.cc
4415         (function_expander::use_exact_insn): Add default rounding mode operand.
4416         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
4417         (riscv_hard_regno_mode_ok): Ditto.
4418         (riscv_conditional_register_usage): Ditto.
4419         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
4420         (VXRM_REG_P): Ditto.
4421         (RISCV_DWARF_VXRM): Ditto.
4422         * config/riscv/riscv.md: Ditto.
4423         * config/riscv/vector.md: Ditto
4425 2023-05-15  Pan Li  <pan2.li@intel.com>
4427         * optabs.cc (maybe_gen_insn): Add case to generate instruction
4428         that has 11 operands.
4430 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4432         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
4433         logic for vector modes.
4435 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4437         PR target/99195
4438         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
4439         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
4440         (aarch64_cmtst<mode>): Rename to...
4441         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
4442         (*aarch64_cmtst_same_<mode>): Rename to...
4443         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
4444         (*aarch64_cmtstdi): Rename to...
4445         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
4446         (aarch64_fac<optab><mode>): Rename to...
4447         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
4449 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4451         PR target/99195
4452         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
4453         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
4455 2023-05-15  Pan Li  <pan2.li@intel.com>
4456             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4457             kito-cheng  <kito.cheng@sifive.com>
4459         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
4460         deciding the mode is constant or not.
4461         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
4463 2023-05-15  Richard Biener  <rguenther@suse.de>
4465         PR tree-optimization/109848
4466         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
4467         TARGET_MEM_REF address preparation before the store, not
4468         before the CTOR.
4470 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4472         * config/riscv/riscv.cc
4473         (riscv_vectorize_preferred_vector_alignment): New function.
4474         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
4476 2023-05-14  Andrew Pinski  <apinski@marvell.com>
4478         PR tree-optimization/109829
4479         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
4481 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
4483         PR target/109807
4484         * config/i386/i386.cc: Revert the 2023-05-11 change.
4485         (ix86_widen_mult_cost): Return high value instead of
4486         ICEing for unsupported modes.
4488 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
4490         * config/i386/i386.cc (x86_function_profiler): Take
4491         ix86_direct_extern_access into account when generating calls
4492         to __fentry__()
4494 2023-05-14  Pan Li  <pan2.li@intel.com>
4496         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
4497         Refactor the or pattern to switch cases.
4499 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4501         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
4502         aarch64_expand_vector_init to this, and remove  interleaving case.
4503         Recursively call aarch64_expand_vector_init_fallback, instead of
4504         aarch64_expand_vector_init.
4505         (aarch64_unzip_vector_init): New function.
4506         (aarch64_expand_vector_init): Likewise.
4508 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
4510         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
4511         Pull out function call from the gcc_assert.
4513 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
4515         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
4516         (policy_to_str): New.
4517         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
4519 2023-05-13  Andrew Pinski  <apinski@marvell.com>
4521         PR tree-optimization/109834
4522         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
4523         (popcount(rotate(x,y))->popcount(x)): Likewise.
4525 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
4527         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
4528         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
4529         gen_extend_insn to generate zero/sign extension instructions.
4530         Fix comments.
4531         (ix86_expand_vecop_qihi): Initialize interleave functions
4532         for MULT code only.  Fix comments.
4534 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
4536         PR target/109797
4537         * config/i386/mmx.md (mulv2si3): Remove expander.
4538         (mulv2si3): Rename insn pattern from *mulv2si.
4540 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
4542         PR libstdc++/109816
4543         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
4544         '!lto_stream_offload_p'.
4546 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
4547             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4549         PR target/109743
4550         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
4551         (local_avl_compatible_p): New.
4552         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
4553         for LCM, rewrite as a backward algorithm.
4554         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
4555         interface, handle a BB at once.
4557 2023-05-12  Richard Biener  <rguenther@suse.de>
4559         PR tree-optimization/64731
4560         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
4561         handle TARGET_MEM_REF destinations of stores from vector
4562         CTORs.
4564 2023-05-12  Richard Biener  <rguenther@suse.de>
4566         PR tree-optimization/109791
4567         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
4568         New pattern.
4569         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
4570         Likewise.
4572 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4574         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
4575         * config/arm/arm-mve-builtins-base.def (vsriq): New.
4576         * config/arm/arm-mve-builtins-base.h (vsriq): New.
4577         * config/arm/arm-mve-builtins.cc
4578         (function_instance::has_inactive_argument): Handle vsriq.
4579         * config/arm/arm_mve.h (vsriq): Remove.
4580         (vsriq_m): Remove.
4581         (vsriq_n_u8): Remove.
4582         (vsriq_n_s8): Remove.
4583         (vsriq_n_u16): Remove.
4584         (vsriq_n_s16): Remove.
4585         (vsriq_n_u32): Remove.
4586         (vsriq_n_s32): Remove.
4587         (vsriq_m_n_s8): Remove.
4588         (vsriq_m_n_u8): Remove.
4589         (vsriq_m_n_s16): Remove.
4590         (vsriq_m_n_u16): Remove.
4591         (vsriq_m_n_s32): Remove.
4592         (vsriq_m_n_u32): Remove.
4593         (__arm_vsriq_n_u8): Remove.
4594         (__arm_vsriq_n_s8): Remove.
4595         (__arm_vsriq_n_u16): Remove.
4596         (__arm_vsriq_n_s16): Remove.
4597         (__arm_vsriq_n_u32): Remove.
4598         (__arm_vsriq_n_s32): Remove.
4599         (__arm_vsriq_m_n_s8): Remove.
4600         (__arm_vsriq_m_n_u8): Remove.
4601         (__arm_vsriq_m_n_s16): Remove.
4602         (__arm_vsriq_m_n_u16): Remove.
4603         (__arm_vsriq_m_n_s32): Remove.
4604         (__arm_vsriq_m_n_u32): Remove.
4605         (__arm_vsriq): Remove.
4606         (__arm_vsriq_m): Remove.
4608 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4610         * config/arm/iterators.md (mve_insn): Add vsri.
4611         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
4612         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
4613         (mve_vsriq_m_n_<supf><mode>): Rename into ...
4614         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4616 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4618         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
4619         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
4621 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4623         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
4624         * config/arm/arm-mve-builtins-base.def (vsliq): New.
4625         * config/arm/arm-mve-builtins-base.h (vsliq): New.
4626         * config/arm/arm-mve-builtins.cc
4627         (function_instance::has_inactive_argument): Handle vsliq.
4628         * config/arm/arm_mve.h (vsliq): Remove.
4629         (vsliq_m): Remove.
4630         (vsliq_n_u8): Remove.
4631         (vsliq_n_s8): Remove.
4632         (vsliq_n_u16): Remove.
4633         (vsliq_n_s16): Remove.
4634         (vsliq_n_u32): Remove.
4635         (vsliq_n_s32): Remove.
4636         (vsliq_m_n_s8): Remove.
4637         (vsliq_m_n_s32): Remove.
4638         (vsliq_m_n_s16): Remove.
4639         (vsliq_m_n_u8): Remove.
4640         (vsliq_m_n_u32): Remove.
4641         (vsliq_m_n_u16): Remove.
4642         (__arm_vsliq_n_u8): Remove.
4643         (__arm_vsliq_n_s8): Remove.
4644         (__arm_vsliq_n_u16): Remove.
4645         (__arm_vsliq_n_s16): Remove.
4646         (__arm_vsliq_n_u32): Remove.
4647         (__arm_vsliq_n_s32): Remove.
4648         (__arm_vsliq_m_n_s8): Remove.
4649         (__arm_vsliq_m_n_s32): Remove.
4650         (__arm_vsliq_m_n_s16): Remove.
4651         (__arm_vsliq_m_n_u8): Remove.
4652         (__arm_vsliq_m_n_u32): Remove.
4653         (__arm_vsliq_m_n_u16): Remove.
4654         (__arm_vsliq): Remove.
4655         (__arm_vsliq_m): Remove.
4657 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4659         * config/arm/iterators.md (mve_insn>): Add vsli.
4660         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
4661         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4662         (mve_vsliq_m_n_<supf><mode>): Rename into ...
4663         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4665 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4667         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
4668         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
4670 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4672         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
4673         * config/arm/arm-mve-builtins-base.def (vpselq): New.
4674         * config/arm/arm-mve-builtins-base.h (vpselq): New.
4675         * config/arm/arm_mve.h (vpselq): Remove.
4676         (vpselq_u8): Remove.
4677         (vpselq_s8): Remove.
4678         (vpselq_u16): Remove.
4679         (vpselq_s16): Remove.
4680         (vpselq_u32): Remove.
4681         (vpselq_s32): Remove.
4682         (vpselq_u64): Remove.
4683         (vpselq_s64): Remove.
4684         (vpselq_f16): Remove.
4685         (vpselq_f32): Remove.
4686         (__arm_vpselq_u8): Remove.
4687         (__arm_vpselq_s8): Remove.
4688         (__arm_vpselq_u16): Remove.
4689         (__arm_vpselq_s16): Remove.
4690         (__arm_vpselq_u32): Remove.
4691         (__arm_vpselq_s32): Remove.
4692         (__arm_vpselq_u64): Remove.
4693         (__arm_vpselq_s64): Remove.
4694         (__arm_vpselq_f16): Remove.
4695         (__arm_vpselq_f32): Remove.
4696         (__arm_vpselq): Remove.
4698 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4700         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
4701         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
4703 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4705         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
4706         gen_mve_vpselq.
4707         * config/arm/iterators.md (MVE_VPSELQ_F): New.
4708         (mve_insn): Add vpsel.
4709         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
4710         (@mve_<mve_insn>q_<supf><mode>): ... this.
4711         (@mve_vpselq_f<mode>): Rename into ...
4712         (@mve_<mve_insn>q_f<mode>): ... this.
4714 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4716         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
4717         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
4718         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
4719         * config/arm/arm-mve-builtins.cc
4720         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
4721         vfmsq.
4722         * config/arm/arm_mve.h (vfmaq): Remove.
4723         (vfmasq): Remove.
4724         (vfmsq): Remove.
4725         (vfmaq_m): Remove.
4726         (vfmasq_m): Remove.
4727         (vfmsq_m): Remove.
4728         (vfmaq_f16): Remove.
4729         (vfmaq_n_f16): Remove.
4730         (vfmasq_n_f16): Remove.
4731         (vfmsq_f16): Remove.
4732         (vfmaq_f32): Remove.
4733         (vfmaq_n_f32): Remove.
4734         (vfmasq_n_f32): Remove.
4735         (vfmsq_f32): Remove.
4736         (vfmaq_m_f32): Remove.
4737         (vfmaq_m_f16): Remove.
4738         (vfmaq_m_n_f32): Remove.
4739         (vfmaq_m_n_f16): Remove.
4740         (vfmasq_m_n_f32): Remove.
4741         (vfmasq_m_n_f16): Remove.
4742         (vfmsq_m_f32): Remove.
4743         (vfmsq_m_f16): Remove.
4744         (__arm_vfmaq_f16): Remove.
4745         (__arm_vfmaq_n_f16): Remove.
4746         (__arm_vfmasq_n_f16): Remove.
4747         (__arm_vfmsq_f16): Remove.
4748         (__arm_vfmaq_f32): Remove.
4749         (__arm_vfmaq_n_f32): Remove.
4750         (__arm_vfmasq_n_f32): Remove.
4751         (__arm_vfmsq_f32): Remove.
4752         (__arm_vfmaq_m_f32): Remove.
4753         (__arm_vfmaq_m_f16): Remove.
4754         (__arm_vfmaq_m_n_f32): Remove.
4755         (__arm_vfmaq_m_n_f16): Remove.
4756         (__arm_vfmasq_m_n_f32): Remove.
4757         (__arm_vfmasq_m_n_f16): Remove.
4758         (__arm_vfmsq_m_f32): Remove.
4759         (__arm_vfmsq_m_f16): Remove.
4760         (__arm_vfmaq): Remove.
4761         (__arm_vfmasq): Remove.
4762         (__arm_vfmsq): Remove.
4763         (__arm_vfmaq_m): Remove.
4764         (__arm_vfmasq_m): Remove.
4765         (__arm_vfmsq_m): Remove.
4767 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4769         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
4770         VFMSQ_M_F.
4771         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
4772         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
4773         (mve_insn): Add vfma, vfmas, vfms.
4774         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
4775         into ...
4776         (@mve_<mve_insn>q_f<mode>): ... this.
4777         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
4778         (@mve_<mve_insn>q_n_f<mode>): ... this.
4779         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
4780         @mve_<mve_insn>q_m_f<mode>.
4781         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
4782         @mve_<mve_insn>q_m_n_f<mode>.
4784 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4786         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
4787         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
4789 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4791         * config/arm/arm-mve-builtins-base.cc
4792         (FUNCTION_WITH_RTX_M_N_NO_F): New.
4793         (vmvnq): New.
4794         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
4795         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
4796         * config/arm/arm_mve.h (vmvnq): Remove.
4797         (vmvnq_m): Remove.
4798         (vmvnq_x): Remove.
4799         (vmvnq_s8): Remove.
4800         (vmvnq_s16): Remove.
4801         (vmvnq_s32): Remove.
4802         (vmvnq_n_s16): Remove.
4803         (vmvnq_n_s32): Remove.
4804         (vmvnq_u8): Remove.
4805         (vmvnq_u16): Remove.
4806         (vmvnq_u32): Remove.
4807         (vmvnq_n_u16): Remove.
4808         (vmvnq_n_u32): Remove.
4809         (vmvnq_m_u8): Remove.
4810         (vmvnq_m_s8): Remove.
4811         (vmvnq_m_u16): Remove.
4812         (vmvnq_m_s16): Remove.
4813         (vmvnq_m_u32): Remove.
4814         (vmvnq_m_s32): Remove.
4815         (vmvnq_m_n_s16): Remove.
4816         (vmvnq_m_n_u16): Remove.
4817         (vmvnq_m_n_s32): Remove.
4818         (vmvnq_m_n_u32): Remove.
4819         (vmvnq_x_s8): Remove.
4820         (vmvnq_x_s16): Remove.
4821         (vmvnq_x_s32): Remove.
4822         (vmvnq_x_u8): Remove.
4823         (vmvnq_x_u16): Remove.
4824         (vmvnq_x_u32): Remove.
4825         (vmvnq_x_n_s16): Remove.
4826         (vmvnq_x_n_s32): Remove.
4827         (vmvnq_x_n_u16): Remove.
4828         (vmvnq_x_n_u32): Remove.
4829         (__arm_vmvnq_s8): Remove.
4830         (__arm_vmvnq_s16): Remove.
4831         (__arm_vmvnq_s32): Remove.
4832         (__arm_vmvnq_n_s16): Remove.
4833         (__arm_vmvnq_n_s32): Remove.
4834         (__arm_vmvnq_u8): Remove.
4835         (__arm_vmvnq_u16): Remove.
4836         (__arm_vmvnq_u32): Remove.
4837         (__arm_vmvnq_n_u16): Remove.
4838         (__arm_vmvnq_n_u32): Remove.
4839         (__arm_vmvnq_m_u8): Remove.
4840         (__arm_vmvnq_m_s8): Remove.
4841         (__arm_vmvnq_m_u16): Remove.
4842         (__arm_vmvnq_m_s16): Remove.
4843         (__arm_vmvnq_m_u32): Remove.
4844         (__arm_vmvnq_m_s32): Remove.
4845         (__arm_vmvnq_m_n_s16): Remove.
4846         (__arm_vmvnq_m_n_u16): Remove.
4847         (__arm_vmvnq_m_n_s32): Remove.
4848         (__arm_vmvnq_m_n_u32): Remove.
4849         (__arm_vmvnq_x_s8): Remove.
4850         (__arm_vmvnq_x_s16): Remove.
4851         (__arm_vmvnq_x_s32): Remove.
4852         (__arm_vmvnq_x_u8): Remove.
4853         (__arm_vmvnq_x_u16): Remove.
4854         (__arm_vmvnq_x_u32): Remove.
4855         (__arm_vmvnq_x_n_s16): Remove.
4856         (__arm_vmvnq_x_n_s32): Remove.
4857         (__arm_vmvnq_x_n_u16): Remove.
4858         (__arm_vmvnq_x_n_u32): Remove.
4859         (__arm_vmvnq): Remove.
4860         (__arm_vmvnq_m): Remove.
4861         (__arm_vmvnq_x): Remove.
4863 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4865         * config/arm/iterators.md (mve_insn): Add vmvn.
4866         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
4867         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4868         (mve_vmvnq_m_<supf><mode>): Rename into ...
4869         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4870         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
4871         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4873 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4875         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
4876         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
4878 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4880         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
4881         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
4882         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
4883         * config/arm/arm_mve.h (vbrsrq): Remove.
4884         (vbrsrq_m): Remove.
4885         (vbrsrq_x): Remove.
4886         (vbrsrq_n_f16): Remove.
4887         (vbrsrq_n_f32): Remove.
4888         (vbrsrq_n_u8): Remove.
4889         (vbrsrq_n_s8): Remove.
4890         (vbrsrq_n_u16): Remove.
4891         (vbrsrq_n_s16): Remove.
4892         (vbrsrq_n_u32): Remove.
4893         (vbrsrq_n_s32): Remove.
4894         (vbrsrq_m_n_s8): Remove.
4895         (vbrsrq_m_n_s32): Remove.
4896         (vbrsrq_m_n_s16): Remove.
4897         (vbrsrq_m_n_u8): Remove.
4898         (vbrsrq_m_n_u32): Remove.
4899         (vbrsrq_m_n_u16): Remove.
4900         (vbrsrq_m_n_f32): Remove.
4901         (vbrsrq_m_n_f16): Remove.
4902         (vbrsrq_x_n_s8): Remove.
4903         (vbrsrq_x_n_s16): Remove.
4904         (vbrsrq_x_n_s32): Remove.
4905         (vbrsrq_x_n_u8): Remove.
4906         (vbrsrq_x_n_u16): Remove.
4907         (vbrsrq_x_n_u32): Remove.
4908         (vbrsrq_x_n_f16): Remove.
4909         (vbrsrq_x_n_f32): Remove.
4910         (__arm_vbrsrq_n_u8): Remove.
4911         (__arm_vbrsrq_n_s8): Remove.
4912         (__arm_vbrsrq_n_u16): Remove.
4913         (__arm_vbrsrq_n_s16): Remove.
4914         (__arm_vbrsrq_n_u32): Remove.
4915         (__arm_vbrsrq_n_s32): Remove.
4916         (__arm_vbrsrq_m_n_s8): Remove.
4917         (__arm_vbrsrq_m_n_s32): Remove.
4918         (__arm_vbrsrq_m_n_s16): Remove.
4919         (__arm_vbrsrq_m_n_u8): Remove.
4920         (__arm_vbrsrq_m_n_u32): Remove.
4921         (__arm_vbrsrq_m_n_u16): Remove.
4922         (__arm_vbrsrq_x_n_s8): Remove.
4923         (__arm_vbrsrq_x_n_s16): Remove.
4924         (__arm_vbrsrq_x_n_s32): Remove.
4925         (__arm_vbrsrq_x_n_u8): Remove.
4926         (__arm_vbrsrq_x_n_u16): Remove.
4927         (__arm_vbrsrq_x_n_u32): Remove.
4928         (__arm_vbrsrq_n_f16): Remove.
4929         (__arm_vbrsrq_n_f32): Remove.
4930         (__arm_vbrsrq_m_n_f32): Remove.
4931         (__arm_vbrsrq_m_n_f16): Remove.
4932         (__arm_vbrsrq_x_n_f16): Remove.
4933         (__arm_vbrsrq_x_n_f32): Remove.
4934         (__arm_vbrsrq): Remove.
4935         (__arm_vbrsrq_m): Remove.
4936         (__arm_vbrsrq_x): Remove.
4938 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4940         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
4941         (mve_insn): Add vbrsr.
4942         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
4943         (@mve_<mve_insn>q_n_f<mode>): ... this.
4944         (mve_vbrsrq_n_<supf><mode>): Rename into ...
4945         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4946         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
4947         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4948         (mve_vbrsrq_m_n_f<mode>): Rename into ...
4949         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
4951 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4953         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
4954         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
4956 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4958         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
4959         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
4960         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
4961         * config/arm/arm_mve.h (vqshluq): Remove.
4962         (vqshluq_m): Remove.
4963         (vqshluq_n_s8): Remove.
4964         (vqshluq_n_s16): Remove.
4965         (vqshluq_n_s32): Remove.
4966         (vqshluq_m_n_s8): Remove.
4967         (vqshluq_m_n_s16): Remove.
4968         (vqshluq_m_n_s32): Remove.
4969         (__arm_vqshluq_n_s8): Remove.
4970         (__arm_vqshluq_n_s16): Remove.
4971         (__arm_vqshluq_n_s32): Remove.
4972         (__arm_vqshluq_m_n_s8): Remove.
4973         (__arm_vqshluq_m_n_s16): Remove.
4974         (__arm_vqshluq_m_n_s32): Remove.
4975         (__arm_vqshluq): Remove.
4976         (__arm_vqshluq_m): Remove.
4978 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4980         * config/arm/iterators.md (mve_insn): Add vqshlu.
4981         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
4982         (VQSHLUQ_M_N, VQSHLUQ_N): New.
4983         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
4984         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4985         (mve_vqshluq_m_n_s<mode>): Change name into ...
4986         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4988 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4990         * config/arm/arm-mve-builtins-shapes.cc
4991         (binary_lshift_unsigned): New.
4992         * config/arm/arm-mve-builtins-shapes.h
4993         (binary_lshift_unsigned): New.
4995 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
4997         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
4998         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
4999         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
5000         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
5001         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
5002         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
5003         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
5004         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
5005         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
5006         (vrmlaldavhaxq): Remove.
5007         (vrmlsldavhaq): Remove.
5008         (vrmlsldavhaxq): Remove.
5009         (vrmlaldavhaq_p): Remove.
5010         (vrmlaldavhaxq_p): Remove.
5011         (vrmlsldavhaq_p): Remove.
5012         (vrmlsldavhaxq_p): Remove.
5013         (vrmlaldavhaq_s32): Remove.
5014         (vrmlaldavhaq_u32): Remove.
5015         (vrmlaldavhaxq_s32): Remove.
5016         (vrmlsldavhaq_s32): Remove.
5017         (vrmlsldavhaxq_s32): Remove.
5018         (vrmlaldavhaq_p_s32): Remove.
5019         (vrmlaldavhaq_p_u32): Remove.
5020         (vrmlaldavhaxq_p_s32): Remove.
5021         (vrmlsldavhaq_p_s32): Remove.
5022         (vrmlsldavhaxq_p_s32): Remove.
5023         (__arm_vrmlaldavhaq_s32): Remove.
5024         (__arm_vrmlaldavhaq_u32): Remove.
5025         (__arm_vrmlaldavhaxq_s32): Remove.
5026         (__arm_vrmlsldavhaq_s32): Remove.
5027         (__arm_vrmlsldavhaxq_s32): Remove.
5028         (__arm_vrmlaldavhaq_p_s32): Remove.
5029         (__arm_vrmlaldavhaq_p_u32): Remove.
5030         (__arm_vrmlaldavhaxq_p_s32): Remove.
5031         (__arm_vrmlsldavhaq_p_s32): Remove.
5032         (__arm_vrmlsldavhaxq_p_s32): Remove.
5033         (__arm_vrmlaldavhaq): Remove.
5034         (__arm_vrmlaldavhaxq): Remove.
5035         (__arm_vrmlsldavhaq): Remove.
5036         (__arm_vrmlsldavhaxq): Remove.
5037         (__arm_vrmlaldavhaq_p): Remove.
5038         (__arm_vrmlaldavhaxq_p): Remove.
5039         (__arm_vrmlsldavhaq_p): Remove.
5040         (__arm_vrmlsldavhaxq_p): Remove.
5042 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
5044         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
5045         (MVE_VRMLxLDAVHAxQ_P): New.
5046         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
5047         vrmlsldavhax.
5048         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
5049         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
5050         VRMLALDAVHAQ_P_S.
5051         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
5052         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
5053         (mve_vrmlsldavhaq_sv4si): Merge into ...
5054         (@mve_<mve_insn>q_<supf>v4si): ... this.
5055         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
5056         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
5057         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
5058         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
5060 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
5062         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
5063         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
5064         New.
5065         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
5066         * config/arm/arm_mve.h (vqdmulltq): Remove.
5067         (vqdmullbq): Remove.
5068         (vqdmullbq_m): Remove.
5069         (vqdmulltq_m): Remove.
5070         (vqdmulltq_s16): Remove.
5071         (vqdmulltq_n_s16): Remove.
5072         (vqdmullbq_s16): Remove.
5073         (vqdmullbq_n_s16): Remove.
5074         (vqdmulltq_s32): Remove.
5075         (vqdmulltq_n_s32): Remove.
5076         (vqdmullbq_s32): Remove.
5077         (vqdmullbq_n_s32): Remove.
5078         (vqdmullbq_m_n_s32): Remove.
5079         (vqdmullbq_m_n_s16): Remove.
5080         (vqdmullbq_m_s32): Remove.
5081         (vqdmullbq_m_s16): Remove.
5082         (vqdmulltq_m_n_s32): Remove.
5083         (vqdmulltq_m_n_s16): Remove.
5084         (vqdmulltq_m_s32): Remove.
5085         (vqdmulltq_m_s16): Remove.
5086         (__arm_vqdmulltq_s16): Remove.
5087         (__arm_vqdmulltq_n_s16): Remove.
5088         (__arm_vqdmullbq_s16): Remove.
5089         (__arm_vqdmullbq_n_s16): Remove.
5090         (__arm_vqdmulltq_s32): Remove.
5091         (__arm_vqdmulltq_n_s32): Remove.
5092         (__arm_vqdmullbq_s32): Remove.
5093         (__arm_vqdmullbq_n_s32): Remove.
5094         (__arm_vqdmullbq_m_n_s32): Remove.
5095         (__arm_vqdmullbq_m_n_s16): Remove.
5096         (__arm_vqdmullbq_m_s32): Remove.
5097         (__arm_vqdmullbq_m_s16): Remove.
5098         (__arm_vqdmulltq_m_n_s32): Remove.
5099         (__arm_vqdmulltq_m_n_s16): Remove.
5100         (__arm_vqdmulltq_m_s32): Remove.
5101         (__arm_vqdmulltq_m_s16): Remove.
5102         (__arm_vqdmulltq): Remove.
5103         (__arm_vqdmullbq): Remove.
5104         (__arm_vqdmullbq_m): Remove.
5105         (__arm_vqdmulltq_m): Remove.
5107 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
5109         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
5110         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
5111         (mve_insn): Add vqdmullb, vqdmullt.
5112         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
5113         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
5114         VQDMULLTQ_N_S.
5115         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
5116         (mve_vqdmulltq_n_s<mode>): Merge into ...
5117         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5118         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
5119         (@mve_<mve_insn>q_<supf><mode>): ... this.
5120         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
5121         ...
5122         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5123         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
5124         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5126 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
5128         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
5129         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
5131 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
5133         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
5134         Drop unused parameter.
5135         (riscv_select_multilib): Ditto.
5136         (riscv_compute_multilib): Update call site of
5137         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
5139 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
5141         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
5142         * config/riscv/riscv-protos.h (expand_vec_init): New function.
5143         * config/riscv/riscv-v.cc (class rvv_builder): New class.
5144         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
5145         (rvv_builder::get_merged_repeating_sequence): Ditto.
5146         (expand_vector_init_insert_elems): Ditto.
5147         (expand_vec_init): Ditto.
5148         * config/riscv/vector-iterators.md: New attribute.
5150 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
5152         * config/rs6000/rs6000-builtins.def
5153         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
5154         to xsiexpdp_di.
5155         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
5156         xsiexpdpf to xsiexpdpf_di.
5157         * config/rs6000/vsx.md (xsiexpdp): Rename to...
5158         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
5159         replace TARGET_64BIT with TARGET_POWERPC64.
5160         (xsiexpdpf): Rename to...
5161         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
5162         replace TARGET_64BIT with TARGET_POWERPC64.
5164 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
5166         * config/rs6000/rs6000-builtins.def
5167         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
5168         long long.
5169         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
5170         TARGET_POWERPC64.
5172 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
5174         * config/rs6000/rs6000-builtins.def
5175         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
5176         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
5177         to power9 catalog.
5178         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
5179         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
5180         TARGET_64BIT check.
5181         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
5182         requirement when it has a 64-bit argument.
5184 2023-05-12  Pan Li  <pan2.li@intel.com>
5185             Richard Sandiford  <richard.sandiford@arm.com>
5186             Richard Biener  <rguenther@suse.de>
5187             Jakub Jelinek  <jakub@redhat.com>
5189         * mux-utils.h: Add overload operator == and != for pointer_mux.
5190         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
5191         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
5192         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
5193         (dv_as_decl): Ditto.
5194         (dv_as_opaque): Removed due to unnecessary.
5195         (struct variable_hasher): Take decl_or_value as compare_type.
5196         (variable_hasher::equal): Diito.
5197         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
5198         (dv_from_value): Ditto.
5199         (attrs_list_member):  Ditto.
5200         (vars_copy): Ditto.
5201         (var_reg_decl_set): Ditto.
5202         (var_reg_delete_and_set): Ditto.
5203         (find_loc_in_1pdv): Ditto.
5204         (canonicalize_values_star): Ditto.
5205         (variable_post_merge_new_vals): Ditto.
5206         (dump_onepart_variable_differences): Ditto.
5207         (variable_different_p): Ditto.
5208         (set_slot_part): Ditto.
5209         (clobber_slot_part): Ditto.
5210         (clobber_variable_part): Ditto.
5212 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
5214         * match.pd: simplify vector shift + bit_and + multiply.
5216 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5218         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
5219         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
5220         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
5221         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
5222         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
5223         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
5224         * config/arm/arm-mve-builtins.cc
5225         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
5226         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
5227         * config/arm/arm_mve.h (vqrdmlashq): Remove.
5228         (vqrdmlahq): Remove.
5229         (vqdmlashq): Remove.
5230         (vqdmlahq): Remove.
5231         (vmlasq): Remove.
5232         (vmlaq): Remove.
5233         (vmlaq_m): Remove.
5234         (vmlasq_m): Remove.
5235         (vqdmlashq_m): Remove.
5236         (vqdmlahq_m): Remove.
5237         (vqrdmlahq_m): Remove.
5238         (vqrdmlashq_m): Remove.
5239         (vmlasq_n_u8): Remove.
5240         (vmlaq_n_u8): Remove.
5241         (vqrdmlashq_n_s8): Remove.
5242         (vqrdmlahq_n_s8): Remove.
5243         (vqdmlahq_n_s8): Remove.
5244         (vqdmlashq_n_s8): Remove.
5245         (vmlasq_n_s8): Remove.
5246         (vmlaq_n_s8): Remove.
5247         (vmlasq_n_u16): Remove.
5248         (vmlaq_n_u16): Remove.
5249         (vqrdmlashq_n_s16): Remove.
5250         (vqrdmlahq_n_s16): Remove.
5251         (vqdmlashq_n_s16): Remove.
5252         (vqdmlahq_n_s16): Remove.
5253         (vmlasq_n_s16): Remove.
5254         (vmlaq_n_s16): Remove.
5255         (vmlasq_n_u32): Remove.
5256         (vmlaq_n_u32): Remove.
5257         (vqrdmlashq_n_s32): Remove.
5258         (vqrdmlahq_n_s32): Remove.
5259         (vqdmlashq_n_s32): Remove.
5260         (vqdmlahq_n_s32): Remove.
5261         (vmlasq_n_s32): Remove.
5262         (vmlaq_n_s32): Remove.
5263         (vmlaq_m_n_s8): Remove.
5264         (vmlaq_m_n_s32): Remove.
5265         (vmlaq_m_n_s16): Remove.
5266         (vmlaq_m_n_u8): Remove.
5267         (vmlaq_m_n_u32): Remove.
5268         (vmlaq_m_n_u16): Remove.
5269         (vmlasq_m_n_s8): Remove.
5270         (vmlasq_m_n_s32): Remove.
5271         (vmlasq_m_n_s16): Remove.
5272         (vmlasq_m_n_u8): Remove.
5273         (vmlasq_m_n_u32): Remove.
5274         (vmlasq_m_n_u16): Remove.
5275         (vqdmlashq_m_n_s8): Remove.
5276         (vqdmlashq_m_n_s32): Remove.
5277         (vqdmlashq_m_n_s16): Remove.
5278         (vqdmlahq_m_n_s8): Remove.
5279         (vqdmlahq_m_n_s32): Remove.
5280         (vqdmlahq_m_n_s16): Remove.
5281         (vqrdmlahq_m_n_s8): Remove.
5282         (vqrdmlahq_m_n_s32): Remove.
5283         (vqrdmlahq_m_n_s16): Remove.
5284         (vqrdmlashq_m_n_s8): Remove.
5285         (vqrdmlashq_m_n_s32): Remove.
5286         (vqrdmlashq_m_n_s16): Remove.
5287         (__arm_vmlasq_n_u8): Remove.
5288         (__arm_vmlaq_n_u8): Remove.
5289         (__arm_vqrdmlashq_n_s8): Remove.
5290         (__arm_vqdmlashq_n_s8): Remove.
5291         (__arm_vqrdmlahq_n_s8): Remove.
5292         (__arm_vqdmlahq_n_s8): Remove.
5293         (__arm_vmlasq_n_s8): Remove.
5294         (__arm_vmlaq_n_s8): Remove.
5295         (__arm_vmlasq_n_u16): Remove.
5296         (__arm_vmlaq_n_u16): Remove.
5297         (__arm_vqrdmlashq_n_s16): Remove.
5298         (__arm_vqdmlashq_n_s16): Remove.
5299         (__arm_vqrdmlahq_n_s16): Remove.
5300         (__arm_vqdmlahq_n_s16): Remove.
5301         (__arm_vmlasq_n_s16): Remove.
5302         (__arm_vmlaq_n_s16): Remove.
5303         (__arm_vmlasq_n_u32): Remove.
5304         (__arm_vmlaq_n_u32): Remove.
5305         (__arm_vqrdmlashq_n_s32): Remove.
5306         (__arm_vqdmlashq_n_s32): Remove.
5307         (__arm_vqrdmlahq_n_s32): Remove.
5308         (__arm_vqdmlahq_n_s32): Remove.
5309         (__arm_vmlasq_n_s32): Remove.
5310         (__arm_vmlaq_n_s32): Remove.
5311         (__arm_vmlaq_m_n_s8): Remove.
5312         (__arm_vmlaq_m_n_s32): Remove.
5313         (__arm_vmlaq_m_n_s16): Remove.
5314         (__arm_vmlaq_m_n_u8): Remove.
5315         (__arm_vmlaq_m_n_u32): Remove.
5316         (__arm_vmlaq_m_n_u16): Remove.
5317         (__arm_vmlasq_m_n_s8): Remove.
5318         (__arm_vmlasq_m_n_s32): Remove.
5319         (__arm_vmlasq_m_n_s16): Remove.
5320         (__arm_vmlasq_m_n_u8): Remove.
5321         (__arm_vmlasq_m_n_u32): Remove.
5322         (__arm_vmlasq_m_n_u16): Remove.
5323         (__arm_vqdmlahq_m_n_s8): Remove.
5324         (__arm_vqdmlahq_m_n_s32): Remove.
5325         (__arm_vqdmlahq_m_n_s16): Remove.
5326         (__arm_vqrdmlahq_m_n_s8): Remove.
5327         (__arm_vqrdmlahq_m_n_s32): Remove.
5328         (__arm_vqrdmlahq_m_n_s16): Remove.
5329         (__arm_vqrdmlashq_m_n_s8): Remove.
5330         (__arm_vqrdmlashq_m_n_s32): Remove.
5331         (__arm_vqrdmlashq_m_n_s16): Remove.
5332         (__arm_vqdmlashq_m_n_s8): Remove.
5333         (__arm_vqdmlashq_m_n_s16): Remove.
5334         (__arm_vqdmlashq_m_n_s32): Remove.
5335         (__arm_vmlasq): Remove.
5336         (__arm_vmlaq): Remove.
5337         (__arm_vqrdmlashq): Remove.
5338         (__arm_vqdmlashq): Remove.
5339         (__arm_vqrdmlahq): Remove.
5340         (__arm_vqdmlahq): Remove.
5341         (__arm_vmlaq_m): Remove.
5342         (__arm_vmlasq_m): Remove.
5343         (__arm_vqdmlahq_m): Remove.
5344         (__arm_vqrdmlahq_m): Remove.
5345         (__arm_vqrdmlashq_m): Remove.
5346         (__arm_vqdmlashq_m): Remove.
5348 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5350         * config/arm/iterators.md (MVE_VMLxQ_N): New.
5351         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
5352         vqrdmlash.
5353         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
5354         VQRDMLASHQ_N_S.
5355         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
5356         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
5357         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
5358         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
5359         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5361 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5363         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
5364         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
5366 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5368         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
5369         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5370         (vqrdmlsdhxq): New.
5371         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
5372         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5373         (vqrdmlsdhxq): New.
5374         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
5375         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5376         (vqrdmlsdhxq): New.
5377         * config/arm/arm-mve-builtins.cc
5378         (function_instance::has_inactive_argument): Handle vqrdmladhq,
5379         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
5380         vqdmlsdhq, vqdmlsdhxq.
5381         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
5382         (vqrdmlsdhq): Remove.
5383         (vqrdmladhxq): Remove.
5384         (vqrdmladhq): Remove.
5385         (vqdmlsdhxq): Remove.
5386         (vqdmlsdhq): Remove.
5387         (vqdmladhxq): Remove.
5388         (vqdmladhq): Remove.
5389         (vqdmladhq_m): Remove.
5390         (vqdmladhxq_m): Remove.
5391         (vqdmlsdhq_m): Remove.
5392         (vqdmlsdhxq_m): Remove.
5393         (vqrdmladhq_m): Remove.
5394         (vqrdmladhxq_m): Remove.
5395         (vqrdmlsdhq_m): Remove.
5396         (vqrdmlsdhxq_m): Remove.
5397         (vqrdmlsdhxq_s8): Remove.
5398         (vqrdmlsdhq_s8): Remove.
5399         (vqrdmladhxq_s8): Remove.
5400         (vqrdmladhq_s8): Remove.
5401         (vqdmlsdhxq_s8): Remove.
5402         (vqdmlsdhq_s8): Remove.
5403         (vqdmladhxq_s8): Remove.
5404         (vqdmladhq_s8): Remove.
5405         (vqrdmlsdhxq_s16): Remove.
5406         (vqrdmlsdhq_s16): Remove.
5407         (vqrdmladhxq_s16): Remove.
5408         (vqrdmladhq_s16): Remove.
5409         (vqdmlsdhxq_s16): Remove.
5410         (vqdmlsdhq_s16): Remove.
5411         (vqdmladhxq_s16): Remove.
5412         (vqdmladhq_s16): Remove.
5413         (vqrdmlsdhxq_s32): Remove.
5414         (vqrdmlsdhq_s32): Remove.
5415         (vqrdmladhxq_s32): Remove.
5416         (vqrdmladhq_s32): Remove.
5417         (vqdmlsdhxq_s32): Remove.
5418         (vqdmlsdhq_s32): Remove.
5419         (vqdmladhxq_s32): Remove.
5420         (vqdmladhq_s32): Remove.
5421         (vqdmladhq_m_s8): Remove.
5422         (vqdmladhq_m_s32): Remove.
5423         (vqdmladhq_m_s16): Remove.
5424         (vqdmladhxq_m_s8): Remove.
5425         (vqdmladhxq_m_s32): Remove.
5426         (vqdmladhxq_m_s16): Remove.
5427         (vqdmlsdhq_m_s8): Remove.
5428         (vqdmlsdhq_m_s32): Remove.
5429         (vqdmlsdhq_m_s16): Remove.
5430         (vqdmlsdhxq_m_s8): Remove.
5431         (vqdmlsdhxq_m_s32): Remove.
5432         (vqdmlsdhxq_m_s16): Remove.
5433         (vqrdmladhq_m_s8): Remove.
5434         (vqrdmladhq_m_s32): Remove.
5435         (vqrdmladhq_m_s16): Remove.
5436         (vqrdmladhxq_m_s8): Remove.
5437         (vqrdmladhxq_m_s32): Remove.
5438         (vqrdmladhxq_m_s16): Remove.
5439         (vqrdmlsdhq_m_s8): Remove.
5440         (vqrdmlsdhq_m_s32): Remove.
5441         (vqrdmlsdhq_m_s16): Remove.
5442         (vqrdmlsdhxq_m_s8): Remove.
5443         (vqrdmlsdhxq_m_s32): Remove.
5444         (vqrdmlsdhxq_m_s16): Remove.
5445         (__arm_vqrdmlsdhxq_s8): Remove.
5446         (__arm_vqrdmlsdhq_s8): Remove.
5447         (__arm_vqrdmladhxq_s8): Remove.
5448         (__arm_vqrdmladhq_s8): Remove.
5449         (__arm_vqdmlsdhxq_s8): Remove.
5450         (__arm_vqdmlsdhq_s8): Remove.
5451         (__arm_vqdmladhxq_s8): Remove.
5452         (__arm_vqdmladhq_s8): Remove.
5453         (__arm_vqrdmlsdhxq_s16): Remove.
5454         (__arm_vqrdmlsdhq_s16): Remove.
5455         (__arm_vqrdmladhxq_s16): Remove.
5456         (__arm_vqrdmladhq_s16): Remove.
5457         (__arm_vqdmlsdhxq_s16): Remove.
5458         (__arm_vqdmlsdhq_s16): Remove.
5459         (__arm_vqdmladhxq_s16): Remove.
5460         (__arm_vqdmladhq_s16): Remove.
5461         (__arm_vqrdmlsdhxq_s32): Remove.
5462         (__arm_vqrdmlsdhq_s32): Remove.
5463         (__arm_vqrdmladhxq_s32): Remove.
5464         (__arm_vqrdmladhq_s32): Remove.
5465         (__arm_vqdmlsdhxq_s32): Remove.
5466         (__arm_vqdmlsdhq_s32): Remove.
5467         (__arm_vqdmladhxq_s32): Remove.
5468         (__arm_vqdmladhq_s32): Remove.
5469         (__arm_vqdmladhq_m_s8): Remove.
5470         (__arm_vqdmladhq_m_s32): Remove.
5471         (__arm_vqdmladhq_m_s16): Remove.
5472         (__arm_vqdmladhxq_m_s8): Remove.
5473         (__arm_vqdmladhxq_m_s32): Remove.
5474         (__arm_vqdmladhxq_m_s16): Remove.
5475         (__arm_vqdmlsdhq_m_s8): Remove.
5476         (__arm_vqdmlsdhq_m_s32): Remove.
5477         (__arm_vqdmlsdhq_m_s16): Remove.
5478         (__arm_vqdmlsdhxq_m_s8): Remove.
5479         (__arm_vqdmlsdhxq_m_s32): Remove.
5480         (__arm_vqdmlsdhxq_m_s16): Remove.
5481         (__arm_vqrdmladhq_m_s8): Remove.
5482         (__arm_vqrdmladhq_m_s32): Remove.
5483         (__arm_vqrdmladhq_m_s16): Remove.
5484         (__arm_vqrdmladhxq_m_s8): Remove.
5485         (__arm_vqrdmladhxq_m_s32): Remove.
5486         (__arm_vqrdmladhxq_m_s16): Remove.
5487         (__arm_vqrdmlsdhq_m_s8): Remove.
5488         (__arm_vqrdmlsdhq_m_s32): Remove.
5489         (__arm_vqrdmlsdhq_m_s16): Remove.
5490         (__arm_vqrdmlsdhxq_m_s8): Remove.
5491         (__arm_vqrdmlsdhxq_m_s32): Remove.
5492         (__arm_vqrdmlsdhxq_m_s16): Remove.
5493         (__arm_vqrdmlsdhxq): Remove.
5494         (__arm_vqrdmlsdhq): Remove.
5495         (__arm_vqrdmladhxq): Remove.
5496         (__arm_vqrdmladhq): Remove.
5497         (__arm_vqdmlsdhxq): Remove.
5498         (__arm_vqdmlsdhq): Remove.
5499         (__arm_vqdmladhxq): Remove.
5500         (__arm_vqdmladhq): Remove.
5501         (__arm_vqdmladhq_m): Remove.
5502         (__arm_vqdmladhxq_m): Remove.
5503         (__arm_vqdmlsdhq_m): Remove.
5504         (__arm_vqdmlsdhxq_m): Remove.
5505         (__arm_vqrdmladhq_m): Remove.
5506         (__arm_vqrdmladhxq_m): Remove.
5507         (__arm_vqrdmlsdhq_m): Remove.
5508         (__arm_vqrdmlsdhxq_m): Remove.
5510 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5512         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
5513         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
5514         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
5515         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
5516         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
5517         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
5518         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
5519         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
5520         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
5521         (mve_vqdmladhq_s<mode>): Merge into ...
5522         (@mve_<mve_insn>q_<supf><mode>): ... this.
5524 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5526         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
5527         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
5529 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5531         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
5532         (vmlsldavaq, vmlsldavaxq): New.
5533         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
5534         (vmlsldavaq, vmlsldavaxq): New.
5535         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
5536         (vmlsldavaq, vmlsldavaxq): New.
5537         * config/arm/arm_mve.h (vmlaldavaq): Remove.
5538         (vmlaldavaxq): Remove.
5539         (vmlsldavaq): Remove.
5540         (vmlsldavaxq): Remove.
5541         (vmlaldavaq_p): Remove.
5542         (vmlaldavaxq_p): Remove.
5543         (vmlsldavaq_p): Remove.
5544         (vmlsldavaxq_p): Remove.
5545         (vmlaldavaq_s16): Remove.
5546         (vmlaldavaxq_s16): Remove.
5547         (vmlsldavaq_s16): Remove.
5548         (vmlsldavaxq_s16): Remove.
5549         (vmlaldavaq_u16): Remove.
5550         (vmlaldavaq_s32): Remove.
5551         (vmlaldavaxq_s32): Remove.
5552         (vmlsldavaq_s32): Remove.
5553         (vmlsldavaxq_s32): Remove.
5554         (vmlaldavaq_u32): Remove.
5555         (vmlaldavaq_p_s32): Remove.
5556         (vmlaldavaq_p_s16): Remove.
5557         (vmlaldavaq_p_u32): Remove.
5558         (vmlaldavaq_p_u16): Remove.
5559         (vmlaldavaxq_p_s32): Remove.
5560         (vmlaldavaxq_p_s16): Remove.
5561         (vmlsldavaq_p_s32): Remove.
5562         (vmlsldavaq_p_s16): Remove.
5563         (vmlsldavaxq_p_s32): Remove.
5564         (vmlsldavaxq_p_s16): Remove.
5565         (__arm_vmlaldavaq_s16): Remove.
5566         (__arm_vmlaldavaxq_s16): Remove.
5567         (__arm_vmlsldavaq_s16): Remove.
5568         (__arm_vmlsldavaxq_s16): Remove.
5569         (__arm_vmlaldavaq_u16): Remove.
5570         (__arm_vmlaldavaq_s32): Remove.
5571         (__arm_vmlaldavaxq_s32): Remove.
5572         (__arm_vmlsldavaq_s32): Remove.
5573         (__arm_vmlsldavaxq_s32): Remove.
5574         (__arm_vmlaldavaq_u32): Remove.
5575         (__arm_vmlaldavaq_p_s32): Remove.
5576         (__arm_vmlaldavaq_p_s16): Remove.
5577         (__arm_vmlaldavaq_p_u32): Remove.
5578         (__arm_vmlaldavaq_p_u16): Remove.
5579         (__arm_vmlaldavaxq_p_s32): Remove.
5580         (__arm_vmlaldavaxq_p_s16): Remove.
5581         (__arm_vmlsldavaq_p_s32): Remove.
5582         (__arm_vmlsldavaq_p_s16): Remove.
5583         (__arm_vmlsldavaxq_p_s32): Remove.
5584         (__arm_vmlsldavaxq_p_s16): Remove.
5585         (__arm_vmlaldavaq): Remove.
5586         (__arm_vmlaldavaxq): Remove.
5587         (__arm_vmlsldavaq): Remove.
5588         (__arm_vmlsldavaxq): Remove.
5589         (__arm_vmlaldavaq_p): Remove.
5590         (__arm_vmlaldavaxq_p): Remove.
5591         (__arm_vmlsldavaq_p): Remove.
5592         (__arm_vmlsldavaxq_p): Remove.
5594 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5596         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
5597         New.
5598         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
5599         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
5600         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
5601         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
5602         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
5603         (mve_vmlaldavaxq_s<mode>): Merge into ...
5604         (@mve_<mve_insn>q_<supf><mode>): ... this.
5605         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
5606         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
5607         ...
5608         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5610 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5612         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
5613         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
5615 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5617         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
5618         (vrmlsldavhq, vrmlsldavhxq): New.
5619         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
5620         (vrmlsldavhq, vrmlsldavhxq): New.
5621         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
5622         (vrmlsldavhq, vrmlsldavhxq): New.
5623         * config/arm/arm-mve-builtins-functions.h
5624         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
5625         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
5626         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
5627         (vrmlsldavhxq): Remove.
5628         (vrmlsldavhq): Remove.
5629         (vrmlaldavhxq): Remove.
5630         (vrmlaldavhq_p): Remove.
5631         (vrmlaldavhxq_p): Remove.
5632         (vrmlsldavhq_p): Remove.
5633         (vrmlsldavhxq_p): Remove.
5634         (vrmlaldavhq_u32): Remove.
5635         (vrmlsldavhxq_s32): Remove.
5636         (vrmlsldavhq_s32): Remove.
5637         (vrmlaldavhxq_s32): Remove.
5638         (vrmlaldavhq_s32): Remove.
5639         (vrmlaldavhq_p_s32): Remove.
5640         (vrmlaldavhxq_p_s32): Remove.
5641         (vrmlsldavhq_p_s32): Remove.
5642         (vrmlsldavhxq_p_s32): Remove.
5643         (vrmlaldavhq_p_u32): Remove.
5644         (__arm_vrmlaldavhq_u32): Remove.
5645         (__arm_vrmlsldavhxq_s32): Remove.
5646         (__arm_vrmlsldavhq_s32): Remove.
5647         (__arm_vrmlaldavhxq_s32): Remove.
5648         (__arm_vrmlaldavhq_s32): Remove.
5649         (__arm_vrmlaldavhq_p_s32): Remove.
5650         (__arm_vrmlaldavhxq_p_s32): Remove.
5651         (__arm_vrmlsldavhq_p_s32): Remove.
5652         (__arm_vrmlsldavhxq_p_s32): Remove.
5653         (__arm_vrmlaldavhq_p_u32): Remove.
5654         (__arm_vrmlaldavhq): Remove.
5655         (__arm_vrmlsldavhxq): Remove.
5656         (__arm_vrmlsldavhq): Remove.
5657         (__arm_vrmlaldavhxq): Remove.
5658         (__arm_vrmlaldavhq_p): Remove.
5659         (__arm_vrmlaldavhxq_p): Remove.
5660         (__arm_vrmlsldavhq_p): Remove.
5661         (__arm_vrmlsldavhxq_p): Remove.
5663 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5665         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
5666         New.
5667         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
5668         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
5669         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
5670         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
5671         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
5672         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
5673         (@mve_<mve_insn>q_<supf>v4si): ... this.
5674         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
5675         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
5676         into ...
5677         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
5679 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5681         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
5682         (vmlsldavq, vmlsldavxq): New.
5683         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
5684         (vmlsldavq, vmlsldavxq): New.
5685         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
5686         (vmlsldavq, vmlsldavxq): New.
5687         * config/arm/arm_mve.h (vmlaldavq): Remove.
5688         (vmlsldavxq): Remove.
5689         (vmlsldavq): Remove.
5690         (vmlaldavxq): Remove.
5691         (vmlaldavq_p): Remove.
5692         (vmlaldavxq_p): Remove.
5693         (vmlsldavq_p): Remove.
5694         (vmlsldavxq_p): Remove.
5695         (vmlaldavq_u16): Remove.
5696         (vmlsldavxq_s16): Remove.
5697         (vmlsldavq_s16): Remove.
5698         (vmlaldavxq_s16): Remove.
5699         (vmlaldavq_s16): Remove.
5700         (vmlaldavq_u32): Remove.
5701         (vmlsldavxq_s32): Remove.
5702         (vmlsldavq_s32): Remove.
5703         (vmlaldavxq_s32): Remove.
5704         (vmlaldavq_s32): Remove.
5705         (vmlaldavq_p_s16): Remove.
5706         (vmlaldavxq_p_s16): Remove.
5707         (vmlsldavq_p_s16): Remove.
5708         (vmlsldavxq_p_s16): Remove.
5709         (vmlaldavq_p_u16): Remove.
5710         (vmlaldavq_p_s32): Remove.
5711         (vmlaldavxq_p_s32): Remove.
5712         (vmlsldavq_p_s32): Remove.
5713         (vmlsldavxq_p_s32): Remove.
5714         (vmlaldavq_p_u32): Remove.
5715         (__arm_vmlaldavq_u16): Remove.
5716         (__arm_vmlsldavxq_s16): Remove.
5717         (__arm_vmlsldavq_s16): Remove.
5718         (__arm_vmlaldavxq_s16): Remove.
5719         (__arm_vmlaldavq_s16): Remove.
5720         (__arm_vmlaldavq_u32): Remove.
5721         (__arm_vmlsldavxq_s32): Remove.
5722         (__arm_vmlsldavq_s32): Remove.
5723         (__arm_vmlaldavxq_s32): Remove.
5724         (__arm_vmlaldavq_s32): Remove.
5725         (__arm_vmlaldavq_p_s16): Remove.
5726         (__arm_vmlaldavxq_p_s16): Remove.
5727         (__arm_vmlsldavq_p_s16): Remove.
5728         (__arm_vmlsldavxq_p_s16): Remove.
5729         (__arm_vmlaldavq_p_u16): Remove.
5730         (__arm_vmlaldavq_p_s32): Remove.
5731         (__arm_vmlaldavxq_p_s32): Remove.
5732         (__arm_vmlsldavq_p_s32): Remove.
5733         (__arm_vmlsldavxq_p_s32): Remove.
5734         (__arm_vmlaldavq_p_u32): Remove.
5735         (__arm_vmlaldavq): Remove.
5736         (__arm_vmlsldavxq): Remove.
5737         (__arm_vmlsldavq): Remove.
5738         (__arm_vmlaldavxq): Remove.
5739         (__arm_vmlaldavq_p): Remove.
5740         (__arm_vmlaldavxq_p): Remove.
5741         (__arm_vmlsldavq_p): Remove.
5742         (__arm_vmlsldavxq_p): Remove.
5744 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5746         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
5747         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
5748         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
5749         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
5750         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
5751         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
5752         (mve_vmlsldavxq_s<mode>): Merge into ...
5753         (@mve_<mve_insn>q_<supf><mode>): ... this.
5754         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
5755         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
5756         ...
5757         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5759 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5761         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
5762         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
5764 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5766         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
5767         * config/arm/arm-mve-builtins-base.def (vabavq): New.
5768         * config/arm/arm-mve-builtins-base.h (vabavq): New.
5769         * config/arm/arm_mve.h (vabavq): Remove.
5770         (vabavq_p): Remove.
5771         (vabavq_s8): Remove.
5772         (vabavq_s16): Remove.
5773         (vabavq_s32): Remove.
5774         (vabavq_u8): Remove.
5775         (vabavq_u16): Remove.
5776         (vabavq_u32): Remove.
5777         (vabavq_p_s8): Remove.
5778         (vabavq_p_u8): Remove.
5779         (vabavq_p_s16): Remove.
5780         (vabavq_p_u16): Remove.
5781         (vabavq_p_s32): Remove.
5782         (vabavq_p_u32): Remove.
5783         (__arm_vabavq_s8): Remove.
5784         (__arm_vabavq_s16): Remove.
5785         (__arm_vabavq_s32): Remove.
5786         (__arm_vabavq_u8): Remove.
5787         (__arm_vabavq_u16): Remove.
5788         (__arm_vabavq_u32): Remove.
5789         (__arm_vabavq_p_s8): Remove.
5790         (__arm_vabavq_p_u8): Remove.
5791         (__arm_vabavq_p_s16): Remove.
5792         (__arm_vabavq_p_u16): Remove.
5793         (__arm_vabavq_p_s32): Remove.
5794         (__arm_vabavq_p_u32): Remove.
5795         (__arm_vabavq): Remove.
5796         (__arm_vabavq_p): Remove.
5798 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5800         * config/arm/iterators.md (mve_insn): Add vabav.
5801         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
5802         (@mve_<mve_insn>q_<supf><mode>): ... this,.
5803         (mve_vabavq_p_<supf><mode>): Rename into ...
5804         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
5806 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5808         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
5809         (vmlsdavaq, vmlsdavaxq): New.
5810         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
5811         (vmlsdavaq, vmlsdavaxq): New.
5812         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
5813         (vmlsdavaq, vmlsdavaxq): New.
5814         * config/arm/arm_mve.h (vmladavaq): Remove.
5815         (vmlsdavaxq): Remove.
5816         (vmlsdavaq): Remove.
5817         (vmladavaxq): Remove.
5818         (vmladavaq_p): Remove.
5819         (vmladavaxq_p): Remove.
5820         (vmlsdavaq_p): Remove.
5821         (vmlsdavaxq_p): Remove.
5822         (vmladavaq_u8): Remove.
5823         (vmlsdavaxq_s8): Remove.
5824         (vmlsdavaq_s8): Remove.
5825         (vmladavaxq_s8): Remove.
5826         (vmladavaq_s8): Remove.
5827         (vmladavaq_u16): Remove.
5828         (vmlsdavaxq_s16): Remove.
5829         (vmlsdavaq_s16): Remove.
5830         (vmladavaxq_s16): Remove.
5831         (vmladavaq_s16): Remove.
5832         (vmladavaq_u32): Remove.
5833         (vmlsdavaxq_s32): Remove.
5834         (vmlsdavaq_s32): Remove.
5835         (vmladavaxq_s32): Remove.
5836         (vmladavaq_s32): Remove.
5837         (vmladavaq_p_s8): Remove.
5838         (vmladavaq_p_s32): Remove.
5839         (vmladavaq_p_s16): Remove.
5840         (vmladavaq_p_u8): Remove.
5841         (vmladavaq_p_u32): Remove.
5842         (vmladavaq_p_u16): Remove.
5843         (vmladavaxq_p_s8): Remove.
5844         (vmladavaxq_p_s32): Remove.
5845         (vmladavaxq_p_s16): Remove.
5846         (vmlsdavaq_p_s8): Remove.
5847         (vmlsdavaq_p_s32): Remove.
5848         (vmlsdavaq_p_s16): Remove.
5849         (vmlsdavaxq_p_s8): Remove.
5850         (vmlsdavaxq_p_s32): Remove.
5851         (vmlsdavaxq_p_s16): Remove.
5852         (__arm_vmladavaq_u8): Remove.
5853         (__arm_vmlsdavaxq_s8): Remove.
5854         (__arm_vmlsdavaq_s8): Remove.
5855         (__arm_vmladavaxq_s8): Remove.
5856         (__arm_vmladavaq_s8): Remove.
5857         (__arm_vmladavaq_u16): Remove.
5858         (__arm_vmlsdavaxq_s16): Remove.
5859         (__arm_vmlsdavaq_s16): Remove.
5860         (__arm_vmladavaxq_s16): Remove.
5861         (__arm_vmladavaq_s16): Remove.
5862         (__arm_vmladavaq_u32): Remove.
5863         (__arm_vmlsdavaxq_s32): Remove.
5864         (__arm_vmlsdavaq_s32): Remove.
5865         (__arm_vmladavaxq_s32): Remove.
5866         (__arm_vmladavaq_s32): Remove.
5867         (__arm_vmladavaq_p_s8): Remove.
5868         (__arm_vmladavaq_p_s32): Remove.
5869         (__arm_vmladavaq_p_s16): Remove.
5870         (__arm_vmladavaq_p_u8): Remove.
5871         (__arm_vmladavaq_p_u32): Remove.
5872         (__arm_vmladavaq_p_u16): Remove.
5873         (__arm_vmladavaxq_p_s8): Remove.
5874         (__arm_vmladavaxq_p_s32): Remove.
5875         (__arm_vmladavaxq_p_s16): Remove.
5876         (__arm_vmlsdavaq_p_s8): Remove.
5877         (__arm_vmlsdavaq_p_s32): Remove.
5878         (__arm_vmlsdavaq_p_s16): Remove.
5879         (__arm_vmlsdavaxq_p_s8): Remove.
5880         (__arm_vmlsdavaxq_p_s32): Remove.
5881         (__arm_vmlsdavaxq_p_s16): Remove.
5882         (__arm_vmladavaq): Remove.
5883         (__arm_vmlsdavaxq): Remove.
5884         (__arm_vmlsdavaq): Remove.
5885         (__arm_vmladavaxq): Remove.
5886         (__arm_vmladavaq_p): Remove.
5887         (__arm_vmladavaxq_p): Remove.
5888         (__arm_vmlsdavaq_p): Remove.
5889         (__arm_vmlsdavaxq_p): Remove.
5891 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5893         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
5894         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
5896 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5898         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
5899         (vmlsdavq, vmlsdavxq): New.
5900         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
5901         (vmlsdavq, vmlsdavxq): New.
5902         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
5903         (vmlsdavq, vmlsdavxq): New.
5904         * config/arm/arm_mve.h (vmladavq): Remove.
5905         (vmlsdavxq): Remove.
5906         (vmlsdavq): Remove.
5907         (vmladavxq): Remove.
5908         (vmladavq_p): Remove.
5909         (vmlsdavxq_p): Remove.
5910         (vmlsdavq_p): Remove.
5911         (vmladavxq_p): Remove.
5912         (vmladavq_u8): Remove.
5913         (vmlsdavxq_s8): Remove.
5914         (vmlsdavq_s8): Remove.
5915         (vmladavxq_s8): Remove.
5916         (vmladavq_s8): Remove.
5917         (vmladavq_u16): Remove.
5918         (vmlsdavxq_s16): Remove.
5919         (vmlsdavq_s16): Remove.
5920         (vmladavxq_s16): Remove.
5921         (vmladavq_s16): Remove.
5922         (vmladavq_u32): Remove.
5923         (vmlsdavxq_s32): Remove.
5924         (vmlsdavq_s32): Remove.
5925         (vmladavxq_s32): Remove.
5926         (vmladavq_s32): Remove.
5927         (vmladavq_p_u8): Remove.
5928         (vmlsdavxq_p_s8): Remove.
5929         (vmlsdavq_p_s8): Remove.
5930         (vmladavxq_p_s8): Remove.
5931         (vmladavq_p_s8): Remove.
5932         (vmladavq_p_u16): Remove.
5933         (vmlsdavxq_p_s16): Remove.
5934         (vmlsdavq_p_s16): Remove.
5935         (vmladavxq_p_s16): Remove.
5936         (vmladavq_p_s16): Remove.
5937         (vmladavq_p_u32): Remove.
5938         (vmlsdavxq_p_s32): Remove.
5939         (vmlsdavq_p_s32): Remove.
5940         (vmladavxq_p_s32): Remove.
5941         (vmladavq_p_s32): Remove.
5942         (__arm_vmladavq_u8): Remove.
5943         (__arm_vmlsdavxq_s8): Remove.
5944         (__arm_vmlsdavq_s8): Remove.
5945         (__arm_vmladavxq_s8): Remove.
5946         (__arm_vmladavq_s8): Remove.
5947         (__arm_vmladavq_u16): Remove.
5948         (__arm_vmlsdavxq_s16): Remove.
5949         (__arm_vmlsdavq_s16): Remove.
5950         (__arm_vmladavxq_s16): Remove.
5951         (__arm_vmladavq_s16): Remove.
5952         (__arm_vmladavq_u32): Remove.
5953         (__arm_vmlsdavxq_s32): Remove.
5954         (__arm_vmlsdavq_s32): Remove.
5955         (__arm_vmladavxq_s32): Remove.
5956         (__arm_vmladavq_s32): Remove.
5957         (__arm_vmladavq_p_u8): Remove.
5958         (__arm_vmlsdavxq_p_s8): Remove.
5959         (__arm_vmlsdavq_p_s8): Remove.
5960         (__arm_vmladavxq_p_s8): Remove.
5961         (__arm_vmladavq_p_s8): Remove.
5962         (__arm_vmladavq_p_u16): Remove.
5963         (__arm_vmlsdavxq_p_s16): Remove.
5964         (__arm_vmlsdavq_p_s16): Remove.
5965         (__arm_vmladavxq_p_s16): Remove.
5966         (__arm_vmladavq_p_s16): Remove.
5967         (__arm_vmladavq_p_u32): Remove.
5968         (__arm_vmlsdavxq_p_s32): Remove.
5969         (__arm_vmlsdavq_p_s32): Remove.
5970         (__arm_vmladavxq_p_s32): Remove.
5971         (__arm_vmladavq_p_s32): Remove.
5972         (__arm_vmladavq): Remove.
5973         (__arm_vmlsdavxq): Remove.
5974         (__arm_vmlsdavq): Remove.
5975         (__arm_vmladavxq): Remove.
5976         (__arm_vmladavq_p): Remove.
5977         (__arm_vmlsdavxq_p): Remove.
5978         (__arm_vmlsdavq_p): Remove.
5979         (__arm_vmladavxq_p): Remove.
5981 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
5983         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
5984         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
5985         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
5986         vmlsdavax, vmlsdav, vmlsdavx.
5987         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
5988         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
5989         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
5990         VMLSDAVXQ_S.
5991         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
5992         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
5993         (mve_vmlsdavxq_s<mode>): Merge into ...
5994         (@mve_<mve_insn>q_<supf><mode>): ... this.
5995         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
5996         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
5997         ...
5998         (@mve_<mve_insn>q_<supf><mode>): ... this.
5999         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
6000         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
6001         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6002         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
6003         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
6004         ...
6005         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6007 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6009         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
6010         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
6012 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6014         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
6015         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
6016         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
6017         * config/arm/arm_mve.h (vaddlvaq): Remove.
6018         (vaddlvaq_p): Remove.
6019         (vaddlvaq_u32): Remove.
6020         (vaddlvaq_s32): Remove.
6021         (vaddlvaq_p_s32): Remove.
6022         (vaddlvaq_p_u32): Remove.
6023         (__arm_vaddlvaq_u32): Remove.
6024         (__arm_vaddlvaq_s32): Remove.
6025         (__arm_vaddlvaq_p_s32): Remove.
6026         (__arm_vaddlvaq_p_u32): Remove.
6027         (__arm_vaddlvaq): Remove.
6028         (__arm_vaddlvaq_p): Remove.
6030 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6032         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
6033         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
6035 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6037         * config/arm/iterators.md (mve_insn): Add vaddlva.
6038         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
6039         (@mve_<mve_insn>q_<supf>v4si): ... this.
6040         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
6041         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
6043 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
6045         PR target/109807
6046         * config/i386/i386.cc (ix86_widen_mult_cost):
6047         Handle V4HImode and V2SImode.
6049 2023-05-11  Andrew Pinski  <apinski@marvell.com>
6051         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
6052         defined by a phi node with more than one uses, allow for the
6053         only uses are in that same defining statement.
6055 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
6057         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
6058         vector constants.
6060 2023-05-11  Pan Li  <pan2.li@intel.com>
6062         * config/riscv/vector.md: Add comments for simplifying to vmset.
6064 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
6066         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
6067         pattern.
6068         (v<optab><mode>3): Add vector shift pattern.
6069         * config/riscv/vector-iterators.md: New iterator.
6071 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
6073         * config/riscv/autovec.md: Use renamed functions.
6074         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
6075         (emit_vlmax_reg_op): To this.
6076         (emit_nonvlmax_op): Rename.
6077         (emit_len_op): To this.
6078         (emit_nonvlmax_binop): Rename.
6079         (emit_len_binop): To this.
6080         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
6081         (emit_pred_binop): Remove vlmax_p.
6082         (emit_vlmax_op): Rename.
6083         (emit_vlmax_reg_op): To this.
6084         (emit_nonvlmax_op): Rename.
6085         (emit_len_op): To this.
6086         (emit_nonvlmax_binop): Rename.
6087         (emit_len_binop): To this.
6088         (sew64_scalar_helper): Use renamed functions.
6089         (expand_tuple_move): Use renamed functions.
6090         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
6091         renamed functions.
6092         * config/riscv/vector.md: Use renamed functions.
6094 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
6095             Michael Collison  <collison@rivosinc.com>
6097         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
6098         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
6099         * config/riscv/riscv-v.cc (emit_pred_op): New function.
6100         (set_expander_dest_and_mask): New function.
6101         (emit_pred_binop): New function.
6102         (emit_nonvlmax_binop): New function.
6104 2023-05-11  Pan Li  <pan2.li@intel.com>
6106         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
6107         * gimple-loop-interchange.cc
6108         (tree_loop_interchange::map_inductions_to_loop): Ditto.
6109         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
6110         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
6111         * tree-ssa-loop-manip.cc (create_iv): Ditto.
6112         (tree_transform_and_unroll_loop): Ditto.
6113         (canonicalize_loop_ivs): Ditto.
6114         * tree-ssa-loop-manip.h (create_iv): Ditto.
6115         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
6116         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
6117         Ditto.
6118         (vect_set_loop_condition_normal): Ditto.
6119         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
6120         * tree-vect-stmts.cc (vectorizable_store): Ditto.
6121         (vectorizable_load): Ditto.
6123 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6125         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
6126         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
6127         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
6128         * config/arm/arm_mve.h (vmovlbq): Remove.
6129         (vmovltq): Remove.
6130         (vmovlbq_m): Remove.
6131         (vmovltq_m): Remove.
6132         (vmovlbq_x): Remove.
6133         (vmovltq_x): Remove.
6134         (vmovlbq_s8): Remove.
6135         (vmovlbq_s16): Remove.
6136         (vmovltq_s8): Remove.
6137         (vmovltq_s16): Remove.
6138         (vmovltq_u8): Remove.
6139         (vmovltq_u16): Remove.
6140         (vmovlbq_u8): Remove.
6141         (vmovlbq_u16): Remove.
6142         (vmovlbq_m_s8): Remove.
6143         (vmovltq_m_s8): Remove.
6144         (vmovlbq_m_u8): Remove.
6145         (vmovltq_m_u8): Remove.
6146         (vmovlbq_m_s16): Remove.
6147         (vmovltq_m_s16): Remove.
6148         (vmovlbq_m_u16): Remove.
6149         (vmovltq_m_u16): Remove.
6150         (vmovlbq_x_s8): Remove.
6151         (vmovlbq_x_s16): Remove.
6152         (vmovlbq_x_u8): Remove.
6153         (vmovlbq_x_u16): Remove.
6154         (vmovltq_x_s8): Remove.
6155         (vmovltq_x_s16): Remove.
6156         (vmovltq_x_u8): Remove.
6157         (vmovltq_x_u16): Remove.
6158         (__arm_vmovlbq_s8): Remove.
6159         (__arm_vmovlbq_s16): Remove.
6160         (__arm_vmovltq_s8): Remove.
6161         (__arm_vmovltq_s16): Remove.
6162         (__arm_vmovltq_u8): Remove.
6163         (__arm_vmovltq_u16): Remove.
6164         (__arm_vmovlbq_u8): Remove.
6165         (__arm_vmovlbq_u16): Remove.
6166         (__arm_vmovlbq_m_s8): Remove.
6167         (__arm_vmovltq_m_s8): Remove.
6168         (__arm_vmovlbq_m_u8): Remove.
6169         (__arm_vmovltq_m_u8): Remove.
6170         (__arm_vmovlbq_m_s16): Remove.
6171         (__arm_vmovltq_m_s16): Remove.
6172         (__arm_vmovlbq_m_u16): Remove.
6173         (__arm_vmovltq_m_u16): Remove.
6174         (__arm_vmovlbq_x_s8): Remove.
6175         (__arm_vmovlbq_x_s16): Remove.
6176         (__arm_vmovlbq_x_u8): Remove.
6177         (__arm_vmovlbq_x_u16): Remove.
6178         (__arm_vmovltq_x_s8): Remove.
6179         (__arm_vmovltq_x_s16): Remove.
6180         (__arm_vmovltq_x_u8): Remove.
6181         (__arm_vmovltq_x_u16): Remove.
6182         (__arm_vmovlbq): Remove.
6183         (__arm_vmovltq): Remove.
6184         (__arm_vmovlbq_m): Remove.
6185         (__arm_vmovltq_m): Remove.
6186         (__arm_vmovlbq_x): Remove.
6187         (__arm_vmovltq_x): Remove.
6189 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6191         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
6192         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
6194 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6196         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
6197         (VMOVLBQ, VMOVLTQ): Merge into ...
6198         (VMOVLxQ): ... this.
6199         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
6200         (VMOVLxQ_M): ... this.
6201         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
6202         (mve_vmovlbq_<supf><mode>): Merge into ...
6203         (@mve_<mve_insn>q_<supf><mode>): ... this.
6204         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
6205         into ...
6206         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6208 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6210         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
6211         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
6212         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
6213         * config/arm/arm-mve-builtins-functions.h
6214         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
6215         * config/arm/arm_mve.h (vaddlvq): Remove.
6216         (vaddlvq_p): Remove.
6217         (vaddlvq_s32): Remove.
6218         (vaddlvq_u32): Remove.
6219         (vaddlvq_p_s32): Remove.
6220         (vaddlvq_p_u32): Remove.
6221         (__arm_vaddlvq_s32): Remove.
6222         (__arm_vaddlvq_u32): Remove.
6223         (__arm_vaddlvq_p_s32): Remove.
6224         (__arm_vaddlvq_p_u32): Remove.
6225         (__arm_vaddlvq): Remove.
6226         (__arm_vaddlvq_p): Remove.
6228 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6230         * config/arm/iterators.md (mve_insn): Add vaddlv.
6231         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
6232         (@mve_<mve_insn>q_<supf>v4si): ... this.
6233         (mve_vaddlvq_p_<supf>v4si): Rename into ...
6234         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
6236 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6238         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
6239         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
6241 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6243         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
6244         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
6245         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
6246         * config/arm/arm_mve.h (vaddvaq): Remove.
6247         (vaddvaq_p): Remove.
6248         (vaddvaq_u8): Remove.
6249         (vaddvaq_s8): Remove.
6250         (vaddvaq_u16): Remove.
6251         (vaddvaq_s16): Remove.
6252         (vaddvaq_u32): Remove.
6253         (vaddvaq_s32): Remove.
6254         (vaddvaq_p_u8): Remove.
6255         (vaddvaq_p_s8): Remove.
6256         (vaddvaq_p_u16): Remove.
6257         (vaddvaq_p_s16): Remove.
6258         (vaddvaq_p_u32): Remove.
6259         (vaddvaq_p_s32): Remove.
6260         (__arm_vaddvaq_u8): Remove.
6261         (__arm_vaddvaq_s8): Remove.
6262         (__arm_vaddvaq_u16): Remove.
6263         (__arm_vaddvaq_s16): Remove.
6264         (__arm_vaddvaq_u32): Remove.
6265         (__arm_vaddvaq_s32): Remove.
6266         (__arm_vaddvaq_p_u8): Remove.
6267         (__arm_vaddvaq_p_s8): Remove.
6268         (__arm_vaddvaq_p_u16): Remove.
6269         (__arm_vaddvaq_p_s16): Remove.
6270         (__arm_vaddvaq_p_u32): Remove.
6271         (__arm_vaddvaq_p_s32): Remove.
6272         (__arm_vaddvaq): Remove.
6273         (__arm_vaddvaq_p): Remove.
6275 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6277         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
6278         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
6280 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6282         * config/arm/iterators.md (mve_insn): Add vaddva.
6283         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
6284         (@mve_<mve_insn>q_<supf><mode>): ... this.
6285         (mve_vaddvaq_p_<supf><mode>): Rename into ...
6286         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6288 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6290         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
6291         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
6292         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
6293         * config/arm/arm_mve.h (vaddvq): Remove.
6294         (vaddvq_p): Remove.
6295         (vaddvq_s8): Remove.
6296         (vaddvq_s16): Remove.
6297         (vaddvq_s32): Remove.
6298         (vaddvq_u8): Remove.
6299         (vaddvq_u16): Remove.
6300         (vaddvq_u32): Remove.
6301         (vaddvq_p_u8): Remove.
6302         (vaddvq_p_s8): Remove.
6303         (vaddvq_p_u16): Remove.
6304         (vaddvq_p_s16): Remove.
6305         (vaddvq_p_u32): Remove.
6306         (vaddvq_p_s32): Remove.
6307         (__arm_vaddvq_s8): Remove.
6308         (__arm_vaddvq_s16): Remove.
6309         (__arm_vaddvq_s32): Remove.
6310         (__arm_vaddvq_u8): Remove.
6311         (__arm_vaddvq_u16): Remove.
6312         (__arm_vaddvq_u32): Remove.
6313         (__arm_vaddvq_p_u8): Remove.
6314         (__arm_vaddvq_p_s8): Remove.
6315         (__arm_vaddvq_p_u16): Remove.
6316         (__arm_vaddvq_p_s16): Remove.
6317         (__arm_vaddvq_p_u32): Remove.
6318         (__arm_vaddvq_p_s32): Remove.
6319         (__arm_vaddvq): Remove.
6320         (__arm_vaddvq_p): Remove.
6322 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6324         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
6325         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
6327 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6329         * config/arm/iterators.md (mve_insn): Add vaddv.
6330         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
6331         (@mve_<mve_insn>q_<supf><mode>): ... this.
6332         (mve_vaddvq_p_<supf><mode>): Rename into ...
6333         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6334         * config/arm/vec-common.md: Use gen_mve_q instead of
6335         gen_mve_vaddvq.
6337 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6339         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
6340         (vdupq): New.
6341         * config/arm/arm-mve-builtins-base.def (vdupq): New.
6342         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
6343         * config/arm/arm_mve.h (vdupq_n): Remove.
6344         (vdupq_m): Remove.
6345         (vdupq_n_f16): Remove.
6346         (vdupq_n_f32): Remove.
6347         (vdupq_n_s8): Remove.
6348         (vdupq_n_s16): Remove.
6349         (vdupq_n_s32): Remove.
6350         (vdupq_n_u8): Remove.
6351         (vdupq_n_u16): Remove.
6352         (vdupq_n_u32): Remove.
6353         (vdupq_m_n_u8): Remove.
6354         (vdupq_m_n_s8): Remove.
6355         (vdupq_m_n_u16): Remove.
6356         (vdupq_m_n_s16): Remove.
6357         (vdupq_m_n_u32): Remove.
6358         (vdupq_m_n_s32): Remove.
6359         (vdupq_m_n_f16): Remove.
6360         (vdupq_m_n_f32): Remove.
6361         (vdupq_x_n_s8): Remove.
6362         (vdupq_x_n_s16): Remove.
6363         (vdupq_x_n_s32): Remove.
6364         (vdupq_x_n_u8): Remove.
6365         (vdupq_x_n_u16): Remove.
6366         (vdupq_x_n_u32): Remove.
6367         (vdupq_x_n_f16): Remove.
6368         (vdupq_x_n_f32): Remove.
6369         (__arm_vdupq_n_s8): Remove.
6370         (__arm_vdupq_n_s16): Remove.
6371         (__arm_vdupq_n_s32): Remove.
6372         (__arm_vdupq_n_u8): Remove.
6373         (__arm_vdupq_n_u16): Remove.
6374         (__arm_vdupq_n_u32): Remove.
6375         (__arm_vdupq_m_n_u8): Remove.
6376         (__arm_vdupq_m_n_s8): Remove.
6377         (__arm_vdupq_m_n_u16): Remove.
6378         (__arm_vdupq_m_n_s16): Remove.
6379         (__arm_vdupq_m_n_u32): Remove.
6380         (__arm_vdupq_m_n_s32): Remove.
6381         (__arm_vdupq_x_n_s8): Remove.
6382         (__arm_vdupq_x_n_s16): Remove.
6383         (__arm_vdupq_x_n_s32): Remove.
6384         (__arm_vdupq_x_n_u8): Remove.
6385         (__arm_vdupq_x_n_u16): Remove.
6386         (__arm_vdupq_x_n_u32): Remove.
6387         (__arm_vdupq_n_f16): Remove.
6388         (__arm_vdupq_n_f32): Remove.
6389         (__arm_vdupq_m_n_f16): Remove.
6390         (__arm_vdupq_m_n_f32): Remove.
6391         (__arm_vdupq_x_n_f16): Remove.
6392         (__arm_vdupq_x_n_f32): Remove.
6393         (__arm_vdupq_n): Remove.
6394         (__arm_vdupq_m): Remove.
6396 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6398         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
6399         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
6401 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6403         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
6404         (MVE_FP_N_VDUPQ_ONLY): New.
6405         (mve_insn): Add vdupq.
6406         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
6407         (@mve_<mve_insn>q_n_f<mode>): ... this.
6408         (mve_vdupq_n_<supf><mode>): Rename into ...
6409         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6410         (mve_vdupq_m_n_<supf><mode>): Rename into ...
6411         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6412         (mve_vdupq_m_n_f<mode>): Rename into ...
6413         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
6415 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6417         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
6418         New.
6419         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
6420         (vrev64q): New.
6421         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
6422         (vrev64q): New.
6423         * config/arm/arm_mve.h (vrev16q): Remove.
6424         (vrev32q): Remove.
6425         (vrev64q): Remove.
6426         (vrev64q_m): Remove.
6427         (vrev16q_m): Remove.
6428         (vrev32q_m): Remove.
6429         (vrev16q_x): Remove.
6430         (vrev32q_x): Remove.
6431         (vrev64q_x): Remove.
6432         (vrev64q_f16): Remove.
6433         (vrev64q_f32): Remove.
6434         (vrev32q_f16): Remove.
6435         (vrev16q_s8): Remove.
6436         (vrev32q_s8): Remove.
6437         (vrev32q_s16): Remove.
6438         (vrev64q_s8): Remove.
6439         (vrev64q_s16): Remove.
6440         (vrev64q_s32): Remove.
6441         (vrev64q_u8): Remove.
6442         (vrev64q_u16): Remove.
6443         (vrev64q_u32): Remove.
6444         (vrev32q_u8): Remove.
6445         (vrev32q_u16): Remove.
6446         (vrev16q_u8): Remove.
6447         (vrev64q_m_u8): Remove.
6448         (vrev64q_m_s8): Remove.
6449         (vrev64q_m_u16): Remove.
6450         (vrev64q_m_s16): Remove.
6451         (vrev64q_m_u32): Remove.
6452         (vrev64q_m_s32): Remove.
6453         (vrev16q_m_s8): Remove.
6454         (vrev32q_m_f16): Remove.
6455         (vrev16q_m_u8): Remove.
6456         (vrev32q_m_s8): Remove.
6457         (vrev64q_m_f16): Remove.
6458         (vrev32q_m_u8): Remove.
6459         (vrev32q_m_s16): Remove.
6460         (vrev64q_m_f32): Remove.
6461         (vrev32q_m_u16): Remove.
6462         (vrev16q_x_s8): Remove.
6463         (vrev16q_x_u8): Remove.
6464         (vrev32q_x_s8): Remove.
6465         (vrev32q_x_s16): Remove.
6466         (vrev32q_x_u8): Remove.
6467         (vrev32q_x_u16): Remove.
6468         (vrev64q_x_s8): Remove.
6469         (vrev64q_x_s16): Remove.
6470         (vrev64q_x_s32): Remove.
6471         (vrev64q_x_u8): Remove.
6472         (vrev64q_x_u16): Remove.
6473         (vrev64q_x_u32): Remove.
6474         (vrev32q_x_f16): Remove.
6475         (vrev64q_x_f16): Remove.
6476         (vrev64q_x_f32): Remove.
6477         (__arm_vrev16q_s8): Remove.
6478         (__arm_vrev32q_s8): Remove.
6479         (__arm_vrev32q_s16): Remove.
6480         (__arm_vrev64q_s8): Remove.
6481         (__arm_vrev64q_s16): Remove.
6482         (__arm_vrev64q_s32): Remove.
6483         (__arm_vrev64q_u8): Remove.
6484         (__arm_vrev64q_u16): Remove.
6485         (__arm_vrev64q_u32): Remove.
6486         (__arm_vrev32q_u8): Remove.
6487         (__arm_vrev32q_u16): Remove.
6488         (__arm_vrev16q_u8): Remove.
6489         (__arm_vrev64q_m_u8): Remove.
6490         (__arm_vrev64q_m_s8): Remove.
6491         (__arm_vrev64q_m_u16): Remove.
6492         (__arm_vrev64q_m_s16): Remove.
6493         (__arm_vrev64q_m_u32): Remove.
6494         (__arm_vrev64q_m_s32): Remove.
6495         (__arm_vrev16q_m_s8): Remove.
6496         (__arm_vrev16q_m_u8): Remove.
6497         (__arm_vrev32q_m_s8): Remove.
6498         (__arm_vrev32q_m_u8): Remove.
6499         (__arm_vrev32q_m_s16): Remove.
6500         (__arm_vrev32q_m_u16): Remove.
6501         (__arm_vrev16q_x_s8): Remove.
6502         (__arm_vrev16q_x_u8): Remove.
6503         (__arm_vrev32q_x_s8): Remove.
6504         (__arm_vrev32q_x_s16): Remove.
6505         (__arm_vrev32q_x_u8): Remove.
6506         (__arm_vrev32q_x_u16): Remove.
6507         (__arm_vrev64q_x_s8): Remove.
6508         (__arm_vrev64q_x_s16): Remove.
6509         (__arm_vrev64q_x_s32): Remove.
6510         (__arm_vrev64q_x_u8): Remove.
6511         (__arm_vrev64q_x_u16): Remove.
6512         (__arm_vrev64q_x_u32): Remove.
6513         (__arm_vrev64q_f16): Remove.
6514         (__arm_vrev64q_f32): Remove.
6515         (__arm_vrev32q_f16): Remove.
6516         (__arm_vrev32q_m_f16): Remove.
6517         (__arm_vrev64q_m_f16): Remove.
6518         (__arm_vrev64q_m_f32): Remove.
6519         (__arm_vrev32q_x_f16): Remove.
6520         (__arm_vrev64q_x_f16): Remove.
6521         (__arm_vrev64q_x_f32): Remove.
6522         (__arm_vrev16q): Remove.
6523         (__arm_vrev32q): Remove.
6524         (__arm_vrev64q): Remove.
6525         (__arm_vrev64q_m): Remove.
6526         (__arm_vrev16q_m): Remove.
6527         (__arm_vrev32q_m): Remove.
6528         (__arm_vrev16q_x): Remove.
6529         (__arm_vrev32q_x): Remove.
6530         (__arm_vrev64q_x): Remove.
6532 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6534         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
6535         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
6536         (MVE_FP_M_VREV32Q_ONLY): New iterators.
6537         (mve_insn): Add vrev16q, vrev32q, vrev64q.
6538         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
6539         (@mve_<mve_insn>q_f<mode>): ... this
6540         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
6541         (mve_vrev64q_<supf><mode>): Rename into ...
6542         (@mve_<mve_insn>q_<supf><mode>): ... this.
6543         (mve_vrev32q_<supf><mode>): Rename into
6544         @mve_<mve_insn>q_<supf><mode>.
6545         (mve_vrev16q_<supf>v16qi): Rename into
6546         @mve_<mve_insn>q_<supf><mode>.
6547         (mve_vrev64q_m_<supf><mode>): Rename into
6548         @mve_<mve_insn>q_m_<supf><mode>.
6549         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
6550         (mve_vrev32q_m_<supf><mode>): Rename into
6551         @mve_<mve_insn>q_m_<supf><mode>.
6552         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
6553         (mve_vrev16q_m_<supf>v16qi): Rename into
6554         @mve_<mve_insn>q_m_<supf><mode>.
6556 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6558         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
6559         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
6560         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
6561         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
6562         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
6563         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
6564         * config/arm/arm-mve-builtins-functions.h (class
6565         unspec_based_mve_function_exact_insn_vcmp): New.
6566         * config/arm/arm-mve-builtins.cc
6567         (function_instance::has_inactive_argument): Handle vcmp.
6568         * config/arm/arm_mve.h (vcmpneq): Remove.
6569         (vcmphiq): Remove.
6570         (vcmpeqq): Remove.
6571         (vcmpcsq): Remove.
6572         (vcmpltq): Remove.
6573         (vcmpleq): Remove.
6574         (vcmpgtq): Remove.
6575         (vcmpgeq): Remove.
6576         (vcmpneq_m): Remove.
6577         (vcmphiq_m): Remove.
6578         (vcmpeqq_m): Remove.
6579         (vcmpcsq_m): Remove.
6580         (vcmpcsq_m_n): Remove.
6581         (vcmpltq_m): Remove.
6582         (vcmpleq_m): Remove.
6583         (vcmpgtq_m): Remove.
6584         (vcmpgeq_m): Remove.
6585         (vcmpneq_s8): Remove.
6586         (vcmpneq_s16): Remove.
6587         (vcmpneq_s32): Remove.
6588         (vcmpneq_u8): Remove.
6589         (vcmpneq_u16): Remove.
6590         (vcmpneq_u32): Remove.
6591         (vcmpneq_n_u8): Remove.
6592         (vcmphiq_u8): Remove.
6593         (vcmphiq_n_u8): Remove.
6594         (vcmpeqq_u8): Remove.
6595         (vcmpeqq_n_u8): Remove.
6596         (vcmpcsq_u8): Remove.
6597         (vcmpcsq_n_u8): Remove.
6598         (vcmpneq_n_s8): Remove.
6599         (vcmpltq_s8): Remove.
6600         (vcmpltq_n_s8): Remove.
6601         (vcmpleq_s8): Remove.
6602         (vcmpleq_n_s8): Remove.
6603         (vcmpgtq_s8): Remove.
6604         (vcmpgtq_n_s8): Remove.
6605         (vcmpgeq_s8): Remove.
6606         (vcmpgeq_n_s8): Remove.
6607         (vcmpeqq_s8): Remove.
6608         (vcmpeqq_n_s8): Remove.
6609         (vcmpneq_n_u16): Remove.
6610         (vcmphiq_u16): Remove.
6611         (vcmphiq_n_u16): Remove.
6612         (vcmpeqq_u16): Remove.
6613         (vcmpeqq_n_u16): Remove.
6614         (vcmpcsq_u16): Remove.
6615         (vcmpcsq_n_u16): Remove.
6616         (vcmpneq_n_s16): Remove.
6617         (vcmpltq_s16): Remove.
6618         (vcmpltq_n_s16): Remove.
6619         (vcmpleq_s16): Remove.
6620         (vcmpleq_n_s16): Remove.
6621         (vcmpgtq_s16): Remove.
6622         (vcmpgtq_n_s16): Remove.
6623         (vcmpgeq_s16): Remove.
6624         (vcmpgeq_n_s16): Remove.
6625         (vcmpeqq_s16): Remove.
6626         (vcmpeqq_n_s16): Remove.
6627         (vcmpneq_n_u32): Remove.
6628         (vcmphiq_u32): Remove.
6629         (vcmphiq_n_u32): Remove.
6630         (vcmpeqq_u32): Remove.
6631         (vcmpeqq_n_u32): Remove.
6632         (vcmpcsq_u32): Remove.
6633         (vcmpcsq_n_u32): Remove.
6634         (vcmpneq_n_s32): Remove.
6635         (vcmpltq_s32): Remove.
6636         (vcmpltq_n_s32): Remove.
6637         (vcmpleq_s32): Remove.
6638         (vcmpleq_n_s32): Remove.
6639         (vcmpgtq_s32): Remove.
6640         (vcmpgtq_n_s32): Remove.
6641         (vcmpgeq_s32): Remove.
6642         (vcmpgeq_n_s32): Remove.
6643         (vcmpeqq_s32): Remove.
6644         (vcmpeqq_n_s32): Remove.
6645         (vcmpneq_n_f16): Remove.
6646         (vcmpneq_f16): Remove.
6647         (vcmpltq_n_f16): Remove.
6648         (vcmpltq_f16): Remove.
6649         (vcmpleq_n_f16): Remove.
6650         (vcmpleq_f16): Remove.
6651         (vcmpgtq_n_f16): Remove.
6652         (vcmpgtq_f16): Remove.
6653         (vcmpgeq_n_f16): Remove.
6654         (vcmpgeq_f16): Remove.
6655         (vcmpeqq_n_f16): Remove.
6656         (vcmpeqq_f16): Remove.
6657         (vcmpneq_n_f32): Remove.
6658         (vcmpneq_f32): Remove.
6659         (vcmpltq_n_f32): Remove.
6660         (vcmpltq_f32): Remove.
6661         (vcmpleq_n_f32): Remove.
6662         (vcmpleq_f32): Remove.
6663         (vcmpgtq_n_f32): Remove.
6664         (vcmpgtq_f32): Remove.
6665         (vcmpgeq_n_f32): Remove.
6666         (vcmpgeq_f32): Remove.
6667         (vcmpeqq_n_f32): Remove.
6668         (vcmpeqq_f32): Remove.
6669         (vcmpeqq_m_f16): Remove.
6670         (vcmpeqq_m_f32): Remove.
6671         (vcmpneq_m_u8): Remove.
6672         (vcmpneq_m_n_u8): Remove.
6673         (vcmphiq_m_u8): Remove.
6674         (vcmphiq_m_n_u8): Remove.
6675         (vcmpeqq_m_u8): Remove.
6676         (vcmpeqq_m_n_u8): Remove.
6677         (vcmpcsq_m_u8): Remove.
6678         (vcmpcsq_m_n_u8): Remove.
6679         (vcmpneq_m_s8): Remove.
6680         (vcmpneq_m_n_s8): Remove.
6681         (vcmpltq_m_s8): Remove.
6682         (vcmpltq_m_n_s8): Remove.
6683         (vcmpleq_m_s8): Remove.
6684         (vcmpleq_m_n_s8): Remove.
6685         (vcmpgtq_m_s8): Remove.
6686         (vcmpgtq_m_n_s8): Remove.
6687         (vcmpgeq_m_s8): Remove.
6688         (vcmpgeq_m_n_s8): Remove.
6689         (vcmpeqq_m_s8): Remove.
6690         (vcmpeqq_m_n_s8): Remove.
6691         (vcmpneq_m_u16): Remove.
6692         (vcmpneq_m_n_u16): Remove.
6693         (vcmphiq_m_u16): Remove.
6694         (vcmphiq_m_n_u16): Remove.
6695         (vcmpeqq_m_u16): Remove.
6696         (vcmpeqq_m_n_u16): Remove.
6697         (vcmpcsq_m_u16): Remove.
6698         (vcmpcsq_m_n_u16): Remove.
6699         (vcmpneq_m_s16): Remove.
6700         (vcmpneq_m_n_s16): Remove.
6701         (vcmpltq_m_s16): Remove.
6702         (vcmpltq_m_n_s16): Remove.
6703         (vcmpleq_m_s16): Remove.
6704         (vcmpleq_m_n_s16): Remove.
6705         (vcmpgtq_m_s16): Remove.
6706         (vcmpgtq_m_n_s16): Remove.
6707         (vcmpgeq_m_s16): Remove.
6708         (vcmpgeq_m_n_s16): Remove.
6709         (vcmpeqq_m_s16): Remove.
6710         (vcmpeqq_m_n_s16): Remove.
6711         (vcmpneq_m_u32): Remove.
6712         (vcmpneq_m_n_u32): Remove.
6713         (vcmphiq_m_u32): Remove.
6714         (vcmphiq_m_n_u32): Remove.
6715         (vcmpeqq_m_u32): Remove.
6716         (vcmpeqq_m_n_u32): Remove.
6717         (vcmpcsq_m_u32): Remove.
6718         (vcmpcsq_m_n_u32): Remove.
6719         (vcmpneq_m_s32): Remove.
6720         (vcmpneq_m_n_s32): Remove.
6721         (vcmpltq_m_s32): Remove.
6722         (vcmpltq_m_n_s32): Remove.
6723         (vcmpleq_m_s32): Remove.
6724         (vcmpleq_m_n_s32): Remove.
6725         (vcmpgtq_m_s32): Remove.
6726         (vcmpgtq_m_n_s32): Remove.
6727         (vcmpgeq_m_s32): Remove.
6728         (vcmpgeq_m_n_s32): Remove.
6729         (vcmpeqq_m_s32): Remove.
6730         (vcmpeqq_m_n_s32): Remove.
6731         (vcmpeqq_m_n_f16): Remove.
6732         (vcmpgeq_m_f16): Remove.
6733         (vcmpgeq_m_n_f16): Remove.
6734         (vcmpgtq_m_f16): Remove.
6735         (vcmpgtq_m_n_f16): Remove.
6736         (vcmpleq_m_f16): Remove.
6737         (vcmpleq_m_n_f16): Remove.
6738         (vcmpltq_m_f16): Remove.
6739         (vcmpltq_m_n_f16): Remove.
6740         (vcmpneq_m_f16): Remove.
6741         (vcmpneq_m_n_f16): Remove.
6742         (vcmpeqq_m_n_f32): Remove.
6743         (vcmpgeq_m_f32): Remove.
6744         (vcmpgeq_m_n_f32): Remove.
6745         (vcmpgtq_m_f32): Remove.
6746         (vcmpgtq_m_n_f32): Remove.
6747         (vcmpleq_m_f32): Remove.
6748         (vcmpleq_m_n_f32): Remove.
6749         (vcmpltq_m_f32): Remove.
6750         (vcmpltq_m_n_f32): Remove.
6751         (vcmpneq_m_f32): Remove.
6752         (vcmpneq_m_n_f32): Remove.
6753         (__arm_vcmpneq_s8): Remove.
6754         (__arm_vcmpneq_s16): Remove.
6755         (__arm_vcmpneq_s32): Remove.
6756         (__arm_vcmpneq_u8): Remove.
6757         (__arm_vcmpneq_u16): Remove.
6758         (__arm_vcmpneq_u32): Remove.
6759         (__arm_vcmpneq_n_u8): Remove.
6760         (__arm_vcmphiq_u8): Remove.
6761         (__arm_vcmphiq_n_u8): Remove.
6762         (__arm_vcmpeqq_u8): Remove.
6763         (__arm_vcmpeqq_n_u8): Remove.
6764         (__arm_vcmpcsq_u8): Remove.
6765         (__arm_vcmpcsq_n_u8): Remove.
6766         (__arm_vcmpneq_n_s8): Remove.
6767         (__arm_vcmpltq_s8): Remove.
6768         (__arm_vcmpltq_n_s8): Remove.
6769         (__arm_vcmpleq_s8): Remove.
6770         (__arm_vcmpleq_n_s8): Remove.
6771         (__arm_vcmpgtq_s8): Remove.
6772         (__arm_vcmpgtq_n_s8): Remove.
6773         (__arm_vcmpgeq_s8): Remove.
6774         (__arm_vcmpgeq_n_s8): Remove.
6775         (__arm_vcmpeqq_s8): Remove.
6776         (__arm_vcmpeqq_n_s8): Remove.
6777         (__arm_vcmpneq_n_u16): Remove.
6778         (__arm_vcmphiq_u16): Remove.
6779         (__arm_vcmphiq_n_u16): Remove.
6780         (__arm_vcmpeqq_u16): Remove.
6781         (__arm_vcmpeqq_n_u16): Remove.
6782         (__arm_vcmpcsq_u16): Remove.
6783         (__arm_vcmpcsq_n_u16): Remove.
6784         (__arm_vcmpneq_n_s16): Remove.
6785         (__arm_vcmpltq_s16): Remove.
6786         (__arm_vcmpltq_n_s16): Remove.
6787         (__arm_vcmpleq_s16): Remove.
6788         (__arm_vcmpleq_n_s16): Remove.
6789         (__arm_vcmpgtq_s16): Remove.
6790         (__arm_vcmpgtq_n_s16): Remove.
6791         (__arm_vcmpgeq_s16): Remove.
6792         (__arm_vcmpgeq_n_s16): Remove.
6793         (__arm_vcmpeqq_s16): Remove.
6794         (__arm_vcmpeqq_n_s16): Remove.
6795         (__arm_vcmpneq_n_u32): Remove.
6796         (__arm_vcmphiq_u32): Remove.
6797         (__arm_vcmphiq_n_u32): Remove.
6798         (__arm_vcmpeqq_u32): Remove.
6799         (__arm_vcmpeqq_n_u32): Remove.
6800         (__arm_vcmpcsq_u32): Remove.
6801         (__arm_vcmpcsq_n_u32): Remove.
6802         (__arm_vcmpneq_n_s32): Remove.
6803         (__arm_vcmpltq_s32): Remove.
6804         (__arm_vcmpltq_n_s32): Remove.
6805         (__arm_vcmpleq_s32): Remove.
6806         (__arm_vcmpleq_n_s32): Remove.
6807         (__arm_vcmpgtq_s32): Remove.
6808         (__arm_vcmpgtq_n_s32): Remove.
6809         (__arm_vcmpgeq_s32): Remove.
6810         (__arm_vcmpgeq_n_s32): Remove.
6811         (__arm_vcmpeqq_s32): Remove.
6812         (__arm_vcmpeqq_n_s32): Remove.
6813         (__arm_vcmpneq_m_u8): Remove.
6814         (__arm_vcmpneq_m_n_u8): Remove.
6815         (__arm_vcmphiq_m_u8): Remove.
6816         (__arm_vcmphiq_m_n_u8): Remove.
6817         (__arm_vcmpeqq_m_u8): Remove.
6818         (__arm_vcmpeqq_m_n_u8): Remove.
6819         (__arm_vcmpcsq_m_u8): Remove.
6820         (__arm_vcmpcsq_m_n_u8): Remove.
6821         (__arm_vcmpneq_m_s8): Remove.
6822         (__arm_vcmpneq_m_n_s8): Remove.
6823         (__arm_vcmpltq_m_s8): Remove.
6824         (__arm_vcmpltq_m_n_s8): Remove.
6825         (__arm_vcmpleq_m_s8): Remove.
6826         (__arm_vcmpleq_m_n_s8): Remove.
6827         (__arm_vcmpgtq_m_s8): Remove.
6828         (__arm_vcmpgtq_m_n_s8): Remove.
6829         (__arm_vcmpgeq_m_s8): Remove.
6830         (__arm_vcmpgeq_m_n_s8): Remove.
6831         (__arm_vcmpeqq_m_s8): Remove.
6832         (__arm_vcmpeqq_m_n_s8): Remove.
6833         (__arm_vcmpneq_m_u16): Remove.
6834         (__arm_vcmpneq_m_n_u16): Remove.
6835         (__arm_vcmphiq_m_u16): Remove.
6836         (__arm_vcmphiq_m_n_u16): Remove.
6837         (__arm_vcmpeqq_m_u16): Remove.
6838         (__arm_vcmpeqq_m_n_u16): Remove.
6839         (__arm_vcmpcsq_m_u16): Remove.
6840         (__arm_vcmpcsq_m_n_u16): Remove.
6841         (__arm_vcmpneq_m_s16): Remove.
6842         (__arm_vcmpneq_m_n_s16): Remove.
6843         (__arm_vcmpltq_m_s16): Remove.
6844         (__arm_vcmpltq_m_n_s16): Remove.
6845         (__arm_vcmpleq_m_s16): Remove.
6846         (__arm_vcmpleq_m_n_s16): Remove.
6847         (__arm_vcmpgtq_m_s16): Remove.
6848         (__arm_vcmpgtq_m_n_s16): Remove.
6849         (__arm_vcmpgeq_m_s16): Remove.
6850         (__arm_vcmpgeq_m_n_s16): Remove.
6851         (__arm_vcmpeqq_m_s16): Remove.
6852         (__arm_vcmpeqq_m_n_s16): Remove.
6853         (__arm_vcmpneq_m_u32): Remove.
6854         (__arm_vcmpneq_m_n_u32): Remove.
6855         (__arm_vcmphiq_m_u32): Remove.
6856         (__arm_vcmphiq_m_n_u32): Remove.
6857         (__arm_vcmpeqq_m_u32): Remove.
6858         (__arm_vcmpeqq_m_n_u32): Remove.
6859         (__arm_vcmpcsq_m_u32): Remove.
6860         (__arm_vcmpcsq_m_n_u32): Remove.
6861         (__arm_vcmpneq_m_s32): Remove.
6862         (__arm_vcmpneq_m_n_s32): Remove.
6863         (__arm_vcmpltq_m_s32): Remove.
6864         (__arm_vcmpltq_m_n_s32): Remove.
6865         (__arm_vcmpleq_m_s32): Remove.
6866         (__arm_vcmpleq_m_n_s32): Remove.
6867         (__arm_vcmpgtq_m_s32): Remove.
6868         (__arm_vcmpgtq_m_n_s32): Remove.
6869         (__arm_vcmpgeq_m_s32): Remove.
6870         (__arm_vcmpgeq_m_n_s32): Remove.
6871         (__arm_vcmpeqq_m_s32): Remove.
6872         (__arm_vcmpeqq_m_n_s32): Remove.
6873         (__arm_vcmpneq_n_f16): Remove.
6874         (__arm_vcmpneq_f16): Remove.
6875         (__arm_vcmpltq_n_f16): Remove.
6876         (__arm_vcmpltq_f16): Remove.
6877         (__arm_vcmpleq_n_f16): Remove.
6878         (__arm_vcmpleq_f16): Remove.
6879         (__arm_vcmpgtq_n_f16): Remove.
6880         (__arm_vcmpgtq_f16): Remove.
6881         (__arm_vcmpgeq_n_f16): Remove.
6882         (__arm_vcmpgeq_f16): Remove.
6883         (__arm_vcmpeqq_n_f16): Remove.
6884         (__arm_vcmpeqq_f16): Remove.
6885         (__arm_vcmpneq_n_f32): Remove.
6886         (__arm_vcmpneq_f32): Remove.
6887         (__arm_vcmpltq_n_f32): Remove.
6888         (__arm_vcmpltq_f32): Remove.
6889         (__arm_vcmpleq_n_f32): Remove.
6890         (__arm_vcmpleq_f32): Remove.
6891         (__arm_vcmpgtq_n_f32): Remove.
6892         (__arm_vcmpgtq_f32): Remove.
6893         (__arm_vcmpgeq_n_f32): Remove.
6894         (__arm_vcmpgeq_f32): Remove.
6895         (__arm_vcmpeqq_n_f32): Remove.
6896         (__arm_vcmpeqq_f32): Remove.
6897         (__arm_vcmpeqq_m_f16): Remove.
6898         (__arm_vcmpeqq_m_f32): Remove.
6899         (__arm_vcmpeqq_m_n_f16): Remove.
6900         (__arm_vcmpgeq_m_f16): Remove.
6901         (__arm_vcmpgeq_m_n_f16): Remove.
6902         (__arm_vcmpgtq_m_f16): Remove.
6903         (__arm_vcmpgtq_m_n_f16): Remove.
6904         (__arm_vcmpleq_m_f16): Remove.
6905         (__arm_vcmpleq_m_n_f16): Remove.
6906         (__arm_vcmpltq_m_f16): Remove.
6907         (__arm_vcmpltq_m_n_f16): Remove.
6908         (__arm_vcmpneq_m_f16): Remove.
6909         (__arm_vcmpneq_m_n_f16): Remove.
6910         (__arm_vcmpeqq_m_n_f32): Remove.
6911         (__arm_vcmpgeq_m_f32): Remove.
6912         (__arm_vcmpgeq_m_n_f32): Remove.
6913         (__arm_vcmpgtq_m_f32): Remove.
6914         (__arm_vcmpgtq_m_n_f32): Remove.
6915         (__arm_vcmpleq_m_f32): Remove.
6916         (__arm_vcmpleq_m_n_f32): Remove.
6917         (__arm_vcmpltq_m_f32): Remove.
6918         (__arm_vcmpltq_m_n_f32): Remove.
6919         (__arm_vcmpneq_m_f32): Remove.
6920         (__arm_vcmpneq_m_n_f32): Remove.
6921         (__arm_vcmpneq): Remove.
6922         (__arm_vcmphiq): Remove.
6923         (__arm_vcmpeqq): Remove.
6924         (__arm_vcmpcsq): Remove.
6925         (__arm_vcmpltq): Remove.
6926         (__arm_vcmpleq): Remove.
6927         (__arm_vcmpgtq): Remove.
6928         (__arm_vcmpgeq): Remove.
6929         (__arm_vcmpneq_m): Remove.
6930         (__arm_vcmphiq_m): Remove.
6931         (__arm_vcmpeqq_m): Remove.
6932         (__arm_vcmpcsq_m): Remove.
6933         (__arm_vcmpltq_m): Remove.
6934         (__arm_vcmpleq_m): Remove.
6935         (__arm_vcmpgtq_m): Remove.
6936         (__arm_vcmpgeq_m): Remove.
6938 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6940         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
6941         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
6943 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
6945         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
6946         (MVE_CMP_M_N_F, mve_cmp_op1): New.
6947         (isu): Add VCMP*
6948         (supf): Likewise.
6949         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
6950         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
6951         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
6952         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
6953         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
6954         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
6955         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
6956         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
6957         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
6958         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
6959         ...
6960         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
6961         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
6962         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
6963         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
6964         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
6965         into ...
6966         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
6967         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
6968         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
6969         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
6970         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
6972 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
6974         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
6975         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
6976         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
6977         vice versa.
6979 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
6981         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
6982         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
6983         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
6984         Simplify parity(rotate(x,y)) as parity(x).
6986 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6988         * config/riscv/autovec.md (@vec_series<mode>): New pattern
6989         * config/riscv/riscv-protos.h (expand_vec_series): New function.
6990         * config/riscv/riscv-v.cc (emit_binop): Ditto.
6991         (emit_index_op): Ditto.
6992         (expand_vec_series): Ditto.
6993         (expand_const_vector): Add series vector handling.
6994         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
6996 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
6998         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
6999         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
7000         (*concat<mode><dwi>3_2): Likewise.
7001         (*concat<mode><dwi>3_3): Likewise.
7002         (*concat<mode><dwi>3_4): Likewise.
7003         (*concat<mode><dwi>3_5): Likewise.
7004         (*concat<mode><dwi>3_6): Likewise.
7005         (*concat<mode><dwi>3_7): Likewise.
7007 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
7009         PR target/92658
7010         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
7011         (<insn>v4qiv4hi2): New expander.
7012         (<insn>v2hiv2si2): Ditto.
7013         (<insn>v2qiv2si2): Ditto.
7014         (<insn>v2qiv2hi2): Ditto.
7016 2023-05-10  Jeff Law  <jlaw@ventanamicro>
7018         * config/h8300/constraints.md (Q): Make this a special memory
7019         constraint.
7020         (Zz): Similarly.
7022 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
7024         PR fortran/109788
7025         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
7026         if t is void_list_node.
7028 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7030         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
7031         (aarch64_sqmovun<mode>_insn_be): Delete.
7032         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
7033         (aarch64_sqmovun<mode>): Delete expander.
7035 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7037         PR target/99195
7038         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
7039         Rename to...
7040         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
7041         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
7042         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
7044 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7046         PR target/99195
7047         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
7048         Rename to...
7049         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
7050         (aarch64_<sur>qadd<mode>): Rename to...
7051         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
7053 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7055         * config/aarch64/aarch64-simd.md
7056         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
7057         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
7058         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
7059         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
7061 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7063         PR target/99195
7064         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
7065         (aarch64_xtn<mode>_insn_be): Likewise.
7066         (trunc<mode><Vnarrowq>2): Rename to...
7067         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
7068         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
7069         (aarch64_<su>qmovn<mode>): Likewise.
7070         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
7071         (aarch64_<su>qmovn<mode>_insn_le): Delete.
7072         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
7074 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
7076         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
7077         intruction replace null avl with (const_int 0).
7079 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7081         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
7082         incorrect codes.
7084 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7086         PR target/109773
7087         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
7088         (source_equal_p): Fix dead loop in vsetvl avl checking.
7090 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
7092         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
7093         of modeadjusted_dccr.
7095 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7097         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
7098         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
7099         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
7100         * config/arm/arm-mve-builtins.cc
7101         (function_instance::has_inactive_argument): Handle vmaxaq and
7102         vminaq.
7103         * config/arm/arm_mve.h (vminaq): Remove.
7104         (vmaxaq): Remove.
7105         (vminaq_m): Remove.
7106         (vmaxaq_m): Remove.
7107         (vminaq_s8): Remove.
7108         (vmaxaq_s8): Remove.
7109         (vminaq_s16): Remove.
7110         (vmaxaq_s16): Remove.
7111         (vminaq_s32): Remove.
7112         (vmaxaq_s32): Remove.
7113         (vminaq_m_s8): Remove.
7114         (vmaxaq_m_s8): Remove.
7115         (vminaq_m_s16): Remove.
7116         (vmaxaq_m_s16): Remove.
7117         (vminaq_m_s32): Remove.
7118         (vmaxaq_m_s32): Remove.
7119         (__arm_vminaq_s8): Remove.
7120         (__arm_vmaxaq_s8): Remove.
7121         (__arm_vminaq_s16): Remove.
7122         (__arm_vmaxaq_s16): Remove.
7123         (__arm_vminaq_s32): Remove.
7124         (__arm_vmaxaq_s32): Remove.
7125         (__arm_vminaq_m_s8): Remove.
7126         (__arm_vmaxaq_m_s8): Remove.
7127         (__arm_vminaq_m_s16): Remove.
7128         (__arm_vmaxaq_m_s16): Remove.
7129         (__arm_vminaq_m_s32): Remove.
7130         (__arm_vmaxaq_m_s32): Remove.
7131         (__arm_vminaq): Remove.
7132         (__arm_vmaxaq): Remove.
7133         (__arm_vminaq_m): Remove.
7134         (__arm_vmaxaq_m): Remove.
7136 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7138         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
7139         New.
7140         (mve_insn): Add vmaxa, vmina.
7141         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
7142         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
7143         Merge into ...
7144         (@mve_<mve_insn>q_<supf><mode>): ... this.
7145         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
7146         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7148 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7150         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
7151         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
7153 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7155         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
7156         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
7157         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
7158         * config/arm/arm-mve-builtins.cc
7159         (function_instance::has_inactive_argument): Handle vmaxnmaq and
7160         vminnmaq.
7161         * config/arm/arm_mve.h (vminnmaq): Remove.
7162         (vmaxnmaq): Remove.
7163         (vmaxnmaq_m): Remove.
7164         (vminnmaq_m): Remove.
7165         (vminnmaq_f16): Remove.
7166         (vmaxnmaq_f16): Remove.
7167         (vminnmaq_f32): Remove.
7168         (vmaxnmaq_f32): Remove.
7169         (vmaxnmaq_m_f16): Remove.
7170         (vminnmaq_m_f16): Remove.
7171         (vmaxnmaq_m_f32): Remove.
7172         (vminnmaq_m_f32): Remove.
7173         (__arm_vminnmaq_f16): Remove.
7174         (__arm_vmaxnmaq_f16): Remove.
7175         (__arm_vminnmaq_f32): Remove.
7176         (__arm_vmaxnmaq_f32): Remove.
7177         (__arm_vmaxnmaq_m_f16): Remove.
7178         (__arm_vminnmaq_m_f16): Remove.
7179         (__arm_vmaxnmaq_m_f32): Remove.
7180         (__arm_vminnmaq_m_f32): Remove.
7181         (__arm_vminnmaq): Remove.
7182         (__arm_vmaxnmaq): Remove.
7183         (__arm_vmaxnmaq_m): Remove.
7184         (__arm_vminnmaq_m): Remove.
7186 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7188         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
7189         (MVE_VMAXNMA_VMINNMAQ_M): New.
7190         (mve_insn): Add vmaxnma, vminnma.
7191         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
7192         Merge into ...
7193         (@mve_<mve_insn>q_f<mode>): ... this.
7194         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
7195         (@mve_<mve_insn>q_m_f<mode>): ... this.
7197 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7199         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
7200         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
7201         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
7202         (vminnmavq, vminnmvq): New.
7203         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
7204         (vminnmavq, vminnmvq): New.
7205         * config/arm/arm_mve.h (vminnmvq): Remove.
7206         (vminnmavq): Remove.
7207         (vmaxnmvq): Remove.
7208         (vmaxnmavq): Remove.
7209         (vmaxnmavq_p): Remove.
7210         (vmaxnmvq_p): Remove.
7211         (vminnmavq_p): Remove.
7212         (vminnmvq_p): Remove.
7213         (vminnmvq_f16): Remove.
7214         (vminnmavq_f16): Remove.
7215         (vmaxnmvq_f16): Remove.
7216         (vmaxnmavq_f16): Remove.
7217         (vminnmvq_f32): Remove.
7218         (vminnmavq_f32): Remove.
7219         (vmaxnmvq_f32): Remove.
7220         (vmaxnmavq_f32): Remove.
7221         (vmaxnmavq_p_f16): Remove.
7222         (vmaxnmvq_p_f16): Remove.
7223         (vminnmavq_p_f16): Remove.
7224         (vminnmvq_p_f16): Remove.
7225         (vmaxnmavq_p_f32): Remove.
7226         (vmaxnmvq_p_f32): Remove.
7227         (vminnmavq_p_f32): Remove.
7228         (vminnmvq_p_f32): Remove.
7229         (__arm_vminnmvq_f16): Remove.
7230         (__arm_vminnmavq_f16): Remove.
7231         (__arm_vmaxnmvq_f16): Remove.
7232         (__arm_vmaxnmavq_f16): Remove.
7233         (__arm_vminnmvq_f32): Remove.
7234         (__arm_vminnmavq_f32): Remove.
7235         (__arm_vmaxnmvq_f32): Remove.
7236         (__arm_vmaxnmavq_f32): Remove.
7237         (__arm_vmaxnmavq_p_f16): Remove.
7238         (__arm_vmaxnmvq_p_f16): Remove.
7239         (__arm_vminnmavq_p_f16): Remove.
7240         (__arm_vminnmvq_p_f16): Remove.
7241         (__arm_vmaxnmavq_p_f32): Remove.
7242         (__arm_vmaxnmvq_p_f32): Remove.
7243         (__arm_vminnmavq_p_f32): Remove.
7244         (__arm_vminnmvq_p_f32): Remove.
7245         (__arm_vminnmvq): Remove.
7246         (__arm_vminnmavq): Remove.
7247         (__arm_vmaxnmvq): Remove.
7248         (__arm_vmaxnmavq): Remove.
7249         (__arm_vmaxnmavq_p): Remove.
7250         (__arm_vmaxnmvq_p): Remove.
7251         (__arm_vminnmavq_p): Remove.
7252         (__arm_vminnmvq_p): Remove.
7253         (__arm_vmaxnmavq_m): Remove.
7254         (__arm_vmaxnmvq_m): Remove.
7256 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7258         * config/arm/arm-mve-builtins-functions.h
7259         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
7261 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7263         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
7264         (MVE_VMAXNMxV_MINNMxVQ_P): New.
7265         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
7266         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
7267         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
7268         (@mve_<mve_insn>q_f<mode>): ... this.
7269         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
7270         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
7271         (@mve_<mve_insn>q_p_f<mode>): ... this.
7273 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7275         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
7276         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
7277         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
7278         * config/arm/arm_mve.h (vminnmq): Remove.
7279         (vmaxnmq): Remove.
7280         (vmaxnmq_m): Remove.
7281         (vminnmq_m): Remove.
7282         (vminnmq_x): Remove.
7283         (vmaxnmq_x): Remove.
7284         (vminnmq_f16): Remove.
7285         (vmaxnmq_f16): Remove.
7286         (vminnmq_f32): Remove.
7287         (vmaxnmq_f32): Remove.
7288         (vmaxnmq_m_f32): Remove.
7289         (vmaxnmq_m_f16): Remove.
7290         (vminnmq_m_f32): Remove.
7291         (vminnmq_m_f16): Remove.
7292         (vminnmq_x_f16): Remove.
7293         (vminnmq_x_f32): Remove.
7294         (vmaxnmq_x_f16): Remove.
7295         (vmaxnmq_x_f32): Remove.
7296         (__arm_vminnmq_f16): Remove.
7297         (__arm_vmaxnmq_f16): Remove.
7298         (__arm_vminnmq_f32): Remove.
7299         (__arm_vmaxnmq_f32): Remove.
7300         (__arm_vmaxnmq_m_f32): Remove.
7301         (__arm_vmaxnmq_m_f16): Remove.
7302         (__arm_vminnmq_m_f32): Remove.
7303         (__arm_vminnmq_m_f16): Remove.
7304         (__arm_vminnmq_x_f16): Remove.
7305         (__arm_vminnmq_x_f32): Remove.
7306         (__arm_vmaxnmq_x_f16): Remove.
7307         (__arm_vmaxnmq_x_f32): Remove.
7308         (__arm_vminnmq): Remove.
7309         (__arm_vmaxnmq): Remove.
7310         (__arm_vmaxnmq_m): Remove.
7311         (__arm_vminnmq_m): Remove.
7312         (__arm_vminnmq_x): Remove.
7313         (__arm_vmaxnmq_x): Remove.
7315 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7317         * config/arm/iterators.md (MAX_MIN_F): New.
7318         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
7319         (mve_insn): Add vmaxnm, vminnm.
7320         (max_min_f_str): New.
7321         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
7322         Merge into ...
7323         (@mve_<max_min_f_str>q_f<mode>): ... this.
7324         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
7325         (@mve_<mve_insn>q_m_f<mode>): ... this.
7327 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7329         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
7330         (smax<mode>3): Likewise.
7332 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7334         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
7335         (FUNCTION_PRED_P_S): New.
7336         (vmaxavq, vminavq, vmaxvq, vminvq): New.
7337         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
7338         (vminvq): New.
7339         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
7340         (vminvq): New.
7341         * config/arm/arm_mve.h (vminvq): Remove.
7342         (vmaxvq): Remove.
7343         (vminvq_p): Remove.
7344         (vmaxvq_p): Remove.
7345         (vminvq_u8): Remove.
7346         (vmaxvq_u8): Remove.
7347         (vminvq_s8): Remove.
7348         (vmaxvq_s8): Remove.
7349         (vminvq_u16): Remove.
7350         (vmaxvq_u16): Remove.
7351         (vminvq_s16): Remove.
7352         (vmaxvq_s16): Remove.
7353         (vminvq_u32): Remove.
7354         (vmaxvq_u32): Remove.
7355         (vminvq_s32): Remove.
7356         (vmaxvq_s32): Remove.
7357         (vminvq_p_u8): Remove.
7358         (vmaxvq_p_u8): Remove.
7359         (vminvq_p_s8): Remove.
7360         (vmaxvq_p_s8): Remove.
7361         (vminvq_p_u16): Remove.
7362         (vmaxvq_p_u16): Remove.
7363         (vminvq_p_s16): Remove.
7364         (vmaxvq_p_s16): Remove.
7365         (vminvq_p_u32): Remove.
7366         (vmaxvq_p_u32): Remove.
7367         (vminvq_p_s32): Remove.
7368         (vmaxvq_p_s32): Remove.
7369         (__arm_vminvq_u8): Remove.
7370         (__arm_vmaxvq_u8): Remove.
7371         (__arm_vminvq_s8): Remove.
7372         (__arm_vmaxvq_s8): Remove.
7373         (__arm_vminvq_u16): Remove.
7374         (__arm_vmaxvq_u16): Remove.
7375         (__arm_vminvq_s16): Remove.
7376         (__arm_vmaxvq_s16): Remove.
7377         (__arm_vminvq_u32): Remove.
7378         (__arm_vmaxvq_u32): Remove.
7379         (__arm_vminvq_s32): Remove.
7380         (__arm_vmaxvq_s32): Remove.
7381         (__arm_vminvq_p_u8): Remove.
7382         (__arm_vmaxvq_p_u8): Remove.
7383         (__arm_vminvq_p_s8): Remove.
7384         (__arm_vmaxvq_p_s8): Remove.
7385         (__arm_vminvq_p_u16): Remove.
7386         (__arm_vmaxvq_p_u16): Remove.
7387         (__arm_vminvq_p_s16): Remove.
7388         (__arm_vmaxvq_p_s16): Remove.
7389         (__arm_vminvq_p_u32): Remove.
7390         (__arm_vmaxvq_p_u32): Remove.
7391         (__arm_vminvq_p_s32): Remove.
7392         (__arm_vmaxvq_p_s32): Remove.
7393         (__arm_vminvq): Remove.
7394         (__arm_vmaxvq): Remove.
7395         (__arm_vminvq_p): Remove.
7396         (__arm_vmaxvq_p): Remove.
7397         (vminavq): Remove.
7398         (vmaxavq): Remove.
7399         (vminavq_p): Remove.
7400         (vmaxavq_p): Remove.
7401         (vminavq_s8): Remove.
7402         (vmaxavq_s8): Remove.
7403         (vminavq_s16): Remove.
7404         (vmaxavq_s16): Remove.
7405         (vminavq_s32): Remove.
7406         (vmaxavq_s32): Remove.
7407         (vminavq_p_s8): Remove.
7408         (vmaxavq_p_s8): Remove.
7409         (vminavq_p_s16): Remove.
7410         (vmaxavq_p_s16): Remove.
7411         (vminavq_p_s32): Remove.
7412         (vmaxavq_p_s32): Remove.
7413         (__arm_vminavq_s8): Remove.
7414         (__arm_vmaxavq_s8): Remove.
7415         (__arm_vminavq_s16): Remove.
7416         (__arm_vmaxavq_s16): Remove.
7417         (__arm_vminavq_s32): Remove.
7418         (__arm_vmaxavq_s32): Remove.
7419         (__arm_vminavq_p_s8): Remove.
7420         (__arm_vmaxavq_p_s8): Remove.
7421         (__arm_vminavq_p_s16): Remove.
7422         (__arm_vmaxavq_p_s16): Remove.
7423         (__arm_vminavq_p_s32): Remove.
7424         (__arm_vmaxavq_p_s32): Remove.
7425         (__arm_vminavq): Remove.
7426         (__arm_vmaxavq): Remove.
7427         (__arm_vminavq_p): Remove.
7428         (__arm_vmaxavq_p): Remove.
7430 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7432         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
7433         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
7434         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
7435         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
7436         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
7437         (@mve_<mve_insn>q_<supf><mode>): ... this.
7438         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
7439         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
7440         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
7442 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7444         * config/arm/arm-mve-builtins-functions.h (class
7445         unspec_mve_function_exact_insn_pred_p): New.
7447 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7449         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
7450         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
7452 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7454         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
7455         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
7457 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
7459         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
7460         Declare.
7461         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
7462         (ADJUST_REG_ALLOC_ORDER): Likewise.
7463         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
7464         function.
7465         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
7466         Upa rather than Upl for unpredicated movprfx alternatives.
7468 2023-05-09  Jeff Law  <jlaw@ventanamicro>
7470         * config/h8300/testcompare.md: Add peephole2 which uses a memory
7471         load to set flags, thus eliminating a compare against zero.
7473 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7475         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
7476         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
7477         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
7478         * config/arm/arm_mve.h (vshlltq): Remove.
7479         (vshllbq): Remove.
7480         (vshllbq_m): Remove.
7481         (vshlltq_m): Remove.
7482         (vshllbq_x): Remove.
7483         (vshlltq_x): Remove.
7484         (vshlltq_n_u8): Remove.
7485         (vshllbq_n_u8): Remove.
7486         (vshlltq_n_s8): Remove.
7487         (vshllbq_n_s8): Remove.
7488         (vshlltq_n_u16): Remove.
7489         (vshllbq_n_u16): Remove.
7490         (vshlltq_n_s16): Remove.
7491         (vshllbq_n_s16): Remove.
7492         (vshllbq_m_n_s8): Remove.
7493         (vshllbq_m_n_s16): Remove.
7494         (vshllbq_m_n_u8): Remove.
7495         (vshllbq_m_n_u16): Remove.
7496         (vshlltq_m_n_s8): Remove.
7497         (vshlltq_m_n_s16): Remove.
7498         (vshlltq_m_n_u8): Remove.
7499         (vshlltq_m_n_u16): Remove.
7500         (vshllbq_x_n_s8): Remove.
7501         (vshllbq_x_n_s16): Remove.
7502         (vshllbq_x_n_u8): Remove.
7503         (vshllbq_x_n_u16): Remove.
7504         (vshlltq_x_n_s8): Remove.
7505         (vshlltq_x_n_s16): Remove.
7506         (vshlltq_x_n_u8): Remove.
7507         (vshlltq_x_n_u16): Remove.
7508         (__arm_vshlltq_n_u8): Remove.
7509         (__arm_vshllbq_n_u8): Remove.
7510         (__arm_vshlltq_n_s8): Remove.
7511         (__arm_vshllbq_n_s8): Remove.
7512         (__arm_vshlltq_n_u16): Remove.
7513         (__arm_vshllbq_n_u16): Remove.
7514         (__arm_vshlltq_n_s16): Remove.
7515         (__arm_vshllbq_n_s16): Remove.
7516         (__arm_vshllbq_m_n_s8): Remove.
7517         (__arm_vshllbq_m_n_s16): Remove.
7518         (__arm_vshllbq_m_n_u8): Remove.
7519         (__arm_vshllbq_m_n_u16): Remove.
7520         (__arm_vshlltq_m_n_s8): Remove.
7521         (__arm_vshlltq_m_n_s16): Remove.
7522         (__arm_vshlltq_m_n_u8): Remove.
7523         (__arm_vshlltq_m_n_u16): Remove.
7524         (__arm_vshllbq_x_n_s8): Remove.
7525         (__arm_vshllbq_x_n_s16): Remove.
7526         (__arm_vshllbq_x_n_u8): Remove.
7527         (__arm_vshllbq_x_n_u16): Remove.
7528         (__arm_vshlltq_x_n_s8): Remove.
7529         (__arm_vshlltq_x_n_s16): Remove.
7530         (__arm_vshlltq_x_n_u8): Remove.
7531         (__arm_vshlltq_x_n_u16): Remove.
7532         (__arm_vshlltq): Remove.
7533         (__arm_vshllbq): Remove.
7534         (__arm_vshllbq_m): Remove.
7535         (__arm_vshlltq_m): Remove.
7536         (__arm_vshllbq_x): Remove.
7537         (__arm_vshlltq_x): Remove.
7539 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7541         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
7542         (VSHLLBQ_N, VSHLLTQ_N): Remove.
7543         (VSHLLxQ_N): New.
7544         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
7545         (VSHLLxQ_M_N): New.
7546         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
7547         (mve_vshlltq_n_<supf><mode>): Merge into ...
7548         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7549         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
7550         Merge into ...
7551         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7553 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7555         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
7556         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
7558 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7560         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
7561         (vqmovntq, vqmovunbq, vqmovuntq): New.
7562         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
7563         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
7564         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
7565         (vqmovntq, vqmovunbq, vqmovuntq): New.
7566         * config/arm/arm-mve-builtins.cc
7567         (function_instance::has_inactive_argument): Handle vmovnbq,
7568         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
7569         * config/arm/arm_mve.h (vqmovntq): Remove.
7570         (vqmovnbq): Remove.
7571         (vqmovnbq_m): Remove.
7572         (vqmovntq_m): Remove.
7573         (vqmovntq_u16): Remove.
7574         (vqmovnbq_u16): Remove.
7575         (vqmovntq_s16): Remove.
7576         (vqmovnbq_s16): Remove.
7577         (vqmovntq_u32): Remove.
7578         (vqmovnbq_u32): Remove.
7579         (vqmovntq_s32): Remove.
7580         (vqmovnbq_s32): Remove.
7581         (vqmovnbq_m_s16): Remove.
7582         (vqmovntq_m_s16): Remove.
7583         (vqmovnbq_m_u16): Remove.
7584         (vqmovntq_m_u16): Remove.
7585         (vqmovnbq_m_s32): Remove.
7586         (vqmovntq_m_s32): Remove.
7587         (vqmovnbq_m_u32): Remove.
7588         (vqmovntq_m_u32): Remove.
7589         (__arm_vqmovntq_u16): Remove.
7590         (__arm_vqmovnbq_u16): Remove.
7591         (__arm_vqmovntq_s16): Remove.
7592         (__arm_vqmovnbq_s16): Remove.
7593         (__arm_vqmovntq_u32): Remove.
7594         (__arm_vqmovnbq_u32): Remove.
7595         (__arm_vqmovntq_s32): Remove.
7596         (__arm_vqmovnbq_s32): Remove.
7597         (__arm_vqmovnbq_m_s16): Remove.
7598         (__arm_vqmovntq_m_s16): Remove.
7599         (__arm_vqmovnbq_m_u16): Remove.
7600         (__arm_vqmovntq_m_u16): Remove.
7601         (__arm_vqmovnbq_m_s32): Remove.
7602         (__arm_vqmovntq_m_s32): Remove.
7603         (__arm_vqmovnbq_m_u32): Remove.
7604         (__arm_vqmovntq_m_u32): Remove.
7605         (__arm_vqmovntq): Remove.
7606         (__arm_vqmovnbq): Remove.
7607         (__arm_vqmovnbq_m): Remove.
7608         (__arm_vqmovntq_m): Remove.
7609         (vmovntq): Remove.
7610         (vmovnbq): Remove.
7611         (vmovnbq_m): Remove.
7612         (vmovntq_m): Remove.
7613         (vmovntq_u16): Remove.
7614         (vmovnbq_u16): Remove.
7615         (vmovntq_s16): Remove.
7616         (vmovnbq_s16): Remove.
7617         (vmovntq_u32): Remove.
7618         (vmovnbq_u32): Remove.
7619         (vmovntq_s32): Remove.
7620         (vmovnbq_s32): Remove.
7621         (vmovnbq_m_s16): Remove.
7622         (vmovntq_m_s16): Remove.
7623         (vmovnbq_m_u16): Remove.
7624         (vmovntq_m_u16): Remove.
7625         (vmovnbq_m_s32): Remove.
7626         (vmovntq_m_s32): Remove.
7627         (vmovnbq_m_u32): Remove.
7628         (vmovntq_m_u32): Remove.
7629         (__arm_vmovntq_u16): Remove.
7630         (__arm_vmovnbq_u16): Remove.
7631         (__arm_vmovntq_s16): Remove.
7632         (__arm_vmovnbq_s16): Remove.
7633         (__arm_vmovntq_u32): Remove.
7634         (__arm_vmovnbq_u32): Remove.
7635         (__arm_vmovntq_s32): Remove.
7636         (__arm_vmovnbq_s32): Remove.
7637         (__arm_vmovnbq_m_s16): Remove.
7638         (__arm_vmovntq_m_s16): Remove.
7639         (__arm_vmovnbq_m_u16): Remove.
7640         (__arm_vmovntq_m_u16): Remove.
7641         (__arm_vmovnbq_m_s32): Remove.
7642         (__arm_vmovntq_m_s32): Remove.
7643         (__arm_vmovnbq_m_u32): Remove.
7644         (__arm_vmovntq_m_u32): Remove.
7645         (__arm_vmovntq): Remove.
7646         (__arm_vmovnbq): Remove.
7647         (__arm_vmovnbq_m): Remove.
7648         (__arm_vmovntq_m): Remove.
7649         (vqmovuntq): Remove.
7650         (vqmovunbq): Remove.
7651         (vqmovunbq_m): Remove.
7652         (vqmovuntq_m): Remove.
7653         (vqmovuntq_s16): Remove.
7654         (vqmovunbq_s16): Remove.
7655         (vqmovuntq_s32): Remove.
7656         (vqmovunbq_s32): Remove.
7657         (vqmovunbq_m_s16): Remove.
7658         (vqmovuntq_m_s16): Remove.
7659         (vqmovunbq_m_s32): Remove.
7660         (vqmovuntq_m_s32): Remove.
7661         (__arm_vqmovuntq_s16): Remove.
7662         (__arm_vqmovunbq_s16): Remove.
7663         (__arm_vqmovuntq_s32): Remove.
7664         (__arm_vqmovunbq_s32): Remove.
7665         (__arm_vqmovunbq_m_s16): Remove.
7666         (__arm_vqmovuntq_m_s16): Remove.
7667         (__arm_vqmovunbq_m_s32): Remove.
7668         (__arm_vqmovuntq_m_s32): Remove.
7669         (__arm_vqmovuntq): Remove.
7670         (__arm_vqmovunbq): Remove.
7671         (__arm_vqmovunbq_m): Remove.
7672         (__arm_vqmovuntq_m): Remove.
7674 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7676         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
7677         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
7678         vqmovunt.
7679         (isu): Likewise.
7680         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
7681         VQMOVUNTQ_S.
7682         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
7683         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
7684         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
7685         (mve_vqmovuntq_s<mode>): Merge into ...
7686         (@mve_<mve_insn>q_<supf><mode>): ... this.
7687         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
7688         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
7689         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
7690         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
7692 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7694         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
7695         (binary_move_narrow_unsigned): New.
7696         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
7697         (binary_move_narrow_unsigned): New.
7699 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7701         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
7702         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
7703         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
7704         (vrndpq, vrndq, vrndxq): New.
7705         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
7706         (vrndpq, vrndq, vrndxq): New.
7707         * config/arm/arm_mve.h (vrndxq): Remove.
7708         (vrndq): Remove.
7709         (vrndpq): Remove.
7710         (vrndnq): Remove.
7711         (vrndmq): Remove.
7712         (vrndaq): Remove.
7713         (vrndaq_m): Remove.
7714         (vrndmq_m): Remove.
7715         (vrndnq_m): Remove.
7716         (vrndpq_m): Remove.
7717         (vrndq_m): Remove.
7718         (vrndxq_m): Remove.
7719         (vrndq_x): Remove.
7720         (vrndnq_x): Remove.
7721         (vrndmq_x): Remove.
7722         (vrndpq_x): Remove.
7723         (vrndaq_x): Remove.
7724         (vrndxq_x): Remove.
7725         (vrndxq_f16): Remove.
7726         (vrndxq_f32): Remove.
7727         (vrndq_f16): Remove.
7728         (vrndq_f32): Remove.
7729         (vrndpq_f16): Remove.
7730         (vrndpq_f32): Remove.
7731         (vrndnq_f16): Remove.
7732         (vrndnq_f32): Remove.
7733         (vrndmq_f16): Remove.
7734         (vrndmq_f32): Remove.
7735         (vrndaq_f16): Remove.
7736         (vrndaq_f32): Remove.
7737         (vrndaq_m_f16): Remove.
7738         (vrndmq_m_f16): Remove.
7739         (vrndnq_m_f16): Remove.
7740         (vrndpq_m_f16): Remove.
7741         (vrndq_m_f16): Remove.
7742         (vrndxq_m_f16): Remove.
7743         (vrndaq_m_f32): Remove.
7744         (vrndmq_m_f32): Remove.
7745         (vrndnq_m_f32): Remove.
7746         (vrndpq_m_f32): Remove.
7747         (vrndq_m_f32): Remove.
7748         (vrndxq_m_f32): Remove.
7749         (vrndq_x_f16): Remove.
7750         (vrndq_x_f32): Remove.
7751         (vrndnq_x_f16): Remove.
7752         (vrndnq_x_f32): Remove.
7753         (vrndmq_x_f16): Remove.
7754         (vrndmq_x_f32): Remove.
7755         (vrndpq_x_f16): Remove.
7756         (vrndpq_x_f32): Remove.
7757         (vrndaq_x_f16): Remove.
7758         (vrndaq_x_f32): Remove.
7759         (vrndxq_x_f16): Remove.
7760         (vrndxq_x_f32): Remove.
7761         (__arm_vrndxq_f16): Remove.
7762         (__arm_vrndxq_f32): Remove.
7763         (__arm_vrndq_f16): Remove.
7764         (__arm_vrndq_f32): Remove.
7765         (__arm_vrndpq_f16): Remove.
7766         (__arm_vrndpq_f32): Remove.
7767         (__arm_vrndnq_f16): Remove.
7768         (__arm_vrndnq_f32): Remove.
7769         (__arm_vrndmq_f16): Remove.
7770         (__arm_vrndmq_f32): Remove.
7771         (__arm_vrndaq_f16): Remove.
7772         (__arm_vrndaq_f32): Remove.
7773         (__arm_vrndaq_m_f16): Remove.
7774         (__arm_vrndmq_m_f16): Remove.
7775         (__arm_vrndnq_m_f16): Remove.
7776         (__arm_vrndpq_m_f16): Remove.
7777         (__arm_vrndq_m_f16): Remove.
7778         (__arm_vrndxq_m_f16): Remove.
7779         (__arm_vrndaq_m_f32): Remove.
7780         (__arm_vrndmq_m_f32): Remove.
7781         (__arm_vrndnq_m_f32): Remove.
7782         (__arm_vrndpq_m_f32): Remove.
7783         (__arm_vrndq_m_f32): Remove.
7784         (__arm_vrndxq_m_f32): Remove.
7785         (__arm_vrndq_x_f16): Remove.
7786         (__arm_vrndq_x_f32): Remove.
7787         (__arm_vrndnq_x_f16): Remove.
7788         (__arm_vrndnq_x_f32): Remove.
7789         (__arm_vrndmq_x_f16): Remove.
7790         (__arm_vrndmq_x_f32): Remove.
7791         (__arm_vrndpq_x_f16): Remove.
7792         (__arm_vrndpq_x_f32): Remove.
7793         (__arm_vrndaq_x_f16): Remove.
7794         (__arm_vrndaq_x_f32): Remove.
7795         (__arm_vrndxq_x_f16): Remove.
7796         (__arm_vrndxq_x_f32): Remove.
7797         (__arm_vrndxq): Remove.
7798         (__arm_vrndq): Remove.
7799         (__arm_vrndpq): Remove.
7800         (__arm_vrndnq): Remove.
7801         (__arm_vrndmq): Remove.
7802         (__arm_vrndaq): Remove.
7803         (__arm_vrndaq_m): Remove.
7804         (__arm_vrndmq_m): Remove.
7805         (__arm_vrndnq_m): Remove.
7806         (__arm_vrndpq_m): Remove.
7807         (__arm_vrndq_m): Remove.
7808         (__arm_vrndxq_m): Remove.
7809         (__arm_vrndq_x): Remove.
7810         (__arm_vrndnq_x): Remove.
7811         (__arm_vrndmq_x): Remove.
7812         (__arm_vrndpq_x): Remove.
7813         (__arm_vrndaq_x): Remove.
7814         (__arm_vrndxq_x): Remove.
7816 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7818         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
7819         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
7820         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
7821         (vclzq, vqabsq, vqnegq): New.
7822         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
7823         (vqabsq, vqnegq): New.
7824         * config/arm/arm_mve.h (vabsq): Remove.
7825         (vabsq_m): Remove.
7826         (vabsq_x): Remove.
7827         (vabsq_f16): Remove.
7828         (vabsq_f32): Remove.
7829         (vabsq_s8): Remove.
7830         (vabsq_s16): Remove.
7831         (vabsq_s32): Remove.
7832         (vabsq_m_s8): Remove.
7833         (vabsq_m_s16): Remove.
7834         (vabsq_m_s32): Remove.
7835         (vabsq_m_f16): Remove.
7836         (vabsq_m_f32): Remove.
7837         (vabsq_x_s8): Remove.
7838         (vabsq_x_s16): Remove.
7839         (vabsq_x_s32): Remove.
7840         (vabsq_x_f16): Remove.
7841         (vabsq_x_f32): Remove.
7842         (__arm_vabsq_s8): Remove.
7843         (__arm_vabsq_s16): Remove.
7844         (__arm_vabsq_s32): Remove.
7845         (__arm_vabsq_m_s8): Remove.
7846         (__arm_vabsq_m_s16): Remove.
7847         (__arm_vabsq_m_s32): Remove.
7848         (__arm_vabsq_x_s8): Remove.
7849         (__arm_vabsq_x_s16): Remove.
7850         (__arm_vabsq_x_s32): Remove.
7851         (__arm_vabsq_f16): Remove.
7852         (__arm_vabsq_f32): Remove.
7853         (__arm_vabsq_m_f16): Remove.
7854         (__arm_vabsq_m_f32): Remove.
7855         (__arm_vabsq_x_f16): Remove.
7856         (__arm_vabsq_x_f32): Remove.
7857         (__arm_vabsq): Remove.
7858         (__arm_vabsq_m): Remove.
7859         (__arm_vabsq_x): Remove.
7860         (vnegq): Remove.
7861         (vnegq_m): Remove.
7862         (vnegq_x): Remove.
7863         (vnegq_f16): Remove.
7864         (vnegq_f32): Remove.
7865         (vnegq_s8): Remove.
7866         (vnegq_s16): Remove.
7867         (vnegq_s32): Remove.
7868         (vnegq_m_s8): Remove.
7869         (vnegq_m_s16): Remove.
7870         (vnegq_m_s32): Remove.
7871         (vnegq_m_f16): Remove.
7872         (vnegq_m_f32): Remove.
7873         (vnegq_x_s8): Remove.
7874         (vnegq_x_s16): Remove.
7875         (vnegq_x_s32): Remove.
7876         (vnegq_x_f16): Remove.
7877         (vnegq_x_f32): Remove.
7878         (__arm_vnegq_s8): Remove.
7879         (__arm_vnegq_s16): Remove.
7880         (__arm_vnegq_s32): Remove.
7881         (__arm_vnegq_m_s8): Remove.
7882         (__arm_vnegq_m_s16): Remove.
7883         (__arm_vnegq_m_s32): Remove.
7884         (__arm_vnegq_x_s8): Remove.
7885         (__arm_vnegq_x_s16): Remove.
7886         (__arm_vnegq_x_s32): Remove.
7887         (__arm_vnegq_f16): Remove.
7888         (__arm_vnegq_f32): Remove.
7889         (__arm_vnegq_m_f16): Remove.
7890         (__arm_vnegq_m_f32): Remove.
7891         (__arm_vnegq_x_f16): Remove.
7892         (__arm_vnegq_x_f32): Remove.
7893         (__arm_vnegq): Remove.
7894         (__arm_vnegq_m): Remove.
7895         (__arm_vnegq_x): Remove.
7896         (vclsq): Remove.
7897         (vclsq_m): Remove.
7898         (vclsq_x): Remove.
7899         (vclsq_s8): Remove.
7900         (vclsq_s16): Remove.
7901         (vclsq_s32): Remove.
7902         (vclsq_m_s8): Remove.
7903         (vclsq_m_s16): Remove.
7904         (vclsq_m_s32): Remove.
7905         (vclsq_x_s8): Remove.
7906         (vclsq_x_s16): Remove.
7907         (vclsq_x_s32): Remove.
7908         (__arm_vclsq_s8): Remove.
7909         (__arm_vclsq_s16): Remove.
7910         (__arm_vclsq_s32): Remove.
7911         (__arm_vclsq_m_s8): Remove.
7912         (__arm_vclsq_m_s16): Remove.
7913         (__arm_vclsq_m_s32): Remove.
7914         (__arm_vclsq_x_s8): Remove.
7915         (__arm_vclsq_x_s16): Remove.
7916         (__arm_vclsq_x_s32): Remove.
7917         (__arm_vclsq): Remove.
7918         (__arm_vclsq_m): Remove.
7919         (__arm_vclsq_x): Remove.
7920         (vclzq): Remove.
7921         (vclzq_m): Remove.
7922         (vclzq_x): Remove.
7923         (vclzq_s8): Remove.
7924         (vclzq_s16): Remove.
7925         (vclzq_s32): Remove.
7926         (vclzq_u8): Remove.
7927         (vclzq_u16): Remove.
7928         (vclzq_u32): Remove.
7929         (vclzq_m_u8): Remove.
7930         (vclzq_m_s8): Remove.
7931         (vclzq_m_u16): Remove.
7932         (vclzq_m_s16): Remove.
7933         (vclzq_m_u32): Remove.
7934         (vclzq_m_s32): Remove.
7935         (vclzq_x_s8): Remove.
7936         (vclzq_x_s16): Remove.
7937         (vclzq_x_s32): Remove.
7938         (vclzq_x_u8): Remove.
7939         (vclzq_x_u16): Remove.
7940         (vclzq_x_u32): Remove.
7941         (__arm_vclzq_s8): Remove.
7942         (__arm_vclzq_s16): Remove.
7943         (__arm_vclzq_s32): Remove.
7944         (__arm_vclzq_u8): Remove.
7945         (__arm_vclzq_u16): Remove.
7946         (__arm_vclzq_u32): Remove.
7947         (__arm_vclzq_m_u8): Remove.
7948         (__arm_vclzq_m_s8): Remove.
7949         (__arm_vclzq_m_u16): Remove.
7950         (__arm_vclzq_m_s16): Remove.
7951         (__arm_vclzq_m_u32): Remove.
7952         (__arm_vclzq_m_s32): Remove.
7953         (__arm_vclzq_x_s8): Remove.
7954         (__arm_vclzq_x_s16): Remove.
7955         (__arm_vclzq_x_s32): Remove.
7956         (__arm_vclzq_x_u8): Remove.
7957         (__arm_vclzq_x_u16): Remove.
7958         (__arm_vclzq_x_u32): Remove.
7959         (__arm_vclzq): Remove.
7960         (__arm_vclzq_m): Remove.
7961         (__arm_vclzq_x): Remove.
7962         (vqabsq): Remove.
7963         (vqnegq): Remove.
7964         (vqnegq_m): Remove.
7965         (vqabsq_m): Remove.
7966         (vqabsq_s8): Remove.
7967         (vqabsq_s16): Remove.
7968         (vqabsq_s32): Remove.
7969         (vqnegq_s8): Remove.
7970         (vqnegq_s16): Remove.
7971         (vqnegq_s32): Remove.
7972         (vqnegq_m_s8): Remove.
7973         (vqabsq_m_s8): Remove.
7974         (vqnegq_m_s16): Remove.
7975         (vqabsq_m_s16): Remove.
7976         (vqnegq_m_s32): Remove.
7977         (vqabsq_m_s32): Remove.
7978         (__arm_vqabsq_s8): Remove.
7979         (__arm_vqabsq_s16): Remove.
7980         (__arm_vqabsq_s32): Remove.
7981         (__arm_vqnegq_s8): Remove.
7982         (__arm_vqnegq_s16): Remove.
7983         (__arm_vqnegq_s32): Remove.
7984         (__arm_vqnegq_m_s8): Remove.
7985         (__arm_vqabsq_m_s8): Remove.
7986         (__arm_vqnegq_m_s16): Remove.
7987         (__arm_vqabsq_m_s16): Remove.
7988         (__arm_vqnegq_m_s32): Remove.
7989         (__arm_vqabsq_m_s32): Remove.
7990         (__arm_vqabsq): Remove.
7991         (__arm_vqnegq): Remove.
7992         (__arm_vqnegq_m): Remove.
7993         (__arm_vqabsq_m): Remove.
7995 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
7997         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
7998         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
7999         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
8000         vrndm, vrndn, vrndp, vrnd, vrndx.
8001         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
8002         VQABSQ_M_S, VQNEGQ_M_S.
8003         (mve_mnemo): New.
8004         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
8005         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
8006         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
8007         (@mve_<mve_insn>q_f<mode>): ... this.
8008         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
8009         (mve_v<absneg_str>q_f<mode>): ... this.
8010         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
8011         (mve_v<absneg_str>q_s<mode>): ... this.
8012         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
8013         (@mve_<mve_insn>q_<supf><mode>): ... this.
8014         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
8015         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
8016         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
8017         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8018         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
8019         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
8020         (mve_vrndxq_m_f<mode>): Merge into ...
8021         (@mve_<mve_insn>q_m_f<mode>): ... this.
8023 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
8025         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
8026         * config/arm/arm-mve-builtins-shapes.h (unary): New.
8028 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
8030         * mux-utils.h: Fix comment typo, avoides -> avoids.
8032 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
8034         PR tree-optimization/109778
8035         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
8036         wi::zext (x, width) rather than x if width != precision, rather
8037         than using wi::zext (right, width) after the shift.
8038         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
8039         of wi::lrotate or wi::rrotate.
8041 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
8043         * genmatch.cc (get_out_file): Make static and rename to ...
8044         (choose_output): ... this. Reimplement. Update all uses ...
8045         (decision_tree::gen): ... here and ...
8046         (main): ... here.
8048 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
8050         * genmatch.cc (showUsage): Reimplement as ...
8051         (usage): ...this.  Adjust all uses.
8052         (main): Print usage when no arguments.  Add missing 'return 1'.
8054 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
8056         * genmatch.cc (header_file): Make static.
8057         (emit_func): Rename to...
8058         (fp_decl): ... this.  Adjust all uses.
8059         (fp_decl_done): New function.  Use it...
8060         (decision_tree::gen): ... here and...
8061         (write_predicate): ... here.
8062         (main): Adjust.
8064 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
8066         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
8067         earlyclobbers.
8069 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
8070             Uros Bizjak  <ubizjak@gmail.com>
8072         * config/i386/i386.md (any_or_plus): Move definition earlier.
8073         (*insvti_highpart_1): New define_insn_and_split to overwrite
8074         (insv) the highpart of a TImode register/memory.
8076 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
8078         * auto-profile.cc (auto_profile): Check todo from early_inline
8079         to see if cleanup_tree_vfg needs to be called.
8080         (early_inline): Return todo from early_inliner.
8082 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
8084         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
8085         New.
8086         (pass_vsetvl::get_block_info): New.
8087         (pass_vsetvl::update_vector_info): New.
8088         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
8089         (pass_vsetvl::compute_local_backward_infos): Ditto.
8090         (pass_vsetvl::transfer_before): Ditto.
8091         (pass_vsetvl::transfer_after): Ditto.
8092         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
8093         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
8094         (pass_vsetvl::cleanup_insns): Ditto.
8095         (pass_vsetvl::compute_local_backward_infos): Use
8096         update_vector_info.
8098 2023-05-08  Jeff Law  <jlaw@ventanamicro>
8100         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
8102 2023-05-08  Richard Biener  <rguenther@suse.de>
8103             Michael Meissner  <meissner@linux.ibm.com>
8105         PR middle-end/108623
8106         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
8107         Align bit fields > 1 bit to at least an 8-bit boundary.
8109 2023-05-08  Andrew Pinski  <apinski@marvell.com>
8111         PR tree-optimization/109424
8112         PR tree-optimization/59424
8113         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
8114         (factor_out_conditional_operation): This and add support for all unary
8115         operations.
8116         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
8117         to call factor_out_conditional_operation instead.
8119 2023-05-08  Andrew Pinski  <apinski@marvell.com>
8121         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
8122         over factor_out_conditional_conversion.
8124 2023-05-08  Andrew Pinski  <apinski@marvell.com>
8126         PR tree-optimization/49959
8127         PR tree-optimization/103771
8128         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
8129         Diamond shapped bb form for factor_out_conditional_conversion.
8131 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8133         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
8134         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
8135         (riscv_vector_get_mask_mode): Ditto.
8136         (get_mask_policy_no_pred): Ditto.
8137         (get_tail_policy_no_pred): Ditto.
8138         (get_mask_mode): New function.
8139         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
8140         (get_tail_policy_no_pred): Ditto.
8141         (riscv_vector_mask_mode_p): Ditto.
8142         (riscv_vector_get_mask_mode): Ditto.
8143         (get_mask_mode): New function.
8144         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
8145         global extern.
8146         (get_tail_policy_for_pred): Ditto.
8147         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
8148         (get_mask_policy_for_pred): Ditto
8149         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
8151 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
8153         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
8154         (riscv_select_multilib): New.
8155         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
8156         also handle select_by_abi.
8157         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
8158         to select_by_abi_arch_cmodel from 1.
8159         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
8160         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
8162 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
8164         * Makefile.in: (gimple-match-head.o-warn): Remove.
8165         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
8166         gimple-match-exports.cc.
8167         (gimple-match-auto.h): Only depend on s-gimple-match.
8168         (generic-match-auto.h): Likewise.
8170 2023-05-08  Andrew Pinski  <apinski@marvell.com>
8172         PR tree-optimization/109691
8173         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
8174         argument.
8175         If the removed statement can throw, have need_eh_cleanup
8176         include the bb of that statement.
8177         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
8178         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
8179         num_dce.
8180         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
8181         Initialize dceworklist instead of stmts_to_remove.
8182         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
8183         Destore dceworklist instead of stmts_to_remove.
8184         (substitute_and_fold_dom_walker::before_dom_children):
8185         Set dceworklist instead of adding to stmts_to_remove.
8186         (substitute_and_fold_engine::substitute_and_fold):
8187         Call simple_dce_from_worklist instead of poping
8188         from the list.
8189         Don't update the stat on removal statements.
8191 2023-05-07  Andrew Pinski  <apinski@marvell.com>
8193         PR target/109762
8194         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
8195         Change argument type to aarch64_feature_flags.
8196         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
8197         constructor argument type to aarch64_feature_flags.
8198         Change m_old_asm_isa_flags to be aarch64_feature_flags.
8200 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
8202         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
8203         more parallel code if can_create_pseudo_p.
8205 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
8207         PR target/43644
8208         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
8209         immediately before moving a multi-word register by parts.
8211 2023-05-06  Jeff Law  <jlaw@ventanamicro>
8213         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
8215 2023-05-06  Michael Collison  <collison@rivosinc.com>
8217         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
8218         Check that GET_MODE_NUNITS is a multiple of 2.
8220 2023-05-06  Michael Collison  <collison@rivosinc.com>
8222         * config/riscv/riscv.cc
8223         (riscv_estimated_poly_value): Implement
8224         TARGET_ESTIMATED_POLY_VALUE.
8225         (riscv_preferred_simd_mode): Implement
8226         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
8227         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
8228         (riscv_empty_mask_is_expensive): Implement
8229         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
8230         (riscv_vectorize_create_costs): Implement
8231         TARGET_VECTORIZE_CREATE_COSTS.
8232         (riscv_support_vector_misalignment): Implement
8233         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
8234         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
8235         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
8236         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
8237         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
8239 2023-05-06  Jeff Law  <jlaw@ventanamicro>
8241         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
8242         duplicate definition.
8244 2023-05-06  Michael Collison  <collison@rivosinc.com>
8246         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
8247         (riscv_vector_preferred_simd_mode): Ditto.
8248         (get_mask_policy_no_pred): Ditto.
8249         (get_tail_policy_no_pred): Ditto.
8250         (riscv_vector_mask_mode_p): Ditto.
8251         (riscv_vector_get_mask_mode): Ditto.
8253 2023-05-06  Michael Collison  <collison@rivosinc.com>
8255         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
8256         Remove static declaration to to make externally visible.
8257         (get_mask_policy_for_pred): Ditto.
8258         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
8259         New external declaration.
8260         (get_mask_policy_for_pred): Ditto.
8262 2023-05-06  Michael Collison  <collison@rivosinc.com>
8264         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
8265         (riscv_vector_get_mask_mode): Ditto.
8266         (get_mask_policy_no_pred): Ditto.
8267         (get_tail_policy_no_pred): Ditto.
8269 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
8271         * config/loongarch/loongarch.h (struct machine_function): Add
8272         reg_is_wrapped_separately array for register wrapping
8273         information.
8274         * config/loongarch/loongarch.cc
8275         (loongarch_get_separate_components): New function.
8276         (loongarch_components_for_bb): Likewise.
8277         (loongarch_disqualify_components): Likewise.
8278         (loongarch_process_components): Likewise.
8279         (loongarch_emit_prologue_components): Likewise.
8280         (loongarch_emit_epilogue_components): Likewise.
8281         (loongarch_set_handled_components): Likewise.
8282         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
8283         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
8284         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
8285         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
8286         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
8287         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
8288         (loongarch_for_each_saved_reg): Skip registers that are wrapped
8289         separately.
8291 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
8293         PR other/109522
8294         * Makefile.in (s-macro_list): Pass -nostdinc to
8295         $(GCC_FOR_TARGET).
8297 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8299         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
8300         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
8301         (preferred_simd_mode): Ditto.
8302         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
8303         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
8304         (riscv_preferred_simd_mode): New function.
8305         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
8306         * config/riscv/vector.md: Add autovec.md.
8307         * config/riscv/autovec.md: New file.
8309 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
8311         * real.h (dconst_pi): Define.
8312         (dconst_e_ptr): Formatting fix.
8313         (dconst_pi_ptr): Declare.
8314         * real.cc (dconst_pi_ptr): New function.
8315         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
8316         boundaries range with range computed from sin/cos of the particular
8317         bounds if the argument range is shorter than 2*pi.
8318         (cfn_sincos::op1_range): Take bulps into account when determining
8319         which result ranges are always invalid or behave like known NAN.
8321 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
8323         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
8324         pass type to vrange_storage::equal_p.
8325         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
8326         (irange_storage::equal_p): Same.
8327         (frange_storage::equal_p): Same.
8328         * value-range-storage.h (class frange_storage): Same.
8330 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8332         PR target/109748
8333         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
8334         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
8336 2023-05-06  liuhongt  <hongtao.liu@intel.com>
8338         * combine.cc (maybe_swap_commutative_operands): Canonicalize
8339         vec_merge when mask is constant.
8340         * doc/md.texi: Document vec_merge canonicalization.
8342 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
8344         * value-range.h (frange_arithmetic): Declare.
8345         * range-op-float.cc (frange_arithmetic): No longer static.
8346         * gimple-range-op.cc (frange_mpfr_arg1): New function.
8347         (cfn_sqrt::fold_range): Intersect the generic boundaries range
8348         with range computed from sqrt of the particular bounds.
8349         (cfn_sqrt::op1_range): Intersect the generic boundaries range
8350         with range computed from squared particular bounds.
8352 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
8354         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
8355         earlier with helper variables also renamed.
8356         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
8357         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
8358         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
8360 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
8362         * config/cris/cris.md (splitop): Add PLUS.
8363         * config/cris/cris.cc (cris_split_constant): Also handle
8364         PLUS when a split into two insns may be useful.
8366 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
8368         * config/cris/cris.md (movandsplit1): New define_peephole2.
8370 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
8372         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
8374 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
8376         * doc/md.texi (define_peephole2): Document order of scanning.
8378 2023-05-05  Pan Li  <pan2.li@intel.com>
8379             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8381         * config/riscv/vector.md: Allow const as the operand of RVV
8382         indexed load/store.
8384 2023-05-05  Pan Li  <pan2.li@intel.com>
8386         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
8387         consumed by simplify_rtx.
8389 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8391         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
8392         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
8393         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
8394         * config/arm/arm_mve.h (vshrq): Remove.
8395         (vrshrq): Remove.
8396         (vrshrq_m): Remove.
8397         (vshrq_m): Remove.
8398         (vrshrq_x): Remove.
8399         (vshrq_x): Remove.
8400         (vshrq_n_s8): Remove.
8401         (vshrq_n_s16): Remove.
8402         (vshrq_n_s32): Remove.
8403         (vshrq_n_u8): Remove.
8404         (vshrq_n_u16): Remove.
8405         (vshrq_n_u32): Remove.
8406         (vrshrq_n_u8): Remove.
8407         (vrshrq_n_s8): Remove.
8408         (vrshrq_n_u16): Remove.
8409         (vrshrq_n_s16): Remove.
8410         (vrshrq_n_u32): Remove.
8411         (vrshrq_n_s32): Remove.
8412         (vrshrq_m_n_s8): Remove.
8413         (vrshrq_m_n_s32): Remove.
8414         (vrshrq_m_n_s16): Remove.
8415         (vrshrq_m_n_u8): Remove.
8416         (vrshrq_m_n_u32): Remove.
8417         (vrshrq_m_n_u16): Remove.
8418         (vshrq_m_n_s8): Remove.
8419         (vshrq_m_n_s32): Remove.
8420         (vshrq_m_n_s16): Remove.
8421         (vshrq_m_n_u8): Remove.
8422         (vshrq_m_n_u32): Remove.
8423         (vshrq_m_n_u16): Remove.
8424         (vrshrq_x_n_s8): Remove.
8425         (vrshrq_x_n_s16): Remove.
8426         (vrshrq_x_n_s32): Remove.
8427         (vrshrq_x_n_u8): Remove.
8428         (vrshrq_x_n_u16): Remove.
8429         (vrshrq_x_n_u32): Remove.
8430         (vshrq_x_n_s8): Remove.
8431         (vshrq_x_n_s16): Remove.
8432         (vshrq_x_n_s32): Remove.
8433         (vshrq_x_n_u8): Remove.
8434         (vshrq_x_n_u16): Remove.
8435         (vshrq_x_n_u32): Remove.
8436         (__arm_vshrq_n_s8): Remove.
8437         (__arm_vshrq_n_s16): Remove.
8438         (__arm_vshrq_n_s32): Remove.
8439         (__arm_vshrq_n_u8): Remove.
8440         (__arm_vshrq_n_u16): Remove.
8441         (__arm_vshrq_n_u32): Remove.
8442         (__arm_vrshrq_n_u8): Remove.
8443         (__arm_vrshrq_n_s8): Remove.
8444         (__arm_vrshrq_n_u16): Remove.
8445         (__arm_vrshrq_n_s16): Remove.
8446         (__arm_vrshrq_n_u32): Remove.
8447         (__arm_vrshrq_n_s32): Remove.
8448         (__arm_vrshrq_m_n_s8): Remove.
8449         (__arm_vrshrq_m_n_s32): Remove.
8450         (__arm_vrshrq_m_n_s16): Remove.
8451         (__arm_vrshrq_m_n_u8): Remove.
8452         (__arm_vrshrq_m_n_u32): Remove.
8453         (__arm_vrshrq_m_n_u16): Remove.
8454         (__arm_vshrq_m_n_s8): Remove.
8455         (__arm_vshrq_m_n_s32): Remove.
8456         (__arm_vshrq_m_n_s16): Remove.
8457         (__arm_vshrq_m_n_u8): Remove.
8458         (__arm_vshrq_m_n_u32): Remove.
8459         (__arm_vshrq_m_n_u16): Remove.
8460         (__arm_vrshrq_x_n_s8): Remove.
8461         (__arm_vrshrq_x_n_s16): Remove.
8462         (__arm_vrshrq_x_n_s32): Remove.
8463         (__arm_vrshrq_x_n_u8): Remove.
8464         (__arm_vrshrq_x_n_u16): Remove.
8465         (__arm_vrshrq_x_n_u32): Remove.
8466         (__arm_vshrq_x_n_s8): Remove.
8467         (__arm_vshrq_x_n_s16): Remove.
8468         (__arm_vshrq_x_n_s32): Remove.
8469         (__arm_vshrq_x_n_u8): Remove.
8470         (__arm_vshrq_x_n_u16): Remove.
8471         (__arm_vshrq_x_n_u32): Remove.
8472         (__arm_vshrq): Remove.
8473         (__arm_vrshrq): Remove.
8474         (__arm_vrshrq_m): Remove.
8475         (__arm_vshrq_m): Remove.
8476         (__arm_vrshrq_x): Remove.
8477         (__arm_vshrq_x): Remove.
8479 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8481         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
8482         (mve_insn): Add vrshr, vshr.
8483         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
8484         (mve_vrshrq_n_<supf><mode>): Merge into ...
8485         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8486         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
8487         into ...
8488         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8490 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8492         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
8493         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
8495 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8497         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
8498         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
8499         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
8500         (vqrshrunbq, vqrshruntq): New.
8501         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
8502         (vqrshrunbq, vqrshruntq): New.
8503         * config/arm/arm-mve-builtins.cc
8504         (function_instance::has_inactive_argument): Handle vqshrunbq,
8505         vqshruntq, vqrshrunbq, vqrshruntq.
8506         * config/arm/arm_mve.h (vqrshrunbq): Remove.
8507         (vqrshruntq): Remove.
8508         (vqrshrunbq_m): Remove.
8509         (vqrshruntq_m): Remove.
8510         (vqrshrunbq_n_s16): Remove.
8511         (vqrshrunbq_n_s32): Remove.
8512         (vqrshruntq_n_s16): Remove.
8513         (vqrshruntq_n_s32): Remove.
8514         (vqrshrunbq_m_n_s32): Remove.
8515         (vqrshrunbq_m_n_s16): Remove.
8516         (vqrshruntq_m_n_s32): Remove.
8517         (vqrshruntq_m_n_s16): Remove.
8518         (__arm_vqrshrunbq_n_s16): Remove.
8519         (__arm_vqrshrunbq_n_s32): Remove.
8520         (__arm_vqrshruntq_n_s16): Remove.
8521         (__arm_vqrshruntq_n_s32): Remove.
8522         (__arm_vqrshrunbq_m_n_s32): Remove.
8523         (__arm_vqrshrunbq_m_n_s16): Remove.
8524         (__arm_vqrshruntq_m_n_s32): Remove.
8525         (__arm_vqrshruntq_m_n_s16): Remove.
8526         (__arm_vqrshrunbq): Remove.
8527         (__arm_vqrshruntq): Remove.
8528         (__arm_vqrshrunbq_m): Remove.
8529         (__arm_vqrshruntq_m): Remove.
8530         (vqshrunbq): Remove.
8531         (vqshruntq): Remove.
8532         (vqshrunbq_m): Remove.
8533         (vqshruntq_m): Remove.
8534         (vqshrunbq_n_s16): Remove.
8535         (vqshruntq_n_s16): Remove.
8536         (vqshrunbq_n_s32): Remove.
8537         (vqshruntq_n_s32): Remove.
8538         (vqshrunbq_m_n_s32): Remove.
8539         (vqshrunbq_m_n_s16): Remove.
8540         (vqshruntq_m_n_s32): Remove.
8541         (vqshruntq_m_n_s16): Remove.
8542         (__arm_vqshrunbq_n_s16): Remove.
8543         (__arm_vqshruntq_n_s16): Remove.
8544         (__arm_vqshrunbq_n_s32): Remove.
8545         (__arm_vqshruntq_n_s32): Remove.
8546         (__arm_vqshrunbq_m_n_s32): Remove.
8547         (__arm_vqshrunbq_m_n_s16): Remove.
8548         (__arm_vqshruntq_m_n_s32): Remove.
8549         (__arm_vqshruntq_m_n_s16): Remove.
8550         (__arm_vqshrunbq): Remove.
8551         (__arm_vqshruntq): Remove.
8552         (__arm_vqshrunbq_m): Remove.
8553         (__arm_vqshruntq_m): Remove.
8555 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8557         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
8558         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
8559         (MVE_SHRN_M_N): Likewise.
8560         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
8561         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
8562         (supf): Likewise.
8563         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
8564         (mve_vqrshruntq_n_s<mode>): Remove.
8565         (mve_vqshrunbq_n_s<mode>): Remove.
8566         (mve_vqshruntq_n_s<mode>): Remove.
8567         (mve_vqrshrunbq_m_n_s<mode>): Remove.
8568         (mve_vqrshruntq_m_n_s<mode>): Remove.
8569         (mve_vqshrunbq_m_n_s<mode>): Remove.
8570         (mve_vqshruntq_m_n_s<mode>): Remove.
8572 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8574         * config/arm/arm-mve-builtins-shapes.cc
8575         (binary_rshift_narrow_unsigned): New.
8576         * config/arm/arm-mve-builtins-shapes.h
8577         (binary_rshift_narrow_unsigned): New.
8579 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8581         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
8582         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
8583         (vqrshrnbq, vqrshrntq): New.
8584         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
8585         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
8586         New.
8587         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
8588         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
8589         * config/arm/arm-mve-builtins.cc
8590         (function_instance::has_inactive_argument): Handle vshrnbq,
8591         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
8592         vqrshrntq.
8593         * config/arm/arm_mve.h (vshrnbq): Remove.
8594         (vshrntq): Remove.
8595         (vshrnbq_m): Remove.
8596         (vshrntq_m): Remove.
8597         (vshrnbq_n_s16): Remove.
8598         (vshrntq_n_s16): Remove.
8599         (vshrnbq_n_u16): Remove.
8600         (vshrntq_n_u16): Remove.
8601         (vshrnbq_n_s32): Remove.
8602         (vshrntq_n_s32): Remove.
8603         (vshrnbq_n_u32): Remove.
8604         (vshrntq_n_u32): Remove.
8605         (vshrnbq_m_n_s32): Remove.
8606         (vshrnbq_m_n_s16): Remove.
8607         (vshrnbq_m_n_u32): Remove.
8608         (vshrnbq_m_n_u16): Remove.
8609         (vshrntq_m_n_s32): Remove.
8610         (vshrntq_m_n_s16): Remove.
8611         (vshrntq_m_n_u32): Remove.
8612         (vshrntq_m_n_u16): Remove.
8613         (__arm_vshrnbq_n_s16): Remove.
8614         (__arm_vshrntq_n_s16): Remove.
8615         (__arm_vshrnbq_n_u16): Remove.
8616         (__arm_vshrntq_n_u16): Remove.
8617         (__arm_vshrnbq_n_s32): Remove.
8618         (__arm_vshrntq_n_s32): Remove.
8619         (__arm_vshrnbq_n_u32): Remove.
8620         (__arm_vshrntq_n_u32): Remove.
8621         (__arm_vshrnbq_m_n_s32): Remove.
8622         (__arm_vshrnbq_m_n_s16): Remove.
8623         (__arm_vshrnbq_m_n_u32): Remove.
8624         (__arm_vshrnbq_m_n_u16): Remove.
8625         (__arm_vshrntq_m_n_s32): Remove.
8626         (__arm_vshrntq_m_n_s16): Remove.
8627         (__arm_vshrntq_m_n_u32): Remove.
8628         (__arm_vshrntq_m_n_u16): Remove.
8629         (__arm_vshrnbq): Remove.
8630         (__arm_vshrntq): Remove.
8631         (__arm_vshrnbq_m): Remove.
8632         (__arm_vshrntq_m): Remove.
8633         (vrshrnbq): Remove.
8634         (vrshrntq): Remove.
8635         (vrshrnbq_m): Remove.
8636         (vrshrntq_m): Remove.
8637         (vrshrnbq_n_s16): Remove.
8638         (vrshrntq_n_s16): Remove.
8639         (vrshrnbq_n_u16): Remove.
8640         (vrshrntq_n_u16): Remove.
8641         (vrshrnbq_n_s32): Remove.
8642         (vrshrntq_n_s32): Remove.
8643         (vrshrnbq_n_u32): Remove.
8644         (vrshrntq_n_u32): Remove.
8645         (vrshrnbq_m_n_s32): Remove.
8646         (vrshrnbq_m_n_s16): Remove.
8647         (vrshrnbq_m_n_u32): Remove.
8648         (vrshrnbq_m_n_u16): Remove.
8649         (vrshrntq_m_n_s32): Remove.
8650         (vrshrntq_m_n_s16): Remove.
8651         (vrshrntq_m_n_u32): Remove.
8652         (vrshrntq_m_n_u16): Remove.
8653         (__arm_vrshrnbq_n_s16): Remove.
8654         (__arm_vrshrntq_n_s16): Remove.
8655         (__arm_vrshrnbq_n_u16): Remove.
8656         (__arm_vrshrntq_n_u16): Remove.
8657         (__arm_vrshrnbq_n_s32): Remove.
8658         (__arm_vrshrntq_n_s32): Remove.
8659         (__arm_vrshrnbq_n_u32): Remove.
8660         (__arm_vrshrntq_n_u32): Remove.
8661         (__arm_vrshrnbq_m_n_s32): Remove.
8662         (__arm_vrshrnbq_m_n_s16): Remove.
8663         (__arm_vrshrnbq_m_n_u32): Remove.
8664         (__arm_vrshrnbq_m_n_u16): Remove.
8665         (__arm_vrshrntq_m_n_s32): Remove.
8666         (__arm_vrshrntq_m_n_s16): Remove.
8667         (__arm_vrshrntq_m_n_u32): Remove.
8668         (__arm_vrshrntq_m_n_u16): Remove.
8669         (__arm_vrshrnbq): Remove.
8670         (__arm_vrshrntq): Remove.
8671         (__arm_vrshrnbq_m): Remove.
8672         (__arm_vrshrntq_m): Remove.
8673         (vqshrnbq): Remove.
8674         (vqshrntq): Remove.
8675         (vqshrnbq_m): Remove.
8676         (vqshrntq_m): Remove.
8677         (vqshrnbq_n_s16): Remove.
8678         (vqshrntq_n_s16): Remove.
8679         (vqshrnbq_n_u16): Remove.
8680         (vqshrntq_n_u16): Remove.
8681         (vqshrnbq_n_s32): Remove.
8682         (vqshrntq_n_s32): Remove.
8683         (vqshrnbq_n_u32): Remove.
8684         (vqshrntq_n_u32): Remove.
8685         (vqshrnbq_m_n_s32): Remove.
8686         (vqshrnbq_m_n_s16): Remove.
8687         (vqshrnbq_m_n_u32): Remove.
8688         (vqshrnbq_m_n_u16): Remove.
8689         (vqshrntq_m_n_s32): Remove.
8690         (vqshrntq_m_n_s16): Remove.
8691         (vqshrntq_m_n_u32): Remove.
8692         (vqshrntq_m_n_u16): Remove.
8693         (__arm_vqshrnbq_n_s16): Remove.
8694         (__arm_vqshrntq_n_s16): Remove.
8695         (__arm_vqshrnbq_n_u16): Remove.
8696         (__arm_vqshrntq_n_u16): Remove.
8697         (__arm_vqshrnbq_n_s32): Remove.
8698         (__arm_vqshrntq_n_s32): Remove.
8699         (__arm_vqshrnbq_n_u32): Remove.
8700         (__arm_vqshrntq_n_u32): Remove.
8701         (__arm_vqshrnbq_m_n_s32): Remove.
8702         (__arm_vqshrnbq_m_n_s16): Remove.
8703         (__arm_vqshrnbq_m_n_u32): Remove.
8704         (__arm_vqshrnbq_m_n_u16): Remove.
8705         (__arm_vqshrntq_m_n_s32): Remove.
8706         (__arm_vqshrntq_m_n_s16): Remove.
8707         (__arm_vqshrntq_m_n_u32): Remove.
8708         (__arm_vqshrntq_m_n_u16): Remove.
8709         (__arm_vqshrnbq): Remove.
8710         (__arm_vqshrntq): Remove.
8711         (__arm_vqshrnbq_m): Remove.
8712         (__arm_vqshrntq_m): Remove.
8713         (vqrshrnbq): Remove.
8714         (vqrshrntq): Remove.
8715         (vqrshrnbq_m): Remove.
8716         (vqrshrntq_m): Remove.
8717         (vqrshrnbq_n_s16): Remove.
8718         (vqrshrnbq_n_u16): Remove.
8719         (vqrshrnbq_n_s32): Remove.
8720         (vqrshrnbq_n_u32): Remove.
8721         (vqrshrntq_n_s16): Remove.
8722         (vqrshrntq_n_u16): Remove.
8723         (vqrshrntq_n_s32): Remove.
8724         (vqrshrntq_n_u32): Remove.
8725         (vqrshrnbq_m_n_s32): Remove.
8726         (vqrshrnbq_m_n_s16): Remove.
8727         (vqrshrnbq_m_n_u32): Remove.
8728         (vqrshrnbq_m_n_u16): Remove.
8729         (vqrshrntq_m_n_s32): Remove.
8730         (vqrshrntq_m_n_s16): Remove.
8731         (vqrshrntq_m_n_u32): Remove.
8732         (vqrshrntq_m_n_u16): Remove.
8733         (__arm_vqrshrnbq_n_s16): Remove.
8734         (__arm_vqrshrnbq_n_u16): Remove.
8735         (__arm_vqrshrnbq_n_s32): Remove.
8736         (__arm_vqrshrnbq_n_u32): Remove.
8737         (__arm_vqrshrntq_n_s16): Remove.
8738         (__arm_vqrshrntq_n_u16): Remove.
8739         (__arm_vqrshrntq_n_s32): Remove.
8740         (__arm_vqrshrntq_n_u32): Remove.
8741         (__arm_vqrshrnbq_m_n_s32): Remove.
8742         (__arm_vqrshrnbq_m_n_s16): Remove.
8743         (__arm_vqrshrnbq_m_n_u32): Remove.
8744         (__arm_vqrshrnbq_m_n_u16): Remove.
8745         (__arm_vqrshrntq_m_n_s32): Remove.
8746         (__arm_vqrshrntq_m_n_s16): Remove.
8747         (__arm_vqrshrntq_m_n_u32): Remove.
8748         (__arm_vqrshrntq_m_n_u16): Remove.
8749         (__arm_vqrshrnbq): Remove.
8750         (__arm_vqrshrntq): Remove.
8751         (__arm_vqrshrnbq_m): Remove.
8752         (__arm_vqrshrntq_m): Remove.
8754 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8756         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
8757         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
8758         vrshrnt, vshrnb, vshrnt.
8759         (isu): New.
8760         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
8761         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
8762         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
8763         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
8764         (mve_vshrntq_n_<supf><mode>): Merge into ...
8765         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8766         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
8767         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
8768         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
8769         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
8770         Merge into ...
8771         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8773 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8775         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
8776         New.
8777         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
8779 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8781         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
8782         (vmaxq, vminq): New.
8783         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
8784         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
8785         * config/arm/arm_mve.h (vminq): Remove.
8786         (vmaxq): Remove.
8787         (vmaxq_m): Remove.
8788         (vminq_m): Remove.
8789         (vminq_x): Remove.
8790         (vmaxq_x): Remove.
8791         (vminq_u8): Remove.
8792         (vmaxq_u8): Remove.
8793         (vminq_s8): Remove.
8794         (vmaxq_s8): Remove.
8795         (vminq_u16): Remove.
8796         (vmaxq_u16): Remove.
8797         (vminq_s16): Remove.
8798         (vmaxq_s16): Remove.
8799         (vminq_u32): Remove.
8800         (vmaxq_u32): Remove.
8801         (vminq_s32): Remove.
8802         (vmaxq_s32): Remove.
8803         (vmaxq_m_s8): Remove.
8804         (vmaxq_m_s32): Remove.
8805         (vmaxq_m_s16): Remove.
8806         (vmaxq_m_u8): Remove.
8807         (vmaxq_m_u32): Remove.
8808         (vmaxq_m_u16): Remove.
8809         (vminq_m_s8): Remove.
8810         (vminq_m_s32): Remove.
8811         (vminq_m_s16): Remove.
8812         (vminq_m_u8): Remove.
8813         (vminq_m_u32): Remove.
8814         (vminq_m_u16): Remove.
8815         (vminq_x_s8): Remove.
8816         (vminq_x_s16): Remove.
8817         (vminq_x_s32): Remove.
8818         (vminq_x_u8): Remove.
8819         (vminq_x_u16): Remove.
8820         (vminq_x_u32): Remove.
8821         (vmaxq_x_s8): Remove.
8822         (vmaxq_x_s16): Remove.
8823         (vmaxq_x_s32): Remove.
8824         (vmaxq_x_u8): Remove.
8825         (vmaxq_x_u16): Remove.
8826         (vmaxq_x_u32): Remove.
8827         (__arm_vminq_u8): Remove.
8828         (__arm_vmaxq_u8): Remove.
8829         (__arm_vminq_s8): Remove.
8830         (__arm_vmaxq_s8): Remove.
8831         (__arm_vminq_u16): Remove.
8832         (__arm_vmaxq_u16): Remove.
8833         (__arm_vminq_s16): Remove.
8834         (__arm_vmaxq_s16): Remove.
8835         (__arm_vminq_u32): Remove.
8836         (__arm_vmaxq_u32): Remove.
8837         (__arm_vminq_s32): Remove.
8838         (__arm_vmaxq_s32): Remove.
8839         (__arm_vmaxq_m_s8): Remove.
8840         (__arm_vmaxq_m_s32): Remove.
8841         (__arm_vmaxq_m_s16): Remove.
8842         (__arm_vmaxq_m_u8): Remove.
8843         (__arm_vmaxq_m_u32): Remove.
8844         (__arm_vmaxq_m_u16): Remove.
8845         (__arm_vminq_m_s8): Remove.
8846         (__arm_vminq_m_s32): Remove.
8847         (__arm_vminq_m_s16): Remove.
8848         (__arm_vminq_m_u8): Remove.
8849         (__arm_vminq_m_u32): Remove.
8850         (__arm_vminq_m_u16): Remove.
8851         (__arm_vminq_x_s8): Remove.
8852         (__arm_vminq_x_s16): Remove.
8853         (__arm_vminq_x_s32): Remove.
8854         (__arm_vminq_x_u8): Remove.
8855         (__arm_vminq_x_u16): Remove.
8856         (__arm_vminq_x_u32): Remove.
8857         (__arm_vmaxq_x_s8): Remove.
8858         (__arm_vmaxq_x_s16): Remove.
8859         (__arm_vmaxq_x_s32): Remove.
8860         (__arm_vmaxq_x_u8): Remove.
8861         (__arm_vmaxq_x_u16): Remove.
8862         (__arm_vmaxq_x_u32): Remove.
8863         (__arm_vminq): Remove.
8864         (__arm_vmaxq): Remove.
8865         (__arm_vmaxq_m): Remove.
8866         (__arm_vminq_m): Remove.
8867         (__arm_vminq_x): Remove.
8868         (__arm_vmaxq_x): Remove.
8870 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8872         * config/arm/iterators.md (MAX_MIN_SU): New.
8873         (max_min_su_str): New.
8874         (max_min_supf): New.
8875         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
8876         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
8877         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
8879 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
8881         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
8882         (vqshlq, vshlq): New.
8883         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
8884         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
8885         * config/arm/arm_mve.h (vshlq): Remove.
8886         (vshlq_r): Remove.
8887         (vshlq_n): Remove.
8888         (vshlq_m_r): Remove.
8889         (vshlq_m): Remove.
8890         (vshlq_m_n): Remove.
8891         (vshlq_x): Remove.
8892         (vshlq_x_n): Remove.
8893         (vshlq_s8): Remove.
8894         (vshlq_s16): Remove.
8895         (vshlq_s32): Remove.
8896         (vshlq_u8): Remove.
8897         (vshlq_u16): Remove.
8898         (vshlq_u32): Remove.
8899         (vshlq_r_u8): Remove.
8900         (vshlq_n_u8): Remove.
8901         (vshlq_r_s8): Remove.
8902         (vshlq_n_s8): Remove.
8903         (vshlq_r_u16): Remove.
8904         (vshlq_n_u16): Remove.
8905         (vshlq_r_s16): Remove.
8906         (vshlq_n_s16): Remove.
8907         (vshlq_r_u32): Remove.
8908         (vshlq_n_u32): Remove.
8909         (vshlq_r_s32): Remove.
8910         (vshlq_n_s32): Remove.
8911         (vshlq_m_r_u8): Remove.
8912         (vshlq_m_r_s8): Remove.
8913         (vshlq_m_r_u16): Remove.
8914         (vshlq_m_r_s16): Remove.
8915         (vshlq_m_r_u32): Remove.
8916         (vshlq_m_r_s32): Remove.
8917         (vshlq_m_u8): Remove.
8918         (vshlq_m_s8): Remove.
8919         (vshlq_m_u16): Remove.
8920         (vshlq_m_s16): Remove.
8921         (vshlq_m_u32): Remove.
8922         (vshlq_m_s32): Remove.
8923         (vshlq_m_n_s8): Remove.
8924         (vshlq_m_n_s32): Remove.
8925         (vshlq_m_n_s16): Remove.
8926         (vshlq_m_n_u8): Remove.
8927         (vshlq_m_n_u32): Remove.
8928         (vshlq_m_n_u16): Remove.
8929         (vshlq_x_s8): Remove.
8930         (vshlq_x_s16): Remove.
8931         (vshlq_x_s32): Remove.
8932         (vshlq_x_u8): Remove.
8933         (vshlq_x_u16): Remove.
8934         (vshlq_x_u32): Remove.
8935         (vshlq_x_n_s8): Remove.
8936         (vshlq_x_n_s16): Remove.
8937         (vshlq_x_n_s32): Remove.
8938         (vshlq_x_n_u8): Remove.
8939         (vshlq_x_n_u16): Remove.
8940         (vshlq_x_n_u32): Remove.
8941         (__arm_vshlq_s8): Remove.
8942         (__arm_vshlq_s16): Remove.
8943         (__arm_vshlq_s32): Remove.
8944         (__arm_vshlq_u8): Remove.
8945         (__arm_vshlq_u16): Remove.
8946         (__arm_vshlq_u32): Remove.
8947         (__arm_vshlq_r_u8): Remove.
8948         (__arm_vshlq_n_u8): Remove.
8949         (__arm_vshlq_r_s8): Remove.
8950         (__arm_vshlq_n_s8): Remove.
8951         (__arm_vshlq_r_u16): Remove.
8952         (__arm_vshlq_n_u16): Remove.
8953         (__arm_vshlq_r_s16): Remove.
8954         (__arm_vshlq_n_s16): Remove.
8955         (__arm_vshlq_r_u32): Remove.
8956         (__arm_vshlq_n_u32): Remove.
8957         (__arm_vshlq_r_s32): Remove.
8958         (__arm_vshlq_n_s32): Remove.
8959         (__arm_vshlq_m_r_u8): Remove.
8960         (__arm_vshlq_m_r_s8): Remove.
8961         (__arm_vshlq_m_r_u16): Remove.
8962         (__arm_vshlq_m_r_s16): Remove.
8963         (__arm_vshlq_m_r_u32): Remove.
8964         (__arm_vshlq_m_r_s32): Remove.
8965         (__arm_vshlq_m_u8): Remove.
8966         (__arm_vshlq_m_s8): Remove.
8967         (__arm_vshlq_m_u16): Remove.
8968         (__arm_vshlq_m_s16): Remove.
8969         (__arm_vshlq_m_u32): Remove.
8970         (__arm_vshlq_m_s32): Remove.
8971         (__arm_vshlq_m_n_s8): Remove.
8972         (__arm_vshlq_m_n_s32): Remove.
8973         (__arm_vshlq_m_n_s16): Remove.
8974         (__arm_vshlq_m_n_u8): Remove.
8975         (__arm_vshlq_m_n_u32): Remove.
8976         (__arm_vshlq_m_n_u16): Remove.
8977         (__arm_vshlq_x_s8): Remove.
8978         (__arm_vshlq_x_s16): Remove.
8979         (__arm_vshlq_x_s32): Remove.
8980         (__arm_vshlq_x_u8): Remove.
8981         (__arm_vshlq_x_u16): Remove.
8982         (__arm_vshlq_x_u32): Remove.
8983         (__arm_vshlq_x_n_s8): Remove.
8984         (__arm_vshlq_x_n_s16): Remove.
8985         (__arm_vshlq_x_n_s32): Remove.
8986         (__arm_vshlq_x_n_u8): Remove.
8987         (__arm_vshlq_x_n_u16): Remove.
8988         (__arm_vshlq_x_n_u32): Remove.
8989         (__arm_vshlq): Remove.
8990         (__arm_vshlq_r): Remove.
8991         (__arm_vshlq_n): Remove.
8992         (__arm_vshlq_m_r): Remove.
8993         (__arm_vshlq_m): Remove.
8994         (__arm_vshlq_m_n): Remove.
8995         (__arm_vshlq_x): Remove.
8996         (__arm_vshlq_x_n): Remove.
8997         (vqshlq): Remove.
8998         (vqshlq_r): Remove.
8999         (vqshlq_n): Remove.
9000         (vqshlq_m_r): Remove.
9001         (vqshlq_m_n): Remove.
9002         (vqshlq_m): Remove.
9003         (vqshlq_u8): Remove.
9004         (vqshlq_r_u8): Remove.
9005         (vqshlq_n_u8): Remove.
9006         (vqshlq_s8): Remove.
9007         (vqshlq_r_s8): Remove.
9008         (vqshlq_n_s8): Remove.
9009         (vqshlq_u16): Remove.
9010         (vqshlq_r_u16): Remove.
9011         (vqshlq_n_u16): Remove.
9012         (vqshlq_s16): Remove.
9013         (vqshlq_r_s16): Remove.
9014         (vqshlq_n_s16): Remove.
9015         (vqshlq_u32): Remove.
9016         (vqshlq_r_u32): Remove.
9017         (vqshlq_n_u32): Remove.
9018         (vqshlq_s32): Remove.
9019         (vqshlq_r_s32): Remove.
9020         (vqshlq_n_s32): Remove.
9021         (vqshlq_m_r_u8): Remove.
9022         (vqshlq_m_r_s8): Remove.
9023         (vqshlq_m_r_u16): Remove.
9024         (vqshlq_m_r_s16): Remove.
9025         (vqshlq_m_r_u32): Remove.
9026         (vqshlq_m_r_s32): Remove.
9027         (vqshlq_m_n_s8): Remove.
9028         (vqshlq_m_n_s32): Remove.
9029         (vqshlq_m_n_s16): Remove.
9030         (vqshlq_m_n_u8): Remove.
9031         (vqshlq_m_n_u32): Remove.
9032         (vqshlq_m_n_u16): Remove.
9033         (vqshlq_m_s8): Remove.
9034         (vqshlq_m_s32): Remove.
9035         (vqshlq_m_s16): Remove.
9036         (vqshlq_m_u8): Remove.
9037         (vqshlq_m_u32): Remove.
9038         (vqshlq_m_u16): Remove.
9039         (__arm_vqshlq_u8): Remove.
9040         (__arm_vqshlq_r_u8): Remove.
9041         (__arm_vqshlq_n_u8): Remove.
9042         (__arm_vqshlq_s8): Remove.
9043         (__arm_vqshlq_r_s8): Remove.
9044         (__arm_vqshlq_n_s8): Remove.
9045         (__arm_vqshlq_u16): Remove.
9046         (__arm_vqshlq_r_u16): Remove.
9047         (__arm_vqshlq_n_u16): Remove.
9048         (__arm_vqshlq_s16): Remove.
9049         (__arm_vqshlq_r_s16): Remove.
9050         (__arm_vqshlq_n_s16): Remove.
9051         (__arm_vqshlq_u32): Remove.
9052         (__arm_vqshlq_r_u32): Remove.
9053         (__arm_vqshlq_n_u32): Remove.
9054         (__arm_vqshlq_s32): Remove.
9055         (__arm_vqshlq_r_s32): Remove.
9056         (__arm_vqshlq_n_s32): Remove.
9057         (__arm_vqshlq_m_r_u8): Remove.
9058         (__arm_vqshlq_m_r_s8): Remove.
9059         (__arm_vqshlq_m_r_u16): Remove.
9060         (__arm_vqshlq_m_r_s16): Remove.
9061         (__arm_vqshlq_m_r_u32): Remove.
9062         (__arm_vqshlq_m_r_s32): Remove.
9063         (__arm_vqshlq_m_n_s8): Remove.
9064         (__arm_vqshlq_m_n_s32): Remove.
9065         (__arm_vqshlq_m_n_s16): Remove.
9066         (__arm_vqshlq_m_n_u8): Remove.
9067         (__arm_vqshlq_m_n_u32): Remove.
9068         (__arm_vqshlq_m_n_u16): Remove.
9069         (__arm_vqshlq_m_s8): Remove.
9070         (__arm_vqshlq_m_s32): Remove.
9071         (__arm_vqshlq_m_s16): Remove.
9072         (__arm_vqshlq_m_u8): Remove.
9073         (__arm_vqshlq_m_u32): Remove.
9074         (__arm_vqshlq_m_u16): Remove.
9075         (__arm_vqshlq): Remove.
9076         (__arm_vqshlq_r): Remove.
9077         (__arm_vqshlq_n): Remove.
9078         (__arm_vqshlq_m_r): Remove.
9079         (__arm_vqshlq_m_n): Remove.
9080         (__arm_vqshlq_m): Remove.
9082 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9084         * config/arm/arm-mve-builtins-functions.h (class
9085         unspec_mve_function_exact_insn_vshl): New.
9087 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9089         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
9090         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
9092 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9094         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
9095         (finish_opt_n_resolution): Handle MODE_r.
9096         * config/arm/arm-mve-builtins.def (r): New mode.
9098 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9100         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
9101         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
9103 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9105         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
9106         (vabdq): New.
9107         * config/arm/arm-mve-builtins-base.def (vabdq): New.
9108         * config/arm/arm-mve-builtins-base.h (vabdq): New.
9109         * config/arm/arm_mve.h (vabdq): Remove.
9110         (vabdq_m): Remove.
9111         (vabdq_x): Remove.
9112         (vabdq_u8): Remove.
9113         (vabdq_s8): Remove.
9114         (vabdq_u16): Remove.
9115         (vabdq_s16): Remove.
9116         (vabdq_u32): Remove.
9117         (vabdq_s32): Remove.
9118         (vabdq_f16): Remove.
9119         (vabdq_f32): Remove.
9120         (vabdq_m_s8): Remove.
9121         (vabdq_m_s32): Remove.
9122         (vabdq_m_s16): Remove.
9123         (vabdq_m_u8): Remove.
9124         (vabdq_m_u32): Remove.
9125         (vabdq_m_u16): Remove.
9126         (vabdq_m_f32): Remove.
9127         (vabdq_m_f16): Remove.
9128         (vabdq_x_s8): Remove.
9129         (vabdq_x_s16): Remove.
9130         (vabdq_x_s32): Remove.
9131         (vabdq_x_u8): Remove.
9132         (vabdq_x_u16): Remove.
9133         (vabdq_x_u32): Remove.
9134         (vabdq_x_f16): Remove.
9135         (vabdq_x_f32): Remove.
9136         (__arm_vabdq_u8): Remove.
9137         (__arm_vabdq_s8): Remove.
9138         (__arm_vabdq_u16): Remove.
9139         (__arm_vabdq_s16): Remove.
9140         (__arm_vabdq_u32): Remove.
9141         (__arm_vabdq_s32): Remove.
9142         (__arm_vabdq_m_s8): Remove.
9143         (__arm_vabdq_m_s32): Remove.
9144         (__arm_vabdq_m_s16): Remove.
9145         (__arm_vabdq_m_u8): Remove.
9146         (__arm_vabdq_m_u32): Remove.
9147         (__arm_vabdq_m_u16): Remove.
9148         (__arm_vabdq_x_s8): Remove.
9149         (__arm_vabdq_x_s16): Remove.
9150         (__arm_vabdq_x_s32): Remove.
9151         (__arm_vabdq_x_u8): Remove.
9152         (__arm_vabdq_x_u16): Remove.
9153         (__arm_vabdq_x_u32): Remove.
9154         (__arm_vabdq_f16): Remove.
9155         (__arm_vabdq_f32): Remove.
9156         (__arm_vabdq_m_f32): Remove.
9157         (__arm_vabdq_m_f16): Remove.
9158         (__arm_vabdq_x_f16): Remove.
9159         (__arm_vabdq_x_f32): Remove.
9160         (__arm_vabdq): Remove.
9161         (__arm_vabdq_m): Remove.
9162         (__arm_vabdq_x): Remove.
9164 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9166         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
9167         (MVE_FP_VABDQ_ONLY): New.
9168         (mve_insn): Add vabd.
9169         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
9170         (@mve_<mve_insn>q_f<mode>): ... this.
9171         (mve_vabdq_m_f<mode>): Remove.
9173 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9175         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
9176         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
9177         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
9178         * config/arm/arm_mve.h (vqrdmulhq): Remove.
9179         (vqrdmulhq_m): Remove.
9180         (vqrdmulhq_s8): Remove.
9181         (vqrdmulhq_n_s8): Remove.
9182         (vqrdmulhq_s16): Remove.
9183         (vqrdmulhq_n_s16): Remove.
9184         (vqrdmulhq_s32): Remove.
9185         (vqrdmulhq_n_s32): Remove.
9186         (vqrdmulhq_m_n_s8): Remove.
9187         (vqrdmulhq_m_n_s32): Remove.
9188         (vqrdmulhq_m_n_s16): Remove.
9189         (vqrdmulhq_m_s8): Remove.
9190         (vqrdmulhq_m_s32): Remove.
9191         (vqrdmulhq_m_s16): Remove.
9192         (__arm_vqrdmulhq_s8): Remove.
9193         (__arm_vqrdmulhq_n_s8): Remove.
9194         (__arm_vqrdmulhq_s16): Remove.
9195         (__arm_vqrdmulhq_n_s16): Remove.
9196         (__arm_vqrdmulhq_s32): Remove.
9197         (__arm_vqrdmulhq_n_s32): Remove.
9198         (__arm_vqrdmulhq_m_n_s8): Remove.
9199         (__arm_vqrdmulhq_m_n_s32): Remove.
9200         (__arm_vqrdmulhq_m_n_s16): Remove.
9201         (__arm_vqrdmulhq_m_s8): Remove.
9202         (__arm_vqrdmulhq_m_s32): Remove.
9203         (__arm_vqrdmulhq_m_s16): Remove.
9204         (__arm_vqrdmulhq): Remove.
9205         (__arm_vqrdmulhq_m): Remove.
9207 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9209         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
9210         (MVE_SHIFT_N, MVE_SHIFT_R): New.
9211         (mve_insn): Add vqshl, vshl.
9212         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
9213         (mve_vshlq_n_<supf><mode>): Merge into ...
9214         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9215         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
9216         ...
9217         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
9218         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
9219         into ...
9220         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
9221         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
9222         into ...
9223         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9224         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
9225         into ...
9226         (@mve_<mve_insn>q_<supf><mode>): ... this.
9228 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9230         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
9231         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
9232         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
9233         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
9234         vqrshlq, vrshlq.
9235         * config/arm/arm_mve.h (vrshlq): Remove.
9236         (vrshlq_m_n): Remove.
9237         (vrshlq_m): Remove.
9238         (vrshlq_x): Remove.
9239         (vrshlq_u8): Remove.
9240         (vrshlq_n_u8): Remove.
9241         (vrshlq_s8): Remove.
9242         (vrshlq_n_s8): Remove.
9243         (vrshlq_u16): Remove.
9244         (vrshlq_n_u16): Remove.
9245         (vrshlq_s16): Remove.
9246         (vrshlq_n_s16): Remove.
9247         (vrshlq_u32): Remove.
9248         (vrshlq_n_u32): Remove.
9249         (vrshlq_s32): Remove.
9250         (vrshlq_n_s32): Remove.
9251         (vrshlq_m_n_u8): Remove.
9252         (vrshlq_m_n_s8): Remove.
9253         (vrshlq_m_n_u16): Remove.
9254         (vrshlq_m_n_s16): Remove.
9255         (vrshlq_m_n_u32): Remove.
9256         (vrshlq_m_n_s32): Remove.
9257         (vrshlq_m_s8): Remove.
9258         (vrshlq_m_s32): Remove.
9259         (vrshlq_m_s16): Remove.
9260         (vrshlq_m_u8): Remove.
9261         (vrshlq_m_u32): Remove.
9262         (vrshlq_m_u16): Remove.
9263         (vrshlq_x_s8): Remove.
9264         (vrshlq_x_s16): Remove.
9265         (vrshlq_x_s32): Remove.
9266         (vrshlq_x_u8): Remove.
9267         (vrshlq_x_u16): Remove.
9268         (vrshlq_x_u32): Remove.
9269         (__arm_vrshlq_u8): Remove.
9270         (__arm_vrshlq_n_u8): Remove.
9271         (__arm_vrshlq_s8): Remove.
9272         (__arm_vrshlq_n_s8): Remove.
9273         (__arm_vrshlq_u16): Remove.
9274         (__arm_vrshlq_n_u16): Remove.
9275         (__arm_vrshlq_s16): Remove.
9276         (__arm_vrshlq_n_s16): Remove.
9277         (__arm_vrshlq_u32): Remove.
9278         (__arm_vrshlq_n_u32): Remove.
9279         (__arm_vrshlq_s32): Remove.
9280         (__arm_vrshlq_n_s32): Remove.
9281         (__arm_vrshlq_m_n_u8): Remove.
9282         (__arm_vrshlq_m_n_s8): Remove.
9283         (__arm_vrshlq_m_n_u16): Remove.
9284         (__arm_vrshlq_m_n_s16): Remove.
9285         (__arm_vrshlq_m_n_u32): Remove.
9286         (__arm_vrshlq_m_n_s32): Remove.
9287         (__arm_vrshlq_m_s8): Remove.
9288         (__arm_vrshlq_m_s32): Remove.
9289         (__arm_vrshlq_m_s16): Remove.
9290         (__arm_vrshlq_m_u8): Remove.
9291         (__arm_vrshlq_m_u32): Remove.
9292         (__arm_vrshlq_m_u16): Remove.
9293         (__arm_vrshlq_x_s8): Remove.
9294         (__arm_vrshlq_x_s16): Remove.
9295         (__arm_vrshlq_x_s32): Remove.
9296         (__arm_vrshlq_x_u8): Remove.
9297         (__arm_vrshlq_x_u16): Remove.
9298         (__arm_vrshlq_x_u32): Remove.
9299         (__arm_vrshlq): Remove.
9300         (__arm_vrshlq_m_n): Remove.
9301         (__arm_vrshlq_m): Remove.
9302         (__arm_vrshlq_x): Remove.
9303         (vqrshlq): Remove.
9304         (vqrshlq_m_n): Remove.
9305         (vqrshlq_m): Remove.
9306         (vqrshlq_u8): Remove.
9307         (vqrshlq_n_u8): Remove.
9308         (vqrshlq_s8): Remove.
9309         (vqrshlq_n_s8): Remove.
9310         (vqrshlq_u16): Remove.
9311         (vqrshlq_n_u16): Remove.
9312         (vqrshlq_s16): Remove.
9313         (vqrshlq_n_s16): Remove.
9314         (vqrshlq_u32): Remove.
9315         (vqrshlq_n_u32): Remove.
9316         (vqrshlq_s32): Remove.
9317         (vqrshlq_n_s32): Remove.
9318         (vqrshlq_m_n_u8): Remove.
9319         (vqrshlq_m_n_s8): Remove.
9320         (vqrshlq_m_n_u16): Remove.
9321         (vqrshlq_m_n_s16): Remove.
9322         (vqrshlq_m_n_u32): Remove.
9323         (vqrshlq_m_n_s32): Remove.
9324         (vqrshlq_m_s8): Remove.
9325         (vqrshlq_m_s32): Remove.
9326         (vqrshlq_m_s16): Remove.
9327         (vqrshlq_m_u8): Remove.
9328         (vqrshlq_m_u32): Remove.
9329         (vqrshlq_m_u16): Remove.
9330         (__arm_vqrshlq_u8): Remove.
9331         (__arm_vqrshlq_n_u8): Remove.
9332         (__arm_vqrshlq_s8): Remove.
9333         (__arm_vqrshlq_n_s8): Remove.
9334         (__arm_vqrshlq_u16): Remove.
9335         (__arm_vqrshlq_n_u16): Remove.
9336         (__arm_vqrshlq_s16): Remove.
9337         (__arm_vqrshlq_n_s16): Remove.
9338         (__arm_vqrshlq_u32): Remove.
9339         (__arm_vqrshlq_n_u32): Remove.
9340         (__arm_vqrshlq_s32): Remove.
9341         (__arm_vqrshlq_n_s32): Remove.
9342         (__arm_vqrshlq_m_n_u8): Remove.
9343         (__arm_vqrshlq_m_n_s8): Remove.
9344         (__arm_vqrshlq_m_n_u16): Remove.
9345         (__arm_vqrshlq_m_n_s16): Remove.
9346         (__arm_vqrshlq_m_n_u32): Remove.
9347         (__arm_vqrshlq_m_n_s32): Remove.
9348         (__arm_vqrshlq_m_s8): Remove.
9349         (__arm_vqrshlq_m_s32): Remove.
9350         (__arm_vqrshlq_m_s16): Remove.
9351         (__arm_vqrshlq_m_u8): Remove.
9352         (__arm_vqrshlq_m_u32): Remove.
9353         (__arm_vqrshlq_m_u16): Remove.
9354         (__arm_vqrshlq): Remove.
9355         (__arm_vqrshlq_m_n): Remove.
9356         (__arm_vqrshlq_m): Remove.
9358 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9360         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
9361         (mve_insn): Add vqrshl, vrshl.
9362         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
9363         (mve_vrshlq_n_<supf><mode>): Merge into ...
9364         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9365         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
9366         into ...
9367         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9369 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
9371         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
9372         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
9374 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9376         PR target/109615
9377         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
9378         denegrate PHI optmization.
9380 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
9382         * config/i386/predicates.md (register_no_SP_operand):
9383         Rename from index_register_operand.
9384         (call_register_operand): Update for rename.
9385         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
9387 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
9389         PR bootstrap/84402
9390         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
9391         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
9392         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
9393         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
9394         (s-match): Split into s-generic-match and s-gimple-match.
9395         * configure.ac (with-matchpd-partitions,
9396         DEFAULT_MATCHPD_PARTITIONS): New.
9397         * configure: Regenerate.
9399 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
9401         PR bootstrap/84402
9402         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
9403         (decision_tree::gen): Accept list of files instead of single and update
9404         to write function definition to header and main file.
9405         (write_predicate): Likewise.
9406         (write_header): Emit pragmas and new includes.
9407         (main): Create file buffers and cleanup.
9408         (showUsage, write_header_includes): New.
9410 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
9412         PR bootstrap/84402
9413         * Makefile.in (OBJS): Add gimple-match-exports.o.
9414         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
9415         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
9416         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
9417         gimple_resimplify5, constant_for_folding, convert_conditional_op,
9418         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
9419         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
9420         do_valueize, try_conditional_simplification, gimple_extract,
9421         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
9422         commutative_ternary_op_p, first_commutative_argument,
9423         associative_binary_op_p, directly_supported_p,
9424         get_conditional_internal_fn): Moved to gimple-match-exports.cc
9425         * gimple-match-exports.cc: New file.
9427 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
9429         PR bootstrap/84402
9430         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
9431         debug_dump var.
9432         (dt_simplify::gen_1): Use it.
9434 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
9436         PR bootstrap/84402
9437         * genmatch.cc (output_line_directive): Only emit commented directive
9438         when -vv.
9440 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
9442         PR bootstrap/84402
9443         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
9445 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
9447         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
9448         unused in_mode/in_n variables.
9450 2023-05-05  Richard Biener  <rguenther@suse.de>
9452         PR tree-optimization/109735
9453         * tree-vect-stmts.cc (vectorizable_operation): Perform
9454         conversion for POINTER_DIFF_EXPR unconditionally.
9456 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
9458         * config/i386/mmx.md (mulv2si3): New expander.
9459         (*mulv2si3): New insn pattern.
9461 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
9462             Thomas Schwinge  <thomas@codesourcery.com>
9464         PR libgomp/108098
9465         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
9466         alongside reverse-offload function table to prevent NULL values
9467         of the function addresses.
9469 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
9471         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
9472         mpft_t -> mpfr_t.
9473         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
9475 2023-05-05  Andrew Pinski  <apinski@marvell.com>
9477         PR tree-optimization/109732
9478         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
9479         of the argtrue/argfalse.
9481 2023-05-05  Andrew Pinski  <apinski@marvell.com>
9483         PR tree-optimization/109722
9484         * match.pd: Extend the `ABS<a> == 0` pattern
9485         to cover `ABSU<a> == 0` too.
9487 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
9489         PR target/109733
9490         * config/i386/predicates.md (index_reg_operand): New predicate.
9491         * config/i386/i386.md (ashift to lea spliter): Use
9492         general_reg_operand and index_reg_operand predicates.
9494 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9496         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
9497         Rename and reimplement with RTL codes to...
9498         (aarch64_<optab>hn2<mode>_insn_le): .. This.
9499         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
9500         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
9501         codes to...
9502         (aarch64_<optab>hn2<mode>_insn_be): ... This.
9503         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
9504         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
9505         (aarch64_<optab>hn2<mode>): ... This.
9506         (aarch64_r<optab>hn2<mode>): New expander.
9507         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
9508         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
9509         (ADDSUBHN): Delete.
9510         (sur): Remove handling of the above.
9511         (addsub): Likewise.
9513 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9515         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
9516         Delete.
9517         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
9518         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
9519         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
9520         (aarch64_<sur><addsub>hn<mode>): Delete.
9521         (aarch64_<optab>hn<mode>): New define_expand.
9522         (aarch64_r<optab>hn<mode>): Likewise.
9523         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
9524         New predicate.
9526 2023-05-04  Andrew Pinski  <apinski@marvell.com>
9528         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
9529         diamond form bb with forwarder only empty blocks better.
9531 2023-05-04  Andrew Pinski  <apinski@marvell.com>
9533         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
9534         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
9535         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
9536         of an inline version of it.
9537         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
9538         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
9540 2023-05-04  Andrew Pinski  <apinski@marvell.com>
9542         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
9543         the default argument value for dce_ssa_names to nullptr.
9544         Check to make sure dce_ssa_names is a non-nullptr before
9545         calling simple_dce_from_worklist.
9547 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
9549         * config/i386/predicates.md (index_register_operand): Reject
9550         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
9551         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
9552         (call_register_no_elim_operand): Rewrite as ...
9553         (call_register_operand): ... this.
9554         (call_insn_operand): Use call_register_operand predicate.
9556 2023-05-04  Richard Biener  <rguenther@suse.de>
9558         PR tree-optimization/109721
9559         * tree-vect-stmts.cc (vectorizable_operation): Make sure
9560         to test word_mode for all !target_support_p operations.
9562 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9564         PR target/99195
9565         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
9566         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
9567         (aarch64_mla<mode>): Rename to...
9568         (aarch64_mla<mode><vczle><vczbe>): ... This.
9569         (*aarch64_mla_elt<mode>): Rename to...
9570         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
9571         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
9572         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9573         (aarch64_mla_n<mode>): Rename to...
9574         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
9575         (aarch64_mls<mode>): Rename to...
9576         (aarch64_mls<mode><vczle><vczbe>): ... This.
9577         (*aarch64_mls_elt<mode>): Rename to...
9578         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
9579         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
9580         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9581         (aarch64_mls_n<mode>): Rename to...
9582         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
9583         (fma<mode>4): Rename to...
9584         (fma<mode>4<vczle><vczbe>): ... This.
9585         (*aarch64_fma4_elt<mode>): Rename to...
9586         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
9587         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
9588         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9589         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
9590         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
9591         (fnma<mode>4): Rename to...
9592         (fnma<mode>4<vczle><vczbe>): ... This.
9593         (*aarch64_fnma4_elt<mode>): Rename to...
9594         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
9595         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
9596         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
9597         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
9598         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
9599         (aarch64_simd_bsl<mode>_internal): Rename to...
9600         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
9601         (*aarch64_simd_bsl<mode>_alt): Rename to...
9602         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
9604 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9606         PR target/99195
9607         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
9608         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
9609         (fabd<mode>3): Rename to...
9610         (fabd<mode>3<vczle><vczbe>): ... This.
9611         (aarch64_<optab>p<mode>): Rename to...
9612         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
9613         (aarch64_faddp<mode>): Rename to...
9614         (aarch64_faddp<mode><vczle><vczbe>): ... This.
9616 2023-05-04  Martin Liska  <mliska@suse.cz>
9618         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
9619         (print_version): Use it.
9620         (generate_results): Likewise.
9622 2023-05-04  Richard Biener  <rguenther@suse.de>
9624         * tree-cfg.h (last_stmt): Rename to ...
9625         (last_nondebug_stmt): ... this.
9626         * tree-cfg.cc (last_stmt): Rename to ...
9627         (last_nondebug_stmt): ... this.
9628         (assign_discriminators): Adjust.
9629         (group_case_labels_stmt): Likewise.
9630         (gimple_can_duplicate_bb_p): Likewise.
9631         (execute_fixup_cfg): Likewise.
9632         * auto-profile.cc (afdo_propagate_circuit): Likewise.
9633         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
9634         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
9635         (determine_parallel_type): Likewise.
9636         (adjust_context_and_scope): Likewise.
9637         (expand_task_call): Likewise.
9638         (remove_exit_barrier): Likewise.
9639         (expand_omp_taskreg): Likewise.
9640         (expand_omp_for_init_counts): Likewise.
9641         (expand_omp_for_init_vars): Likewise.
9642         (expand_omp_for_static_chunk): Likewise.
9643         (expand_omp_simd): Likewise.
9644         (expand_oacc_for): Likewise.
9645         (expand_omp_for): Likewise.
9646         (expand_omp_sections): Likewise.
9647         (expand_omp_atomic_fetch_op): Likewise.
9648         (expand_omp_atomic_cas): Likewise.
9649         (expand_omp_atomic): Likewise.
9650         (expand_omp_target): Likewise.
9651         (expand_omp): Likewise.
9652         (omp_make_gimple_edges): Likewise.
9653         * trans-mem.cc (tm_region_init): Likewise.
9654         * tree-inline.cc (redirect_all_calls): Likewise.
9655         * tree-parloops.cc (gen_parallel_loop): Likewise.
9656         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
9657         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
9658         Likewise.
9659         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
9660         (may_eliminate_iv): Likewise.
9661         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
9662         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
9663         Likewise.
9664         (estimate_numbers_of_iterations): Likewise.
9665         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
9666         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
9667         (set_predicates_for_bb): Likewise.
9668         (init_loop_unswitch_info): Likewise.
9669         (hoist_guard): Likewise.
9670         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
9671         (minmax_replacement): Likewise.
9672         * tree-ssa-reassoc.cc (update_range_test): Likewise.
9673         (optimize_range_tests_to_bit_test): Likewise.
9674         (optimize_range_tests_var_bound): Likewise.
9675         (optimize_range_tests): Likewise.
9676         (no_side_effect_bb): Likewise.
9677         (suitable_cond_bb): Likewise.
9678         (maybe_optimize_range_tests): Likewise.
9679         (reassociate_bb): Likewise.
9680         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
9682 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
9684         PR debug/109676
9685         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
9686         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
9687         for it only if it still has TImode.  Don't decide whether to call
9688         fix_debug_reg_uses based on whether SRC is ever set or not.
9690 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
9692         * config/cris/cris.cc (cris_split_constant): New function.
9693         * config/cris/cris.md (splitop): New iterator.
9694         (opsplit1): New define_peephole2.
9695         * config/cris/cris-protos.h (cris_split_constant): Declare.
9696         (cris_splittable_constant_p): New macro.
9698 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
9700         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
9701         to ALL_REGS.
9703 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
9705         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
9706         lra_in_progress, not reload_in_progress.
9707         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
9708         * config/cris/constraints.md ("Q"): Ditto.
9710 2023-05-03  Andrew Pinski  <apinski@marvell.com>
9712         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
9713         stats on removed number of statements and phis.
9715 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
9717         PR tree-optimization/109711
9718         * value-range.cc (irange::verify_range): Allow types of
9719         error_mark_node.
9721 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
9723         PR sanitizer/90746
9724         * calls.cc (can_implement_as_sibling_call_p): Reject calls
9725         to __sanitizer_cov_trace_pc.
9727 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
9729         PR target/109661
9730         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
9731         a new ABI break parameter for GCC 14.  Set it to the alignment
9732         of enums that have an underlying type.  Take the true alignment
9733         of such enums from the TYPE_ALIGN of the underlying type's
9734         TYPE_MAIN_VARIANT.
9735         (aarch64_function_arg_boundary): Update accordingly.
9736         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
9737         Warn about ABI differences.
9739 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
9741         PR target/109661
9742         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
9743         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
9744         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
9745         (aarch64_gimplify_va_arg_expr): Likewise.
9747 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
9749         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
9750         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
9751         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
9752         (vrmulhq): New.
9753         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
9754         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
9755         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
9756         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
9757         * config/arm/arm_mve.h (vhsubq): Remove.
9758         (vhaddq): Remove.
9759         (vhaddq_m): Remove.
9760         (vhsubq_m): Remove.
9761         (vhaddq_x): Remove.
9762         (vhsubq_x): Remove.
9763         (vhsubq_u8): Remove.
9764         (vhsubq_n_u8): Remove.
9765         (vhaddq_u8): Remove.
9766         (vhaddq_n_u8): Remove.
9767         (vhsubq_s8): Remove.
9768         (vhsubq_n_s8): Remove.
9769         (vhaddq_s8): Remove.
9770         (vhaddq_n_s8): Remove.
9771         (vhsubq_u16): Remove.
9772         (vhsubq_n_u16): Remove.
9773         (vhaddq_u16): Remove.
9774         (vhaddq_n_u16): Remove.
9775         (vhsubq_s16): Remove.
9776         (vhsubq_n_s16): Remove.
9777         (vhaddq_s16): Remove.
9778         (vhaddq_n_s16): Remove.
9779         (vhsubq_u32): Remove.
9780         (vhsubq_n_u32): Remove.
9781         (vhaddq_u32): Remove.
9782         (vhaddq_n_u32): Remove.
9783         (vhsubq_s32): Remove.
9784         (vhsubq_n_s32): Remove.
9785         (vhaddq_s32): Remove.
9786         (vhaddq_n_s32): Remove.
9787         (vhaddq_m_n_s8): Remove.
9788         (vhaddq_m_n_s32): Remove.
9789         (vhaddq_m_n_s16): Remove.
9790         (vhaddq_m_n_u8): Remove.
9791         (vhaddq_m_n_u32): Remove.
9792         (vhaddq_m_n_u16): Remove.
9793         (vhaddq_m_s8): Remove.
9794         (vhaddq_m_s32): Remove.
9795         (vhaddq_m_s16): Remove.
9796         (vhaddq_m_u8): Remove.
9797         (vhaddq_m_u32): Remove.
9798         (vhaddq_m_u16): Remove.
9799         (vhsubq_m_n_s8): Remove.
9800         (vhsubq_m_n_s32): Remove.
9801         (vhsubq_m_n_s16): Remove.
9802         (vhsubq_m_n_u8): Remove.
9803         (vhsubq_m_n_u32): Remove.
9804         (vhsubq_m_n_u16): Remove.
9805         (vhsubq_m_s8): Remove.
9806         (vhsubq_m_s32): Remove.
9807         (vhsubq_m_s16): Remove.
9808         (vhsubq_m_u8): Remove.
9809         (vhsubq_m_u32): Remove.
9810         (vhsubq_m_u16): Remove.
9811         (vhaddq_x_n_s8): Remove.
9812         (vhaddq_x_n_s16): Remove.
9813         (vhaddq_x_n_s32): Remove.
9814         (vhaddq_x_n_u8): Remove.
9815         (vhaddq_x_n_u16): Remove.
9816         (vhaddq_x_n_u32): Remove.
9817         (vhaddq_x_s8): Remove.
9818         (vhaddq_x_s16): Remove.
9819         (vhaddq_x_s32): Remove.
9820         (vhaddq_x_u8): Remove.
9821         (vhaddq_x_u16): Remove.
9822         (vhaddq_x_u32): Remove.
9823         (vhsubq_x_n_s8): Remove.
9824         (vhsubq_x_n_s16): Remove.
9825         (vhsubq_x_n_s32): Remove.
9826         (vhsubq_x_n_u8): Remove.
9827         (vhsubq_x_n_u16): Remove.
9828         (vhsubq_x_n_u32): Remove.
9829         (vhsubq_x_s8): Remove.
9830         (vhsubq_x_s16): Remove.
9831         (vhsubq_x_s32): Remove.
9832         (vhsubq_x_u8): Remove.
9833         (vhsubq_x_u16): Remove.
9834         (vhsubq_x_u32): Remove.
9835         (__arm_vhsubq_u8): Remove.
9836         (__arm_vhsubq_n_u8): Remove.
9837         (__arm_vhaddq_u8): Remove.
9838         (__arm_vhaddq_n_u8): Remove.
9839         (__arm_vhsubq_s8): Remove.
9840         (__arm_vhsubq_n_s8): Remove.
9841         (__arm_vhaddq_s8): Remove.
9842         (__arm_vhaddq_n_s8): Remove.
9843         (__arm_vhsubq_u16): Remove.
9844         (__arm_vhsubq_n_u16): Remove.
9845         (__arm_vhaddq_u16): Remove.
9846         (__arm_vhaddq_n_u16): Remove.
9847         (__arm_vhsubq_s16): Remove.
9848         (__arm_vhsubq_n_s16): Remove.
9849         (__arm_vhaddq_s16): Remove.
9850         (__arm_vhaddq_n_s16): Remove.
9851         (__arm_vhsubq_u32): Remove.
9852         (__arm_vhsubq_n_u32): Remove.
9853         (__arm_vhaddq_u32): Remove.
9854         (__arm_vhaddq_n_u32): Remove.
9855         (__arm_vhsubq_s32): Remove.
9856         (__arm_vhsubq_n_s32): Remove.
9857         (__arm_vhaddq_s32): Remove.
9858         (__arm_vhaddq_n_s32): Remove.
9859         (__arm_vhaddq_m_n_s8): Remove.
9860         (__arm_vhaddq_m_n_s32): Remove.
9861         (__arm_vhaddq_m_n_s16): Remove.
9862         (__arm_vhaddq_m_n_u8): Remove.
9863         (__arm_vhaddq_m_n_u32): Remove.
9864         (__arm_vhaddq_m_n_u16): Remove.
9865         (__arm_vhaddq_m_s8): Remove.
9866         (__arm_vhaddq_m_s32): Remove.
9867         (__arm_vhaddq_m_s16): Remove.
9868         (__arm_vhaddq_m_u8): Remove.
9869         (__arm_vhaddq_m_u32): Remove.
9870         (__arm_vhaddq_m_u16): Remove.
9871         (__arm_vhsubq_m_n_s8): Remove.
9872         (__arm_vhsubq_m_n_s32): Remove.
9873         (__arm_vhsubq_m_n_s16): Remove.
9874         (__arm_vhsubq_m_n_u8): Remove.
9875         (__arm_vhsubq_m_n_u32): Remove.
9876         (__arm_vhsubq_m_n_u16): Remove.
9877         (__arm_vhsubq_m_s8): Remove.
9878         (__arm_vhsubq_m_s32): Remove.
9879         (__arm_vhsubq_m_s16): Remove.
9880         (__arm_vhsubq_m_u8): Remove.
9881         (__arm_vhsubq_m_u32): Remove.
9882         (__arm_vhsubq_m_u16): Remove.
9883         (__arm_vhaddq_x_n_s8): Remove.
9884         (__arm_vhaddq_x_n_s16): Remove.
9885         (__arm_vhaddq_x_n_s32): Remove.
9886         (__arm_vhaddq_x_n_u8): Remove.
9887         (__arm_vhaddq_x_n_u16): Remove.
9888         (__arm_vhaddq_x_n_u32): Remove.
9889         (__arm_vhaddq_x_s8): Remove.
9890         (__arm_vhaddq_x_s16): Remove.
9891         (__arm_vhaddq_x_s32): Remove.
9892         (__arm_vhaddq_x_u8): Remove.
9893         (__arm_vhaddq_x_u16): Remove.
9894         (__arm_vhaddq_x_u32): Remove.
9895         (__arm_vhsubq_x_n_s8): Remove.
9896         (__arm_vhsubq_x_n_s16): Remove.
9897         (__arm_vhsubq_x_n_s32): Remove.
9898         (__arm_vhsubq_x_n_u8): Remove.
9899         (__arm_vhsubq_x_n_u16): Remove.
9900         (__arm_vhsubq_x_n_u32): Remove.
9901         (__arm_vhsubq_x_s8): Remove.
9902         (__arm_vhsubq_x_s16): Remove.
9903         (__arm_vhsubq_x_s32): Remove.
9904         (__arm_vhsubq_x_u8): Remove.
9905         (__arm_vhsubq_x_u16): Remove.
9906         (__arm_vhsubq_x_u32): Remove.
9907         (__arm_vhsubq): Remove.
9908         (__arm_vhaddq): Remove.
9909         (__arm_vhaddq_m): Remove.
9910         (__arm_vhsubq_m): Remove.
9911         (__arm_vhaddq_x): Remove.
9912         (__arm_vhsubq_x): Remove.
9913         (vmulhq): Remove.
9914         (vmulhq_m): Remove.
9915         (vmulhq_x): Remove.
9916         (vmulhq_u8): Remove.
9917         (vmulhq_s8): Remove.
9918         (vmulhq_u16): Remove.
9919         (vmulhq_s16): Remove.
9920         (vmulhq_u32): Remove.
9921         (vmulhq_s32): Remove.
9922         (vmulhq_m_s8): Remove.
9923         (vmulhq_m_s32): Remove.
9924         (vmulhq_m_s16): Remove.
9925         (vmulhq_m_u8): Remove.
9926         (vmulhq_m_u32): Remove.
9927         (vmulhq_m_u16): Remove.
9928         (vmulhq_x_s8): Remove.
9929         (vmulhq_x_s16): Remove.
9930         (vmulhq_x_s32): Remove.
9931         (vmulhq_x_u8): Remove.
9932         (vmulhq_x_u16): Remove.
9933         (vmulhq_x_u32): Remove.
9934         (__arm_vmulhq_u8): Remove.
9935         (__arm_vmulhq_s8): Remove.
9936         (__arm_vmulhq_u16): Remove.
9937         (__arm_vmulhq_s16): Remove.
9938         (__arm_vmulhq_u32): Remove.
9939         (__arm_vmulhq_s32): Remove.
9940         (__arm_vmulhq_m_s8): Remove.
9941         (__arm_vmulhq_m_s32): Remove.
9942         (__arm_vmulhq_m_s16): Remove.
9943         (__arm_vmulhq_m_u8): Remove.
9944         (__arm_vmulhq_m_u32): Remove.
9945         (__arm_vmulhq_m_u16): Remove.
9946         (__arm_vmulhq_x_s8): Remove.
9947         (__arm_vmulhq_x_s16): Remove.
9948         (__arm_vmulhq_x_s32): Remove.
9949         (__arm_vmulhq_x_u8): Remove.
9950         (__arm_vmulhq_x_u16): Remove.
9951         (__arm_vmulhq_x_u32): Remove.
9952         (__arm_vmulhq): Remove.
9953         (__arm_vmulhq_m): Remove.
9954         (__arm_vmulhq_x): Remove.
9955         (vqsubq): Remove.
9956         (vqaddq): Remove.
9957         (vqaddq_m): Remove.
9958         (vqsubq_m): Remove.
9959         (vqsubq_u8): Remove.
9960         (vqsubq_n_u8): Remove.
9961         (vqaddq_u8): Remove.
9962         (vqaddq_n_u8): Remove.
9963         (vqsubq_s8): Remove.
9964         (vqsubq_n_s8): Remove.
9965         (vqaddq_s8): Remove.
9966         (vqaddq_n_s8): Remove.
9967         (vqsubq_u16): Remove.
9968         (vqsubq_n_u16): Remove.
9969         (vqaddq_u16): Remove.
9970         (vqaddq_n_u16): Remove.
9971         (vqsubq_s16): Remove.
9972         (vqsubq_n_s16): Remove.
9973         (vqaddq_s16): Remove.
9974         (vqaddq_n_s16): Remove.
9975         (vqsubq_u32): Remove.
9976         (vqsubq_n_u32): Remove.
9977         (vqaddq_u32): Remove.
9978         (vqaddq_n_u32): Remove.
9979         (vqsubq_s32): Remove.
9980         (vqsubq_n_s32): Remove.
9981         (vqaddq_s32): Remove.
9982         (vqaddq_n_s32): Remove.
9983         (vqaddq_m_n_s8): Remove.
9984         (vqaddq_m_n_s32): Remove.
9985         (vqaddq_m_n_s16): Remove.
9986         (vqaddq_m_n_u8): Remove.
9987         (vqaddq_m_n_u32): Remove.
9988         (vqaddq_m_n_u16): Remove.
9989         (vqaddq_m_s8): Remove.
9990         (vqaddq_m_s32): Remove.
9991         (vqaddq_m_s16): Remove.
9992         (vqaddq_m_u8): Remove.
9993         (vqaddq_m_u32): Remove.
9994         (vqaddq_m_u16): Remove.
9995         (vqsubq_m_n_s8): Remove.
9996         (vqsubq_m_n_s32): Remove.
9997         (vqsubq_m_n_s16): Remove.
9998         (vqsubq_m_n_u8): Remove.
9999         (vqsubq_m_n_u32): Remove.
10000         (vqsubq_m_n_u16): Remove.
10001         (vqsubq_m_s8): Remove.
10002         (vqsubq_m_s32): Remove.
10003         (vqsubq_m_s16): Remove.
10004         (vqsubq_m_u8): Remove.
10005         (vqsubq_m_u32): Remove.
10006         (vqsubq_m_u16): Remove.
10007         (__arm_vqsubq_u8): Remove.
10008         (__arm_vqsubq_n_u8): Remove.
10009         (__arm_vqaddq_u8): Remove.
10010         (__arm_vqaddq_n_u8): Remove.
10011         (__arm_vqsubq_s8): Remove.
10012         (__arm_vqsubq_n_s8): Remove.
10013         (__arm_vqaddq_s8): Remove.
10014         (__arm_vqaddq_n_s8): Remove.
10015         (__arm_vqsubq_u16): Remove.
10016         (__arm_vqsubq_n_u16): Remove.
10017         (__arm_vqaddq_u16): Remove.
10018         (__arm_vqaddq_n_u16): Remove.
10019         (__arm_vqsubq_s16): Remove.
10020         (__arm_vqsubq_n_s16): Remove.
10021         (__arm_vqaddq_s16): Remove.
10022         (__arm_vqaddq_n_s16): Remove.
10023         (__arm_vqsubq_u32): Remove.
10024         (__arm_vqsubq_n_u32): Remove.
10025         (__arm_vqaddq_u32): Remove.
10026         (__arm_vqaddq_n_u32): Remove.
10027         (__arm_vqsubq_s32): Remove.
10028         (__arm_vqsubq_n_s32): Remove.
10029         (__arm_vqaddq_s32): Remove.
10030         (__arm_vqaddq_n_s32): Remove.
10031         (__arm_vqaddq_m_n_s8): Remove.
10032         (__arm_vqaddq_m_n_s32): Remove.
10033         (__arm_vqaddq_m_n_s16): Remove.
10034         (__arm_vqaddq_m_n_u8): Remove.
10035         (__arm_vqaddq_m_n_u32): Remove.
10036         (__arm_vqaddq_m_n_u16): Remove.
10037         (__arm_vqaddq_m_s8): Remove.
10038         (__arm_vqaddq_m_s32): Remove.
10039         (__arm_vqaddq_m_s16): Remove.
10040         (__arm_vqaddq_m_u8): Remove.
10041         (__arm_vqaddq_m_u32): Remove.
10042         (__arm_vqaddq_m_u16): Remove.
10043         (__arm_vqsubq_m_n_s8): Remove.
10044         (__arm_vqsubq_m_n_s32): Remove.
10045         (__arm_vqsubq_m_n_s16): Remove.
10046         (__arm_vqsubq_m_n_u8): Remove.
10047         (__arm_vqsubq_m_n_u32): Remove.
10048         (__arm_vqsubq_m_n_u16): Remove.
10049         (__arm_vqsubq_m_s8): Remove.
10050         (__arm_vqsubq_m_s32): Remove.
10051         (__arm_vqsubq_m_s16): Remove.
10052         (__arm_vqsubq_m_u8): Remove.
10053         (__arm_vqsubq_m_u32): Remove.
10054         (__arm_vqsubq_m_u16): Remove.
10055         (__arm_vqsubq): Remove.
10056         (__arm_vqaddq): Remove.
10057         (__arm_vqaddq_m): Remove.
10058         (__arm_vqsubq_m): Remove.
10059         (vqdmulhq): Remove.
10060         (vqdmulhq_m): Remove.
10061         (vqdmulhq_s8): Remove.
10062         (vqdmulhq_n_s8): Remove.
10063         (vqdmulhq_s16): Remove.
10064         (vqdmulhq_n_s16): Remove.
10065         (vqdmulhq_s32): Remove.
10066         (vqdmulhq_n_s32): Remove.
10067         (vqdmulhq_m_n_s8): Remove.
10068         (vqdmulhq_m_n_s32): Remove.
10069         (vqdmulhq_m_n_s16): Remove.
10070         (vqdmulhq_m_s8): Remove.
10071         (vqdmulhq_m_s32): Remove.
10072         (vqdmulhq_m_s16): Remove.
10073         (__arm_vqdmulhq_s8): Remove.
10074         (__arm_vqdmulhq_n_s8): Remove.
10075         (__arm_vqdmulhq_s16): Remove.
10076         (__arm_vqdmulhq_n_s16): Remove.
10077         (__arm_vqdmulhq_s32): Remove.
10078         (__arm_vqdmulhq_n_s32): Remove.
10079         (__arm_vqdmulhq_m_n_s8): Remove.
10080         (__arm_vqdmulhq_m_n_s32): Remove.
10081         (__arm_vqdmulhq_m_n_s16): Remove.
10082         (__arm_vqdmulhq_m_s8): Remove.
10083         (__arm_vqdmulhq_m_s32): Remove.
10084         (__arm_vqdmulhq_m_s16): Remove.
10085         (__arm_vqdmulhq): Remove.
10086         (__arm_vqdmulhq_m): Remove.
10087         (vrhaddq): Remove.
10088         (vrhaddq_m): Remove.
10089         (vrhaddq_x): Remove.
10090         (vrhaddq_u8): Remove.
10091         (vrhaddq_s8): Remove.
10092         (vrhaddq_u16): Remove.
10093         (vrhaddq_s16): Remove.
10094         (vrhaddq_u32): Remove.
10095         (vrhaddq_s32): Remove.
10096         (vrhaddq_m_s8): Remove.
10097         (vrhaddq_m_s32): Remove.
10098         (vrhaddq_m_s16): Remove.
10099         (vrhaddq_m_u8): Remove.
10100         (vrhaddq_m_u32): Remove.
10101         (vrhaddq_m_u16): Remove.
10102         (vrhaddq_x_s8): Remove.
10103         (vrhaddq_x_s16): Remove.
10104         (vrhaddq_x_s32): Remove.
10105         (vrhaddq_x_u8): Remove.
10106         (vrhaddq_x_u16): Remove.
10107         (vrhaddq_x_u32): Remove.
10108         (__arm_vrhaddq_u8): Remove.
10109         (__arm_vrhaddq_s8): Remove.
10110         (__arm_vrhaddq_u16): Remove.
10111         (__arm_vrhaddq_s16): Remove.
10112         (__arm_vrhaddq_u32): Remove.
10113         (__arm_vrhaddq_s32): Remove.
10114         (__arm_vrhaddq_m_s8): Remove.
10115         (__arm_vrhaddq_m_s32): Remove.
10116         (__arm_vrhaddq_m_s16): Remove.
10117         (__arm_vrhaddq_m_u8): Remove.
10118         (__arm_vrhaddq_m_u32): Remove.
10119         (__arm_vrhaddq_m_u16): Remove.
10120         (__arm_vrhaddq_x_s8): Remove.
10121         (__arm_vrhaddq_x_s16): Remove.
10122         (__arm_vrhaddq_x_s32): Remove.
10123         (__arm_vrhaddq_x_u8): Remove.
10124         (__arm_vrhaddq_x_u16): Remove.
10125         (__arm_vrhaddq_x_u32): Remove.
10126         (__arm_vrhaddq): Remove.
10127         (__arm_vrhaddq_m): Remove.
10128         (__arm_vrhaddq_x): Remove.
10129         (vrmulhq): Remove.
10130         (vrmulhq_m): Remove.
10131         (vrmulhq_x): Remove.
10132         (vrmulhq_u8): Remove.
10133         (vrmulhq_s8): Remove.
10134         (vrmulhq_u16): Remove.
10135         (vrmulhq_s16): Remove.
10136         (vrmulhq_u32): Remove.
10137         (vrmulhq_s32): Remove.
10138         (vrmulhq_m_s8): Remove.
10139         (vrmulhq_m_s32): Remove.
10140         (vrmulhq_m_s16): Remove.
10141         (vrmulhq_m_u8): Remove.
10142         (vrmulhq_m_u32): Remove.
10143         (vrmulhq_m_u16): Remove.
10144         (vrmulhq_x_s8): Remove.
10145         (vrmulhq_x_s16): Remove.
10146         (vrmulhq_x_s32): Remove.
10147         (vrmulhq_x_u8): Remove.
10148         (vrmulhq_x_u16): Remove.
10149         (vrmulhq_x_u32): Remove.
10150         (__arm_vrmulhq_u8): Remove.
10151         (__arm_vrmulhq_s8): Remove.
10152         (__arm_vrmulhq_u16): Remove.
10153         (__arm_vrmulhq_s16): Remove.
10154         (__arm_vrmulhq_u32): Remove.
10155         (__arm_vrmulhq_s32): Remove.
10156         (__arm_vrmulhq_m_s8): Remove.
10157         (__arm_vrmulhq_m_s32): Remove.
10158         (__arm_vrmulhq_m_s16): Remove.
10159         (__arm_vrmulhq_m_u8): Remove.
10160         (__arm_vrmulhq_m_u32): Remove.
10161         (__arm_vrmulhq_m_u16): Remove.
10162         (__arm_vrmulhq_x_s8): Remove.
10163         (__arm_vrmulhq_x_s16): Remove.
10164         (__arm_vrmulhq_x_s32): Remove.
10165         (__arm_vrmulhq_x_u8): Remove.
10166         (__arm_vrmulhq_x_u16): Remove.
10167         (__arm_vrmulhq_x_u32): Remove.
10168         (__arm_vrmulhq): Remove.
10169         (__arm_vrmulhq_m): Remove.
10170         (__arm_vrmulhq_x): Remove.
10172 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10174         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
10175         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
10176         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
10177         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
10178         * config/arm/mve.md (mve_vabdq_<supf><mode>)
10179         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
10180         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
10181         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
10182         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
10183         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
10184         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
10185         ...
10186         (@mve_<mve_insn>q_<supf><mode>): ... this.
10187         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
10188         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
10189         gen_mve_vhaddq / gen_mve_vrhaddq.
10191 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10193         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
10194         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
10195         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
10196         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
10197         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
10198         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
10199         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
10200         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
10201         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
10202         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
10203         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
10204         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
10205         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10207 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10209         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
10210         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
10211         vqsubq.
10212         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
10213         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
10214         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
10215         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
10216         (mve_vqsubq_n_<supf><mode>): Merge into ...
10217         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10219 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10221         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
10222         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
10223         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
10224         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
10225         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
10226         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
10227         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
10228         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
10229         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
10230         (mve_vshlq_m_<supf><mode>): Merged into
10231         @mve_<mve_insn>q_m_<supf><mode>.
10232         (mve_vabdq_m_<supf><mode>): Likewise.
10233         (mve_vhaddq_m_<supf><mode>): Likewise.
10234         (mve_vhsubq_m_<supf><mode>): Likewise.
10235         (mve_vmaxq_m_<supf><mode>): Likewise.
10236         (mve_vminq_m_<supf><mode>): Likewise.
10237         (mve_vmulhq_m_<supf><mode>): Likewise.
10238         (mve_vqaddq_m_<supf><mode>): Likewise.
10239         (mve_vqrshlq_m_<supf><mode>): Likewise.
10240         (mve_vqshlq_m_<supf><mode>): Likewise.
10241         (mve_vqsubq_m_<supf><mode>): Likewise.
10242         (mve_vrhaddq_m_<supf><mode>): Likewise.
10243         (mve_vrmulhq_m_<supf><mode>): Likewise.
10244         (mve_vrshlq_m_<supf><mode>): Likewise.
10245         (mve_vqdmladhq_m_s<mode>): Likewise.
10246         (mve_vqdmladhxq_m_s<mode>): Likewise.
10247         (mve_vqdmlsdhq_m_s<mode>): Likewise.
10248         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
10249         (mve_vqdmulhq_m_s<mode>): Likewise.
10250         (mve_vqrdmladhq_m_s<mode>): Likewise.
10251         (mve_vqrdmladhxq_m_s<mode>): Likewise.
10252         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
10253         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
10254         (mve_vqrdmulhq_m_s<mode>): Likewise.
10256 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10258         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
10259         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
10260         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
10261         * config/arm/arm_mve.h (vcreateq_f16): Remove.
10262         (vcreateq_f32): Remove.
10263         (vcreateq_u8): Remove.
10264         (vcreateq_u16): Remove.
10265         (vcreateq_u32): Remove.
10266         (vcreateq_u64): Remove.
10267         (vcreateq_s8): Remove.
10268         (vcreateq_s16): Remove.
10269         (vcreateq_s32): Remove.
10270         (vcreateq_s64): Remove.
10271         (__arm_vcreateq_u8): Remove.
10272         (__arm_vcreateq_u16): Remove.
10273         (__arm_vcreateq_u32): Remove.
10274         (__arm_vcreateq_u64): Remove.
10275         (__arm_vcreateq_s8): Remove.
10276         (__arm_vcreateq_s16): Remove.
10277         (__arm_vcreateq_s32): Remove.
10278         (__arm_vcreateq_s64): Remove.
10279         (__arm_vcreateq_f16): Remove.
10280         (__arm_vcreateq_f32): Remove.
10282 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10284         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
10285         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
10286         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
10287         (@mve_<mve_insn>q_f<mode>): ... this.
10288         (mve_vcreateq_<supf><mode>): Rename into ...
10289         (@mve_<mve_insn>q_<supf><mode>): ... this.
10291 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10293         * config/arm/arm-mve-builtins-shapes.cc (create): New.
10294         * config/arm/arm-mve-builtins-shapes.h: (create): New.
10296 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10298         * config/arm/arm-mve-builtins-functions.h (class
10299         unspec_mve_function_exact_insn): New.
10301 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10303         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
10304         (vorrq): New.
10305         * config/arm/arm-mve-builtins-base.def (vorrq): New.
10306         * config/arm/arm-mve-builtins-base.h (vorrq): New.
10307         * config/arm/arm-mve-builtins.cc
10308         (function_instance::has_inactive_argument): Handle vorrq.
10309         * config/arm/arm_mve.h (vorrq): Remove.
10310         (vorrq_m_n): Remove.
10311         (vorrq_m): Remove.
10312         (vorrq_x): Remove.
10313         (vorrq_u8): Remove.
10314         (vorrq_s8): Remove.
10315         (vorrq_u16): Remove.
10316         (vorrq_s16): Remove.
10317         (vorrq_u32): Remove.
10318         (vorrq_s32): Remove.
10319         (vorrq_n_u16): Remove.
10320         (vorrq_f16): Remove.
10321         (vorrq_n_s16): Remove.
10322         (vorrq_n_u32): Remove.
10323         (vorrq_f32): Remove.
10324         (vorrq_n_s32): Remove.
10325         (vorrq_m_n_s16): Remove.
10326         (vorrq_m_n_u16): Remove.
10327         (vorrq_m_n_s32): Remove.
10328         (vorrq_m_n_u32): Remove.
10329         (vorrq_m_s8): Remove.
10330         (vorrq_m_s32): Remove.
10331         (vorrq_m_s16): Remove.
10332         (vorrq_m_u8): Remove.
10333         (vorrq_m_u32): Remove.
10334         (vorrq_m_u16): Remove.
10335         (vorrq_m_f32): Remove.
10336         (vorrq_m_f16): Remove.
10337         (vorrq_x_s8): Remove.
10338         (vorrq_x_s16): Remove.
10339         (vorrq_x_s32): Remove.
10340         (vorrq_x_u8): Remove.
10341         (vorrq_x_u16): Remove.
10342         (vorrq_x_u32): Remove.
10343         (vorrq_x_f16): Remove.
10344         (vorrq_x_f32): Remove.
10345         (__arm_vorrq_u8): Remove.
10346         (__arm_vorrq_s8): Remove.
10347         (__arm_vorrq_u16): Remove.
10348         (__arm_vorrq_s16): Remove.
10349         (__arm_vorrq_u32): Remove.
10350         (__arm_vorrq_s32): Remove.
10351         (__arm_vorrq_n_u16): Remove.
10352         (__arm_vorrq_n_s16): Remove.
10353         (__arm_vorrq_n_u32): Remove.
10354         (__arm_vorrq_n_s32): Remove.
10355         (__arm_vorrq_m_n_s16): Remove.
10356         (__arm_vorrq_m_n_u16): Remove.
10357         (__arm_vorrq_m_n_s32): Remove.
10358         (__arm_vorrq_m_n_u32): Remove.
10359         (__arm_vorrq_m_s8): Remove.
10360         (__arm_vorrq_m_s32): Remove.
10361         (__arm_vorrq_m_s16): Remove.
10362         (__arm_vorrq_m_u8): Remove.
10363         (__arm_vorrq_m_u32): Remove.
10364         (__arm_vorrq_m_u16): Remove.
10365         (__arm_vorrq_x_s8): Remove.
10366         (__arm_vorrq_x_s16): Remove.
10367         (__arm_vorrq_x_s32): Remove.
10368         (__arm_vorrq_x_u8): Remove.
10369         (__arm_vorrq_x_u16): Remove.
10370         (__arm_vorrq_x_u32): Remove.
10371         (__arm_vorrq_f16): Remove.
10372         (__arm_vorrq_f32): Remove.
10373         (__arm_vorrq_m_f32): Remove.
10374         (__arm_vorrq_m_f16): Remove.
10375         (__arm_vorrq_x_f16): Remove.
10376         (__arm_vorrq_x_f32): Remove.
10377         (__arm_vorrq): Remove.
10378         (__arm_vorrq_m_n): Remove.
10379         (__arm_vorrq_m): Remove.
10380         (__arm_vorrq_x): Remove.
10382 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10384         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
10385         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
10386         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
10387         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
10389 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10391         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
10392         (vandq,veorq): New.
10393         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
10394         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
10395         * config/arm/arm_mve.h (vandq): Remove.
10396         (vandq_m): Remove.
10397         (vandq_x): Remove.
10398         (vandq_u8): Remove.
10399         (vandq_s8): Remove.
10400         (vandq_u16): Remove.
10401         (vandq_s16): Remove.
10402         (vandq_u32): Remove.
10403         (vandq_s32): Remove.
10404         (vandq_f16): Remove.
10405         (vandq_f32): Remove.
10406         (vandq_m_s8): Remove.
10407         (vandq_m_s32): Remove.
10408         (vandq_m_s16): Remove.
10409         (vandq_m_u8): Remove.
10410         (vandq_m_u32): Remove.
10411         (vandq_m_u16): Remove.
10412         (vandq_m_f32): Remove.
10413         (vandq_m_f16): Remove.
10414         (vandq_x_s8): Remove.
10415         (vandq_x_s16): Remove.
10416         (vandq_x_s32): Remove.
10417         (vandq_x_u8): Remove.
10418         (vandq_x_u16): Remove.
10419         (vandq_x_u32): Remove.
10420         (vandq_x_f16): Remove.
10421         (vandq_x_f32): Remove.
10422         (__arm_vandq_u8): Remove.
10423         (__arm_vandq_s8): Remove.
10424         (__arm_vandq_u16): Remove.
10425         (__arm_vandq_s16): Remove.
10426         (__arm_vandq_u32): Remove.
10427         (__arm_vandq_s32): Remove.
10428         (__arm_vandq_m_s8): Remove.
10429         (__arm_vandq_m_s32): Remove.
10430         (__arm_vandq_m_s16): Remove.
10431         (__arm_vandq_m_u8): Remove.
10432         (__arm_vandq_m_u32): Remove.
10433         (__arm_vandq_m_u16): Remove.
10434         (__arm_vandq_x_s8): Remove.
10435         (__arm_vandq_x_s16): Remove.
10436         (__arm_vandq_x_s32): Remove.
10437         (__arm_vandq_x_u8): Remove.
10438         (__arm_vandq_x_u16): Remove.
10439         (__arm_vandq_x_u32): Remove.
10440         (__arm_vandq_f16): Remove.
10441         (__arm_vandq_f32): Remove.
10442         (__arm_vandq_m_f32): Remove.
10443         (__arm_vandq_m_f16): Remove.
10444         (__arm_vandq_x_f16): Remove.
10445         (__arm_vandq_x_f32): Remove.
10446         (__arm_vandq): Remove.
10447         (__arm_vandq_m): Remove.
10448         (__arm_vandq_x): Remove.
10449         (veorq_m): Remove.
10450         (veorq_x): Remove.
10451         (veorq_u8): Remove.
10452         (veorq_s8): Remove.
10453         (veorq_u16): Remove.
10454         (veorq_s16): Remove.
10455         (veorq_u32): Remove.
10456         (veorq_s32): Remove.
10457         (veorq_f16): Remove.
10458         (veorq_f32): Remove.
10459         (veorq_m_s8): Remove.
10460         (veorq_m_s32): Remove.
10461         (veorq_m_s16): Remove.
10462         (veorq_m_u8): Remove.
10463         (veorq_m_u32): Remove.
10464         (veorq_m_u16): Remove.
10465         (veorq_m_f32): Remove.
10466         (veorq_m_f16): Remove.
10467         (veorq_x_s8): Remove.
10468         (veorq_x_s16): Remove.
10469         (veorq_x_s32): Remove.
10470         (veorq_x_u8): Remove.
10471         (veorq_x_u16): Remove.
10472         (veorq_x_u32): Remove.
10473         (veorq_x_f16): Remove.
10474         (veorq_x_f32): Remove.
10475         (__arm_veorq_u8): Remove.
10476         (__arm_veorq_s8): Remove.
10477         (__arm_veorq_u16): Remove.
10478         (__arm_veorq_s16): Remove.
10479         (__arm_veorq_u32): Remove.
10480         (__arm_veorq_s32): Remove.
10481         (__arm_veorq_m_s8): Remove.
10482         (__arm_veorq_m_s32): Remove.
10483         (__arm_veorq_m_s16): Remove.
10484         (__arm_veorq_m_u8): Remove.
10485         (__arm_veorq_m_u32): Remove.
10486         (__arm_veorq_m_u16): Remove.
10487         (__arm_veorq_x_s8): Remove.
10488         (__arm_veorq_x_s16): Remove.
10489         (__arm_veorq_x_s32): Remove.
10490         (__arm_veorq_x_u8): Remove.
10491         (__arm_veorq_x_u16): Remove.
10492         (__arm_veorq_x_u32): Remove.
10493         (__arm_veorq_f16): Remove.
10494         (__arm_veorq_f32): Remove.
10495         (__arm_veorq_m_f32): Remove.
10496         (__arm_veorq_m_f16): Remove.
10497         (__arm_veorq_x_f16): Remove.
10498         (__arm_veorq_x_f32): Remove.
10499         (__arm_veorq): Remove.
10500         (__arm_veorq_m): Remove.
10501         (__arm_veorq_x): Remove.
10503 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10505         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
10506         (MVE_FP_M_BINARY_LOGIC): New.
10507         (MVE_INT_M_N_BINARY_LOGIC): New.
10508         (MVE_INT_N_BINARY_LOGIC): New.
10509         (mve_insn): Add vand, veor, vorr, vbic.
10510         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
10511         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
10512         (mve_vbicq_m_<supf><mode>): Merge into ...
10513         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10514         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
10515         (mve_vbicq_m_f<mode>): Merge into ...
10516         (@mve_<mve_insn>q_m_f<mode>): ... this.
10517         (mve_vorrq_n_<supf><mode>)
10518         (mve_vbicq_n_<supf><mode>): Merge into ...
10519         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10520         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
10521         into ...
10522         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10524 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10526         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
10527         * config/arm/arm-mve-builtins-shapes.h (binary): New.
10529 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10531         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
10532         New.
10533         (vaddq, vmulq, vsubq): New.
10534         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
10535         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
10536         * config/arm/arm_mve.h (vaddq): Remove.
10537         (vaddq_m): Remove.
10538         (vaddq_x): Remove.
10539         (vaddq_n_u8): Remove.
10540         (vaddq_n_s8): Remove.
10541         (vaddq_n_u16): Remove.
10542         (vaddq_n_s16): Remove.
10543         (vaddq_n_u32): Remove.
10544         (vaddq_n_s32): Remove.
10545         (vaddq_n_f16): Remove.
10546         (vaddq_n_f32): Remove.
10547         (vaddq_m_n_s8): Remove.
10548         (vaddq_m_n_s32): Remove.
10549         (vaddq_m_n_s16): Remove.
10550         (vaddq_m_n_u8): Remove.
10551         (vaddq_m_n_u32): Remove.
10552         (vaddq_m_n_u16): Remove.
10553         (vaddq_m_s8): Remove.
10554         (vaddq_m_s32): Remove.
10555         (vaddq_m_s16): Remove.
10556         (vaddq_m_u8): Remove.
10557         (vaddq_m_u32): Remove.
10558         (vaddq_m_u16): Remove.
10559         (vaddq_m_f32): Remove.
10560         (vaddq_m_f16): Remove.
10561         (vaddq_m_n_f32): Remove.
10562         (vaddq_m_n_f16): Remove.
10563         (vaddq_s8): Remove.
10564         (vaddq_s16): Remove.
10565         (vaddq_s32): Remove.
10566         (vaddq_u8): Remove.
10567         (vaddq_u16): Remove.
10568         (vaddq_u32): Remove.
10569         (vaddq_f16): Remove.
10570         (vaddq_f32): Remove.
10571         (vaddq_x_s8): Remove.
10572         (vaddq_x_s16): Remove.
10573         (vaddq_x_s32): Remove.
10574         (vaddq_x_n_s8): Remove.
10575         (vaddq_x_n_s16): Remove.
10576         (vaddq_x_n_s32): Remove.
10577         (vaddq_x_u8): Remove.
10578         (vaddq_x_u16): Remove.
10579         (vaddq_x_u32): Remove.
10580         (vaddq_x_n_u8): Remove.
10581         (vaddq_x_n_u16): Remove.
10582         (vaddq_x_n_u32): Remove.
10583         (vaddq_x_f16): Remove.
10584         (vaddq_x_f32): Remove.
10585         (vaddq_x_n_f16): Remove.
10586         (vaddq_x_n_f32): Remove.
10587         (__arm_vaddq_n_u8): Remove.
10588         (__arm_vaddq_n_s8): Remove.
10589         (__arm_vaddq_n_u16): Remove.
10590         (__arm_vaddq_n_s16): Remove.
10591         (__arm_vaddq_n_u32): Remove.
10592         (__arm_vaddq_n_s32): Remove.
10593         (__arm_vaddq_m_n_s8): Remove.
10594         (__arm_vaddq_m_n_s32): Remove.
10595         (__arm_vaddq_m_n_s16): Remove.
10596         (__arm_vaddq_m_n_u8): Remove.
10597         (__arm_vaddq_m_n_u32): Remove.
10598         (__arm_vaddq_m_n_u16): Remove.
10599         (__arm_vaddq_m_s8): Remove.
10600         (__arm_vaddq_m_s32): Remove.
10601         (__arm_vaddq_m_s16): Remove.
10602         (__arm_vaddq_m_u8): Remove.
10603         (__arm_vaddq_m_u32): Remove.
10604         (__arm_vaddq_m_u16): Remove.
10605         (__arm_vaddq_s8): Remove.
10606         (__arm_vaddq_s16): Remove.
10607         (__arm_vaddq_s32): Remove.
10608         (__arm_vaddq_u8): Remove.
10609         (__arm_vaddq_u16): Remove.
10610         (__arm_vaddq_u32): Remove.
10611         (__arm_vaddq_x_s8): Remove.
10612         (__arm_vaddq_x_s16): Remove.
10613         (__arm_vaddq_x_s32): Remove.
10614         (__arm_vaddq_x_n_s8): Remove.
10615         (__arm_vaddq_x_n_s16): Remove.
10616         (__arm_vaddq_x_n_s32): Remove.
10617         (__arm_vaddq_x_u8): Remove.
10618         (__arm_vaddq_x_u16): Remove.
10619         (__arm_vaddq_x_u32): Remove.
10620         (__arm_vaddq_x_n_u8): Remove.
10621         (__arm_vaddq_x_n_u16): Remove.
10622         (__arm_vaddq_x_n_u32): Remove.
10623         (__arm_vaddq_n_f16): Remove.
10624         (__arm_vaddq_n_f32): Remove.
10625         (__arm_vaddq_m_f32): Remove.
10626         (__arm_vaddq_m_f16): Remove.
10627         (__arm_vaddq_m_n_f32): Remove.
10628         (__arm_vaddq_m_n_f16): Remove.
10629         (__arm_vaddq_f16): Remove.
10630         (__arm_vaddq_f32): Remove.
10631         (__arm_vaddq_x_f16): Remove.
10632         (__arm_vaddq_x_f32): Remove.
10633         (__arm_vaddq_x_n_f16): Remove.
10634         (__arm_vaddq_x_n_f32): Remove.
10635         (__arm_vaddq): Remove.
10636         (__arm_vaddq_m): Remove.
10637         (__arm_vaddq_x): Remove.
10638         (vmulq): Remove.
10639         (vmulq_m): Remove.
10640         (vmulq_x): Remove.
10641         (vmulq_u8): Remove.
10642         (vmulq_n_u8): Remove.
10643         (vmulq_s8): Remove.
10644         (vmulq_n_s8): Remove.
10645         (vmulq_u16): Remove.
10646         (vmulq_n_u16): Remove.
10647         (vmulq_s16): Remove.
10648         (vmulq_n_s16): Remove.
10649         (vmulq_u32): Remove.
10650         (vmulq_n_u32): Remove.
10651         (vmulq_s32): Remove.
10652         (vmulq_n_s32): Remove.
10653         (vmulq_n_f16): Remove.
10654         (vmulq_f16): Remove.
10655         (vmulq_n_f32): Remove.
10656         (vmulq_f32): Remove.
10657         (vmulq_m_n_s8): Remove.
10658         (vmulq_m_n_s32): Remove.
10659         (vmulq_m_n_s16): Remove.
10660         (vmulq_m_n_u8): Remove.
10661         (vmulq_m_n_u32): Remove.
10662         (vmulq_m_n_u16): Remove.
10663         (vmulq_m_s8): Remove.
10664         (vmulq_m_s32): Remove.
10665         (vmulq_m_s16): Remove.
10666         (vmulq_m_u8): Remove.
10667         (vmulq_m_u32): Remove.
10668         (vmulq_m_u16): Remove.
10669         (vmulq_m_f32): Remove.
10670         (vmulq_m_f16): Remove.
10671         (vmulq_m_n_f32): Remove.
10672         (vmulq_m_n_f16): Remove.
10673         (vmulq_x_s8): Remove.
10674         (vmulq_x_s16): Remove.
10675         (vmulq_x_s32): Remove.
10676         (vmulq_x_n_s8): Remove.
10677         (vmulq_x_n_s16): Remove.
10678         (vmulq_x_n_s32): Remove.
10679         (vmulq_x_u8): Remove.
10680         (vmulq_x_u16): Remove.
10681         (vmulq_x_u32): Remove.
10682         (vmulq_x_n_u8): Remove.
10683         (vmulq_x_n_u16): Remove.
10684         (vmulq_x_n_u32): Remove.
10685         (vmulq_x_f16): Remove.
10686         (vmulq_x_f32): Remove.
10687         (vmulq_x_n_f16): Remove.
10688         (vmulq_x_n_f32): Remove.
10689         (__arm_vmulq_u8): Remove.
10690         (__arm_vmulq_n_u8): Remove.
10691         (__arm_vmulq_s8): Remove.
10692         (__arm_vmulq_n_s8): Remove.
10693         (__arm_vmulq_u16): Remove.
10694         (__arm_vmulq_n_u16): Remove.
10695         (__arm_vmulq_s16): Remove.
10696         (__arm_vmulq_n_s16): Remove.
10697         (__arm_vmulq_u32): Remove.
10698         (__arm_vmulq_n_u32): Remove.
10699         (__arm_vmulq_s32): Remove.
10700         (__arm_vmulq_n_s32): Remove.
10701         (__arm_vmulq_m_n_s8): Remove.
10702         (__arm_vmulq_m_n_s32): Remove.
10703         (__arm_vmulq_m_n_s16): Remove.
10704         (__arm_vmulq_m_n_u8): Remove.
10705         (__arm_vmulq_m_n_u32): Remove.
10706         (__arm_vmulq_m_n_u16): Remove.
10707         (__arm_vmulq_m_s8): Remove.
10708         (__arm_vmulq_m_s32): Remove.
10709         (__arm_vmulq_m_s16): Remove.
10710         (__arm_vmulq_m_u8): Remove.
10711         (__arm_vmulq_m_u32): Remove.
10712         (__arm_vmulq_m_u16): Remove.
10713         (__arm_vmulq_x_s8): Remove.
10714         (__arm_vmulq_x_s16): Remove.
10715         (__arm_vmulq_x_s32): Remove.
10716         (__arm_vmulq_x_n_s8): Remove.
10717         (__arm_vmulq_x_n_s16): Remove.
10718         (__arm_vmulq_x_n_s32): Remove.
10719         (__arm_vmulq_x_u8): Remove.
10720         (__arm_vmulq_x_u16): Remove.
10721         (__arm_vmulq_x_u32): Remove.
10722         (__arm_vmulq_x_n_u8): Remove.
10723         (__arm_vmulq_x_n_u16): Remove.
10724         (__arm_vmulq_x_n_u32): Remove.
10725         (__arm_vmulq_n_f16): Remove.
10726         (__arm_vmulq_f16): Remove.
10727         (__arm_vmulq_n_f32): Remove.
10728         (__arm_vmulq_f32): Remove.
10729         (__arm_vmulq_m_f32): Remove.
10730         (__arm_vmulq_m_f16): Remove.
10731         (__arm_vmulq_m_n_f32): Remove.
10732         (__arm_vmulq_m_n_f16): Remove.
10733         (__arm_vmulq_x_f16): Remove.
10734         (__arm_vmulq_x_f32): Remove.
10735         (__arm_vmulq_x_n_f16): Remove.
10736         (__arm_vmulq_x_n_f32): Remove.
10737         (__arm_vmulq): Remove.
10738         (__arm_vmulq_m): Remove.
10739         (__arm_vmulq_x): Remove.
10740         (vsubq): Remove.
10741         (vsubq_m): Remove.
10742         (vsubq_x): Remove.
10743         (vsubq_n_f16): Remove.
10744         (vsubq_n_f32): Remove.
10745         (vsubq_u8): Remove.
10746         (vsubq_n_u8): Remove.
10747         (vsubq_s8): Remove.
10748         (vsubq_n_s8): Remove.
10749         (vsubq_u16): Remove.
10750         (vsubq_n_u16): Remove.
10751         (vsubq_s16): Remove.
10752         (vsubq_n_s16): Remove.
10753         (vsubq_u32): Remove.
10754         (vsubq_n_u32): Remove.
10755         (vsubq_s32): Remove.
10756         (vsubq_n_s32): Remove.
10757         (vsubq_f16): Remove.
10758         (vsubq_f32): Remove.
10759         (vsubq_m_s8): Remove.
10760         (vsubq_m_u8): Remove.
10761         (vsubq_m_s16): Remove.
10762         (vsubq_m_u16): Remove.
10763         (vsubq_m_s32): Remove.
10764         (vsubq_m_u32): Remove.
10765         (vsubq_m_n_s8): Remove.
10766         (vsubq_m_n_s32): Remove.
10767         (vsubq_m_n_s16): Remove.
10768         (vsubq_m_n_u8): Remove.
10769         (vsubq_m_n_u32): Remove.
10770         (vsubq_m_n_u16): Remove.
10771         (vsubq_m_f32): Remove.
10772         (vsubq_m_f16): Remove.
10773         (vsubq_m_n_f32): Remove.
10774         (vsubq_m_n_f16): Remove.
10775         (vsubq_x_s8): Remove.
10776         (vsubq_x_s16): Remove.
10777         (vsubq_x_s32): Remove.
10778         (vsubq_x_n_s8): Remove.
10779         (vsubq_x_n_s16): Remove.
10780         (vsubq_x_n_s32): Remove.
10781         (vsubq_x_u8): Remove.
10782         (vsubq_x_u16): Remove.
10783         (vsubq_x_u32): Remove.
10784         (vsubq_x_n_u8): Remove.
10785         (vsubq_x_n_u16): Remove.
10786         (vsubq_x_n_u32): Remove.
10787         (vsubq_x_f16): Remove.
10788         (vsubq_x_f32): Remove.
10789         (vsubq_x_n_f16): Remove.
10790         (vsubq_x_n_f32): Remove.
10791         (__arm_vsubq_u8): Remove.
10792         (__arm_vsubq_n_u8): Remove.
10793         (__arm_vsubq_s8): Remove.
10794         (__arm_vsubq_n_s8): Remove.
10795         (__arm_vsubq_u16): Remove.
10796         (__arm_vsubq_n_u16): Remove.
10797         (__arm_vsubq_s16): Remove.
10798         (__arm_vsubq_n_s16): Remove.
10799         (__arm_vsubq_u32): Remove.
10800         (__arm_vsubq_n_u32): Remove.
10801         (__arm_vsubq_s32): Remove.
10802         (__arm_vsubq_n_s32): Remove.
10803         (__arm_vsubq_m_s8): Remove.
10804         (__arm_vsubq_m_u8): Remove.
10805         (__arm_vsubq_m_s16): Remove.
10806         (__arm_vsubq_m_u16): Remove.
10807         (__arm_vsubq_m_s32): Remove.
10808         (__arm_vsubq_m_u32): Remove.
10809         (__arm_vsubq_m_n_s8): Remove.
10810         (__arm_vsubq_m_n_s32): Remove.
10811         (__arm_vsubq_m_n_s16): Remove.
10812         (__arm_vsubq_m_n_u8): Remove.
10813         (__arm_vsubq_m_n_u32): Remove.
10814         (__arm_vsubq_m_n_u16): Remove.
10815         (__arm_vsubq_x_s8): Remove.
10816         (__arm_vsubq_x_s16): Remove.
10817         (__arm_vsubq_x_s32): Remove.
10818         (__arm_vsubq_x_n_s8): Remove.
10819         (__arm_vsubq_x_n_s16): Remove.
10820         (__arm_vsubq_x_n_s32): Remove.
10821         (__arm_vsubq_x_u8): Remove.
10822         (__arm_vsubq_x_u16): Remove.
10823         (__arm_vsubq_x_u32): Remove.
10824         (__arm_vsubq_x_n_u8): Remove.
10825         (__arm_vsubq_x_n_u16): Remove.
10826         (__arm_vsubq_x_n_u32): Remove.
10827         (__arm_vsubq_n_f16): Remove.
10828         (__arm_vsubq_n_f32): Remove.
10829         (__arm_vsubq_f16): Remove.
10830         (__arm_vsubq_f32): Remove.
10831         (__arm_vsubq_m_f32): Remove.
10832         (__arm_vsubq_m_f16): Remove.
10833         (__arm_vsubq_m_n_f32): Remove.
10834         (__arm_vsubq_m_n_f16): Remove.
10835         (__arm_vsubq_x_f16): Remove.
10836         (__arm_vsubq_x_f32): Remove.
10837         (__arm_vsubq_x_n_f16): Remove.
10838         (__arm_vsubq_x_n_f32): Remove.
10839         (__arm_vsubq): Remove.
10840         (__arm_vsubq_m): Remove.
10841         (__arm_vsubq_x): Remove.
10842         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
10843         Remove.
10844         (vmulq_u, vmulq_s, vmulq_f): Remove.
10845         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
10846         (mve_vmulq_<supf><mode>): Remove.
10848 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10850         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
10851         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
10852         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
10853         iterators.
10854         * config/arm/mve.md
10855         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
10856         Factorize into ...
10857         (@mve_<mve_insn>q_n_f<mode>): ... this.
10858         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
10859         (mve_vsubq_n_<supf><mode>): Factorize into ...
10860         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10861         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
10862         into ...
10863         (mve_<mve_addsubmul>q<mode>): ... this.
10864         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
10865         Factorize into ...
10866         (mve_<mve_addsubmul>q_f<mode>): ... this.
10867         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
10868         (mve_vsubq_m_<supf><mode>): Factorize into ...
10869         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
10870         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
10871         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
10872         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10873         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
10874         Factorize into ...
10875         (@mve_<mve_insn>q_m_f<mode>): ... this.
10876         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
10877         (mve_vsubq_m_n_f<mode>): Factorize into ...
10878         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10880 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10882         * config/arm/arm-mve-builtins-functions.h (class
10883         unspec_based_mve_function_base): New.
10884         (class unspec_based_mve_function_exact_insn): New.
10886 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
10888         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
10889         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
10891 2023-05-03  Murray Steele  <murray.steele@arm.com>
10892             Christophe Lyon  <christophe.lyon@arm.com>
10894         * config/arm/arm-mve-builtins-base.cc (class
10895         vuninitializedq_impl): New.
10896         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
10897         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
10898         declaration.
10899         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
10900         * config/arm/arm-mve-builtins-shapes.h (inherent): New
10901         declaration.
10902         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
10903         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
10904         (__arm_vuninitializedq_u8): Remove.
10905         (__arm_vuninitializedq_u16): Remove.
10906         (__arm_vuninitializedq_u32): Remove.
10907         (__arm_vuninitializedq_u64): Remove.
10908         (__arm_vuninitializedq_s8): Remove.
10909         (__arm_vuninitializedq_s16): Remove.
10910         (__arm_vuninitializedq_s32): Remove.
10911         (__arm_vuninitializedq_s64): Remove.
10912         (__arm_vuninitializedq_f16): Remove.
10913         (__arm_vuninitializedq_f32): Remove.
10915 2023-05-03  Murray Steele  <murray.steele@arm.com>
10916             Christophe Lyon  <christophe.lyon@arm.com>
10918         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
10919         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
10920         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
10921         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
10922         (parse_type): Likewise.
10923         (parse_signature): Likewise.
10924         (build_one): Likewise.
10925         (build_all): Likewise.
10926         (overloaded_base): New struct.
10927         (unary_convert_def): Likewise.
10928         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
10929         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
10930         macro.
10931         (TYPES_reinterpret_unsigned1): Likewise.
10932         (TYPES_reinterpret_integer): Likewise.
10933         (TYPES_reinterpret_integer1): Likewise.
10934         (TYPES_reinterpret_float1): Likewise.
10935         (TYPES_reinterpret_float): Likewise.
10936         (reinterpret_integer): New.
10937         (reinterpret_float): New.
10938         (handle_arm_mve_h): Register builtins.
10939         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
10940         (vreinterpretq_s32): Likewise.
10941         (vreinterpretq_s64): Likewise.
10942         (vreinterpretq_s8): Likewise.
10943         (vreinterpretq_u16): Likewise.
10944         (vreinterpretq_u32): Likewise.
10945         (vreinterpretq_u64): Likewise.
10946         (vreinterpretq_u8): Likewise.
10947         (vreinterpretq_f16): Likewise.
10948         (vreinterpretq_f32): Likewise.
10949         (vreinterpretq_s16_s32): Likewise.
10950         (vreinterpretq_s16_s64): Likewise.
10951         (vreinterpretq_s16_s8): Likewise.
10952         (vreinterpretq_s16_u16): Likewise.
10953         (vreinterpretq_s16_u32): Likewise.
10954         (vreinterpretq_s16_u64): Likewise.
10955         (vreinterpretq_s16_u8): Likewise.
10956         (vreinterpretq_s32_s16): Likewise.
10957         (vreinterpretq_s32_s64): Likewise.
10958         (vreinterpretq_s32_s8): Likewise.
10959         (vreinterpretq_s32_u16): Likewise.
10960         (vreinterpretq_s32_u32): Likewise.
10961         (vreinterpretq_s32_u64): Likewise.
10962         (vreinterpretq_s32_u8): Likewise.
10963         (vreinterpretq_s64_s16): Likewise.
10964         (vreinterpretq_s64_s32): Likewise.
10965         (vreinterpretq_s64_s8): Likewise.
10966         (vreinterpretq_s64_u16): Likewise.
10967         (vreinterpretq_s64_u32): Likewise.
10968         (vreinterpretq_s64_u64): Likewise.
10969         (vreinterpretq_s64_u8): Likewise.
10970         (vreinterpretq_s8_s16): Likewise.
10971         (vreinterpretq_s8_s32): Likewise.
10972         (vreinterpretq_s8_s64): Likewise.
10973         (vreinterpretq_s8_u16): Likewise.
10974         (vreinterpretq_s8_u32): Likewise.
10975         (vreinterpretq_s8_u64): Likewise.
10976         (vreinterpretq_s8_u8): Likewise.
10977         (vreinterpretq_u16_s16): Likewise.
10978         (vreinterpretq_u16_s32): Likewise.
10979         (vreinterpretq_u16_s64): Likewise.
10980         (vreinterpretq_u16_s8): Likewise.
10981         (vreinterpretq_u16_u32): Likewise.
10982         (vreinterpretq_u16_u64): Likewise.
10983         (vreinterpretq_u16_u8): Likewise.
10984         (vreinterpretq_u32_s16): Likewise.
10985         (vreinterpretq_u32_s32): Likewise.
10986         (vreinterpretq_u32_s64): Likewise.
10987         (vreinterpretq_u32_s8): Likewise.
10988         (vreinterpretq_u32_u16): Likewise.
10989         (vreinterpretq_u32_u64): Likewise.
10990         (vreinterpretq_u32_u8): Likewise.
10991         (vreinterpretq_u64_s16): Likewise.
10992         (vreinterpretq_u64_s32): Likewise.
10993         (vreinterpretq_u64_s64): Likewise.
10994         (vreinterpretq_u64_s8): Likewise.
10995         (vreinterpretq_u64_u16): Likewise.
10996         (vreinterpretq_u64_u32): Likewise.
10997         (vreinterpretq_u64_u8): Likewise.
10998         (vreinterpretq_u8_s16): Likewise.
10999         (vreinterpretq_u8_s32): Likewise.
11000         (vreinterpretq_u8_s64): Likewise.
11001         (vreinterpretq_u8_s8): Likewise.
11002         (vreinterpretq_u8_u16): Likewise.
11003         (vreinterpretq_u8_u32): Likewise.
11004         (vreinterpretq_u8_u64): Likewise.
11005         (vreinterpretq_s32_f16): Likewise.
11006         (vreinterpretq_s32_f32): Likewise.
11007         (vreinterpretq_u16_f16): Likewise.
11008         (vreinterpretq_u16_f32): Likewise.
11009         (vreinterpretq_u32_f16): Likewise.
11010         (vreinterpretq_u32_f32): Likewise.
11011         (vreinterpretq_u64_f16): Likewise.
11012         (vreinterpretq_u64_f32): Likewise.
11013         (vreinterpretq_u8_f16): Likewise.
11014         (vreinterpretq_u8_f32): Likewise.
11015         (vreinterpretq_f16_f32): Likewise.
11016         (vreinterpretq_f16_s16): Likewise.
11017         (vreinterpretq_f16_s32): Likewise.
11018         (vreinterpretq_f16_s64): Likewise.
11019         (vreinterpretq_f16_s8): Likewise.
11020         (vreinterpretq_f16_u16): Likewise.
11021         (vreinterpretq_f16_u32): Likewise.
11022         (vreinterpretq_f16_u64): Likewise.
11023         (vreinterpretq_f16_u8): Likewise.
11024         (vreinterpretq_f32_f16): Likewise.
11025         (vreinterpretq_f32_s16): Likewise.
11026         (vreinterpretq_f32_s32): Likewise.
11027         (vreinterpretq_f32_s64): Likewise.
11028         (vreinterpretq_f32_s8): Likewise.
11029         (vreinterpretq_f32_u16): Likewise.
11030         (vreinterpretq_f32_u32): Likewise.
11031         (vreinterpretq_f32_u64): Likewise.
11032         (vreinterpretq_f32_u8): Likewise.
11033         (vreinterpretq_s16_f16): Likewise.
11034         (vreinterpretq_s16_f32): Likewise.
11035         (vreinterpretq_s64_f16): Likewise.
11036         (vreinterpretq_s64_f32): Likewise.
11037         (vreinterpretq_s8_f16): Likewise.
11038         (vreinterpretq_s8_f32): Likewise.
11039         (__arm_vreinterpretq_f16): Likewise.
11040         (__arm_vreinterpretq_f32): Likewise.
11041         (__arm_vreinterpretq_s16): Likewise.
11042         (__arm_vreinterpretq_s32): Likewise.
11043         (__arm_vreinterpretq_s64): Likewise.
11044         (__arm_vreinterpretq_s8): Likewise.
11045         (__arm_vreinterpretq_u16): Likewise.
11046         (__arm_vreinterpretq_u32): Likewise.
11047         (__arm_vreinterpretq_u64): Likewise.
11048         (__arm_vreinterpretq_u8): Likewise.
11049         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
11050         (__arm_vreinterpretq_s16_s64): Likewise.
11051         (__arm_vreinterpretq_s16_s8): Likewise.
11052         (__arm_vreinterpretq_s16_u16): Likewise.
11053         (__arm_vreinterpretq_s16_u32): Likewise.
11054         (__arm_vreinterpretq_s16_u64): Likewise.
11055         (__arm_vreinterpretq_s16_u8): Likewise.
11056         (__arm_vreinterpretq_s32_s16): Likewise.
11057         (__arm_vreinterpretq_s32_s64): Likewise.
11058         (__arm_vreinterpretq_s32_s8): Likewise.
11059         (__arm_vreinterpretq_s32_u16): Likewise.
11060         (__arm_vreinterpretq_s32_u32): Likewise.
11061         (__arm_vreinterpretq_s32_u64): Likewise.
11062         (__arm_vreinterpretq_s32_u8): Likewise.
11063         (__arm_vreinterpretq_s64_s16): Likewise.
11064         (__arm_vreinterpretq_s64_s32): Likewise.
11065         (__arm_vreinterpretq_s64_s8): Likewise.
11066         (__arm_vreinterpretq_s64_u16): Likewise.
11067         (__arm_vreinterpretq_s64_u32): Likewise.
11068         (__arm_vreinterpretq_s64_u64): Likewise.
11069         (__arm_vreinterpretq_s64_u8): Likewise.
11070         (__arm_vreinterpretq_s8_s16): Likewise.
11071         (__arm_vreinterpretq_s8_s32): Likewise.
11072         (__arm_vreinterpretq_s8_s64): Likewise.
11073         (__arm_vreinterpretq_s8_u16): Likewise.
11074         (__arm_vreinterpretq_s8_u32): Likewise.
11075         (__arm_vreinterpretq_s8_u64): Likewise.
11076         (__arm_vreinterpretq_s8_u8): Likewise.
11077         (__arm_vreinterpretq_u16_s16): Likewise.
11078         (__arm_vreinterpretq_u16_s32): Likewise.
11079         (__arm_vreinterpretq_u16_s64): Likewise.
11080         (__arm_vreinterpretq_u16_s8): Likewise.
11081         (__arm_vreinterpretq_u16_u32): Likewise.
11082         (__arm_vreinterpretq_u16_u64): Likewise.
11083         (__arm_vreinterpretq_u16_u8): Likewise.
11084         (__arm_vreinterpretq_u32_s16): Likewise.
11085         (__arm_vreinterpretq_u32_s32): Likewise.
11086         (__arm_vreinterpretq_u32_s64): Likewise.
11087         (__arm_vreinterpretq_u32_s8): Likewise.
11088         (__arm_vreinterpretq_u32_u16): Likewise.
11089         (__arm_vreinterpretq_u32_u64): Likewise.
11090         (__arm_vreinterpretq_u32_u8): Likewise.
11091         (__arm_vreinterpretq_u64_s16): Likewise.
11092         (__arm_vreinterpretq_u64_s32): Likewise.
11093         (__arm_vreinterpretq_u64_s64): Likewise.
11094         (__arm_vreinterpretq_u64_s8): Likewise.
11095         (__arm_vreinterpretq_u64_u16): Likewise.
11096         (__arm_vreinterpretq_u64_u32): Likewise.
11097         (__arm_vreinterpretq_u64_u8): Likewise.
11098         (__arm_vreinterpretq_u8_s16): Likewise.
11099         (__arm_vreinterpretq_u8_s32): Likewise.
11100         (__arm_vreinterpretq_u8_s64): Likewise.
11101         (__arm_vreinterpretq_u8_s8): Likewise.
11102         (__arm_vreinterpretq_u8_u16): Likewise.
11103         (__arm_vreinterpretq_u8_u32): Likewise.
11104         (__arm_vreinterpretq_u8_u64): Likewise.
11105         (__arm_vreinterpretq_s32_f16): Likewise.
11106         (__arm_vreinterpretq_s32_f32): Likewise.
11107         (__arm_vreinterpretq_s16_f16): Likewise.
11108         (__arm_vreinterpretq_s16_f32): Likewise.
11109         (__arm_vreinterpretq_s64_f16): Likewise.
11110         (__arm_vreinterpretq_s64_f32): Likewise.
11111         (__arm_vreinterpretq_s8_f16): Likewise.
11112         (__arm_vreinterpretq_s8_f32): Likewise.
11113         (__arm_vreinterpretq_u16_f16): Likewise.
11114         (__arm_vreinterpretq_u16_f32): Likewise.
11115         (__arm_vreinterpretq_u32_f16): Likewise.
11116         (__arm_vreinterpretq_u32_f32): Likewise.
11117         (__arm_vreinterpretq_u64_f16): Likewise.
11118         (__arm_vreinterpretq_u64_f32): Likewise.
11119         (__arm_vreinterpretq_u8_f16): Likewise.
11120         (__arm_vreinterpretq_u8_f32): Likewise.
11121         (__arm_vreinterpretq_f16_f32): Likewise.
11122         (__arm_vreinterpretq_f16_s16): Likewise.
11123         (__arm_vreinterpretq_f16_s32): Likewise.
11124         (__arm_vreinterpretq_f16_s64): Likewise.
11125         (__arm_vreinterpretq_f16_s8): Likewise.
11126         (__arm_vreinterpretq_f16_u16): Likewise.
11127         (__arm_vreinterpretq_f16_u32): Likewise.
11128         (__arm_vreinterpretq_f16_u64): Likewise.
11129         (__arm_vreinterpretq_f16_u8): Likewise.
11130         (__arm_vreinterpretq_f32_f16): Likewise.
11131         (__arm_vreinterpretq_f32_s16): Likewise.
11132         (__arm_vreinterpretq_f32_s32): Likewise.
11133         (__arm_vreinterpretq_f32_s64): Likewise.
11134         (__arm_vreinterpretq_f32_s8): Likewise.
11135         (__arm_vreinterpretq_f32_u16): Likewise.
11136         (__arm_vreinterpretq_f32_u32): Likewise.
11137         (__arm_vreinterpretq_f32_u64): Likewise.
11138         (__arm_vreinterpretq_f32_u8): Likewise.
11139         (__arm_vreinterpretq_s16): Likewise.
11140         (__arm_vreinterpretq_s32): Likewise.
11141         (__arm_vreinterpretq_s64): Likewise.
11142         (__arm_vreinterpretq_s8): Likewise.
11143         (__arm_vreinterpretq_u16): Likewise.
11144         (__arm_vreinterpretq_u32): Likewise.
11145         (__arm_vreinterpretq_u64): Likewise.
11146         (__arm_vreinterpretq_u8): Likewise.
11147         (__arm_vreinterpretq_f16): Likewise.
11148         (__arm_vreinterpretq_f32): Likewise.
11149         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
11150         * config/arm/unspecs.md: (REINTERPRET): New unspec.
11152 2023-05-03  Murray Steele  <murray.steele@arm.com>
11153             Christophe Lyon  <christophe.lyon@arm.com>
11154             Christophe Lyon   <christophe.lyon@arm.com
11156         * config.gcc: Add arm-mve-builtins-base.o and
11157         arm-mve-builtins-shapes.o to extra_objs.
11158         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
11159         numberspace.
11160         (arm_expand_builtin): Likewise
11161         (arm_check_builtin_call): Likewise
11162         (arm_describe_resolver): Likewise.
11163         * config/arm/arm-builtins.h (enum resolver_ident): Add
11164         arm_mve_resolver.
11165         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
11166         (arm_resolve_overloaded_builtin): Handle MVE builtins.
11167         (arm_register_target_pragmas): Register arm_check_builtin_call.
11168         * config/arm/arm-mve-builtins.cc (class registered_function): New
11169         class.
11170         (struct registered_function_hasher): New struct.
11171         (pred_suffixes): New table.
11172         (mode_suffixes): New table.
11173         (type_suffix_info): New table.
11174         (TYPES_float16): New.
11175         (TYPES_all_float): New.
11176         (TYPES_integer_8): New.
11177         (TYPES_integer_8_16): New.
11178         (TYPES_integer_16_32): New.
11179         (TYPES_integer_32): New.
11180         (TYPES_signed_16_32): New.
11181         (TYPES_signed_32): New.
11182         (TYPES_all_signed): New.
11183         (TYPES_all_unsigned): New.
11184         (TYPES_all_integer): New.
11185         (TYPES_all_integer_with_64): New.
11186         (DEF_VECTOR_TYPE): New.
11187         (DEF_DOUBLE_TYPE): New.
11188         (DEF_MVE_TYPES_ARRAY): New.
11189         (all_integer): New.
11190         (all_integer_with_64): New.
11191         (float16): New.
11192         (all_float): New.
11193         (all_signed): New.
11194         (all_unsigned): New.
11195         (integer_8): New.
11196         (integer_8_16): New.
11197         (integer_16_32): New.
11198         (integer_32): New.
11199         (signed_16_32): New.
11200         (signed_32): New.
11201         (register_vector_type): Use void_type_node for mve.fp-only types when
11202         mve.fp is not enabled.
11203         (register_builtin_tuple_types): Likewise.
11204         (handle_arm_mve_h): New function..
11205         (matches_type_p): Likewise..
11206         (report_out_of_range): Likewise.
11207         (report_not_enum): Likewise.
11208         (report_missing_float): Likewise.
11209         (report_non_ice): Likewise.
11210         (check_requires_float): Likewise.
11211         (function_instance::hash): Likewise
11212         (function_instance::call_properties): Likewise.
11213         (function_instance::reads_global_state_p): Likewise.
11214         (function_instance::modifies_global_state_p): Likewise.
11215         (function_instance::could_trap_p): Likewise.
11216         (function_instance::has_inactive_argument): Likewise.
11217         (registered_function_hasher::hash): Likewise.
11218         (registered_function_hasher::equal): Likewise.
11219         (function_builder::function_builder): Likewise.
11220         (function_builder::~function_builder): Likewise.
11221         (function_builder::append_name): Likewise.
11222         (function_builder::finish_name): Likewise.
11223         (function_builder::get_name): Likewise.
11224         (add_attribute): Likewise.
11225         (function_builder::get_attributes): Likewise.
11226         (function_builder::add_function): Likewise.
11227         (function_builder::add_unique_function): Likewise.
11228         (function_builder::add_overloaded_function): Likewise.
11229         (function_builder::add_overloaded_functions): Likewise.
11230         (function_builder::register_function_group): Likewise.
11231         (function_call_info::function_call_info): Likewise.
11232         (function_resolver::function_resolver): Likewise.
11233         (function_resolver::get_vector_type): Likewise.
11234         (function_resolver::get_scalar_type_name): Likewise.
11235         (function_resolver::get_argument_type): Likewise.
11236         (function_resolver::scalar_argument_p): Likewise.
11237         (function_resolver::report_no_such_form): Likewise.
11238         (function_resolver::lookup_form): Likewise.
11239         (function_resolver::resolve_to): Likewise.
11240         (function_resolver::infer_vector_or_tuple_type): Likewise.
11241         (function_resolver::infer_vector_type): Likewise.
11242         (function_resolver::require_vector_or_scalar_type): Likewise.
11243         (function_resolver::require_vector_type): Likewise.
11244         (function_resolver::require_matching_vector_type): Likewise.
11245         (function_resolver::require_derived_vector_type): Likewise.
11246         (function_resolver::require_derived_scalar_type): Likewise.
11247         (function_resolver::require_integer_immediate): Likewise.
11248         (function_resolver::require_scalar_type): Likewise.
11249         (function_resolver::check_num_arguments): Likewise.
11250         (function_resolver::check_gp_argument): Likewise.
11251         (function_resolver::finish_opt_n_resolution): Likewise.
11252         (function_resolver::resolve_unary): Likewise.
11253         (function_resolver::resolve_unary_n): Likewise.
11254         (function_resolver::resolve_uniform): Likewise.
11255         (function_resolver::resolve_uniform_opt_n): Likewise.
11256         (function_resolver::resolve): Likewise.
11257         (function_checker::function_checker): Likewise.
11258         (function_checker::argument_exists_p): Likewise.
11259         (function_checker::require_immediate): Likewise.
11260         (function_checker::require_immediate_enum): Likewise.
11261         (function_checker::require_immediate_range): Likewise.
11262         (function_checker::check): Likewise.
11263         (gimple_folder::gimple_folder): Likewise.
11264         (gimple_folder::fold): Likewise.
11265         (function_expander::function_expander): Likewise.
11266         (function_expander::direct_optab_handler): Likewise.
11267         (function_expander::get_fallback_value): Likewise.
11268         (function_expander::get_reg_target): Likewise.
11269         (function_expander::add_output_operand): Likewise.
11270         (function_expander::add_input_operand): Likewise.
11271         (function_expander::add_integer_operand): Likewise.
11272         (function_expander::generate_insn): Likewise.
11273         (function_expander::use_exact_insn): Likewise.
11274         (function_expander::use_unpred_insn): Likewise.
11275         (function_expander::use_pred_x_insn): Likewise.
11276         (function_expander::use_cond_insn): Likewise.
11277         (function_expander::map_to_rtx_codes): Likewise.
11278         (function_expander::expand): Likewise.
11279         (resolve_overloaded_builtin): Likewise.
11280         (check_builtin_call): Likewise.
11281         (gimple_fold_builtin): Likewise.
11282         (expand_builtin): Likewise.
11283         (gt_ggc_mx): Likewise.
11284         (gt_pch_nx): Likewise.
11285         (gt_pch_nx): Likewise.
11286         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
11287         (s16): Likewise.
11288         (s32): Likewise.
11289         (s64): Likewise.
11290         (u8): Likewise.
11291         (u16): Likewise.
11292         (u32): Likewise.
11293         (u64): Likewise.
11294         (f16): Likewise.
11295         (f32): Likewise.
11296         (n): New mode.
11297         (offset): New mode.
11298         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
11299         (CP_READ_FPCR): Likewise.
11300         (CP_RAISE_FP_EXCEPTIONS): Likewise.
11301         (CP_READ_MEMORY): Likewise.
11302         (CP_WRITE_MEMORY): Likewise.
11303         (enum units_index): New enum.
11304         (enum predication_index): New.
11305         (enum type_class_index): New.
11306         (enum mode_suffix_index): New enum.
11307         (enum type_suffix_index): New.
11308         (struct mode_suffix_info): New struct.
11309         (struct type_suffix_info): New.
11310         (struct function_group_info): Likewise.
11311         (class function_instance): Likewise.
11312         (class registered_function): Likewise.
11313         (class function_builder): Likewise.
11314         (class function_call_info): Likewise.
11315         (class function_resolver): Likewise.
11316         (class function_checker): Likewise.
11317         (class gimple_folder): Likewise.
11318         (class function_expander): Likewise.
11319         (get_mve_pred16_t): Likewise.
11320         (find_mode_suffix): New function.
11321         (class function_base): Likewise.
11322         (class function_shape): Likewise.
11323         (function_instance::operator==): New function.
11324         (function_instance::operator!=): Likewise.
11325         (function_instance::vectors_per_tuple): Likewise.
11326         (function_instance::mode_suffix): Likewise.
11327         (function_instance::type_suffix): Likewise.
11328         (function_instance::scalar_type): Likewise.
11329         (function_instance::vector_type): Likewise.
11330         (function_instance::tuple_type): Likewise.
11331         (function_instance::vector_mode): Likewise.
11332         (function_call_info::function_returns_void_p): Likewise.
11333         (function_base::call_properties): Likewise.
11334         * config/arm/arm-protos.h (enum arm_builtin_class): Add
11335         ARM_BUILTIN_MVE.
11336         (handle_arm_mve_h): New.
11337         (resolve_overloaded_builtin): New.
11338         (check_builtin_call): New.
11339         (gimple_fold_builtin): New.
11340         (expand_builtin): New.
11341         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
11342         arm_gimple_fold_builtin.
11343         (arm_gimple_fold_builtin): New function.
11344         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
11345         * config/arm/predicates.md (arm_any_register_operand): New predicate.
11346         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
11347         (arm-mve-builtins-shapes.o): New target.
11348         (arm-mve-builtins-base.o): New target.
11349         * config/arm/arm-mve-builtins-base.cc: New file.
11350         * config/arm/arm-mve-builtins-base.def: New file.
11351         * config/arm/arm-mve-builtins-base.h: New file.
11352         * config/arm/arm-mve-builtins-functions.h: New file.
11353         * config/arm/arm-mve-builtins-shapes.cc: New file.
11354         * config/arm/arm-mve-builtins-shapes.h: New file.
11356 2023-05-03  Murray Steele  <murray.steele@arm.com>
11357             Christophe Lyon  <christophe.lyon@arm.com>
11358             Christophe Lyon   <christophe.lyon@arm.com>
11360         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
11361         New function.
11362         (arm_init_builtin): Use arm_general_add_builtin_function instead
11363         of arm_add_builtin_function.
11364         (arm_init_acle_builtins): Likewise.
11365         (arm_init_mve_builtins): Likewise.
11366         (arm_init_crypto_builtins): Likewise.
11367         (arm_init_builtins): Likewise.
11368         (arm_general_builtin_decl): New function.
11369         (arm_builtin_decl): Defer to numberspace-specialized functions.
11370         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
11371         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
11372         (arm_general_expand_builtin_1): ... specialize for general builtins.
11373         (arm_expand_acle_builtin): Use arm_general_expand_builtin
11374         instead of arm_expand_builtin.
11375         (arm_expand_mve_builtin): Likewise.
11376         (arm_expand_neon_builtin): Likewise.
11377         (arm_expand_vfp_builtin): Likewise.
11378         (arm_general_expand_builtin): New function.
11379         (arm_expand_builtin): Specialize for general builtins.
11380         (arm_general_check_builtin_call): New function.
11381         (arm_check_builtin_call): Specialize for general builtins.
11382         (arm_describe_resolver): Validate numberspace.
11383         (arm_cde_end_args): Likewise.
11384         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
11385         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
11387 2023-05-03  Martin Liska  <mliska@suse.cz>
11389         PR target/109713
11390         * config/riscv/sync.md: Add gcc_unreachable to a switch.
11392 2023-05-03  Richard Biener  <rguenther@suse.de>
11394         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
11395         (patch_loop_exit): Likewise.
11396         (connect_loops): Likewise.
11397         (split_loop): Likewise.
11398         (control_dep_semi_invariant_p): Likewise.
11399         (do_split_loop_on_cond): Likewise.
11400         (split_loop_on_cond): Likewise.
11401         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
11402         Likewise.
11403         (simplify_loop_version): Likewise.
11404         (evaluate_bbs): Likewise.
11405         (find_loop_guard): Likewise.
11406         (clean_up_after_unswitching): Likewise.
11407         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
11408         Likewise.
11409         (optimize_spaceship): Take a gcond * argument, avoid
11410         last_stmt.
11411         (math_opts_dom_walker::after_dom_children): Adjust call to
11412         optimize_spaceship.
11413         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
11414         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
11415         Likewise.
11417 2023-05-03  Andreas Schwab  <schwab@suse.de>
11419         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
11421 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
11423         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
11424         New function.
11425         (class vlseg): New class.
11426         (class vsseg): Ditto.
11427         (class vlsseg): Ditto.
11428         (class vssseg): Ditto.
11429         (class seg_indexed_load): Ditto.
11430         (class seg_indexed_store): Ditto.
11431         (class vlsegff): Ditto.
11432         (BASE): Ditto.
11433         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11434         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
11435         Ditto.
11436         (vsseg): Ditto.
11437         (vlsseg): Ditto.
11438         (vssseg): Ditto.
11439         (vluxseg): Ditto.
11440         (vloxseg): Ditto.
11441         (vsuxseg): Ditto.
11442         (vsoxseg): Ditto.
11443         (vlsegff): Ditto.
11444         * config/riscv/riscv-vector-builtins-shapes.cc (struct
11445         seg_loadstore_def): Ditto.
11446         (struct seg_indexed_loadstore_def): Ditto.
11447         (struct seg_fault_load_def): Ditto.
11448         (SHAPE): Ditto.
11449         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
11450         * config/riscv/riscv-vector-builtins.cc
11451         (function_builder::append_nf): New function.
11452         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
11453         Change ptr from double into float.
11454         (vfloat32m1x3_t): Ditto.
11455         (vfloat32m1x4_t): Ditto.
11456         (vfloat32m1x5_t): Ditto.
11457         (vfloat32m1x6_t): Ditto.
11458         (vfloat32m1x7_t): Ditto.
11459         (vfloat32m1x8_t): Ditto.
11460         (vfloat32m2x2_t): Ditto.
11461         (vfloat32m2x3_t): Ditto.
11462         (vfloat32m2x4_t): Ditto.
11463         (vfloat32m4x2_t): Ditto.
11464         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
11465         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
11466         segment ff load.
11467         * config/riscv/riscv.md: Add segment instructions.
11468         * config/riscv/vector-iterators.md: Support segment intrinsics.
11469         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
11470         pattern.
11471         (@pred_unit_strided_store<mode>): Ditto.
11472         (@pred_strided_load<mode>): Ditto.
11473         (@pred_strided_store<mode>): Ditto.
11474         (@pred_fault_load<mode>): Ditto.
11475         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
11476         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
11477         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
11478         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
11479         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
11480         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
11481         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
11482         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
11483         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
11484         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
11485         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
11486         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
11487         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
11488         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
11490 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
11492         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
11493         tuple type support.
11494         (inttype): Ditto.
11495         (floattype): Ditto.
11496         (main): Ditto.
11497         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
11498         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
11499         tuple type vset.
11500         (vget): Add tuple type vget.
11501         * config/riscv/riscv-vector-builtins-types.def
11502         (DEF_RVV_TUPLE_OPS): New macro.
11503         (vint8mf8x2_t): Ditto.
11504         (vuint8mf8x2_t): Ditto.
11505         (vint8mf8x3_t): Ditto.
11506         (vuint8mf8x3_t): Ditto.
11507         (vint8mf8x4_t): Ditto.
11508         (vuint8mf8x4_t): Ditto.
11509         (vint8mf8x5_t): Ditto.
11510         (vuint8mf8x5_t): Ditto.
11511         (vint8mf8x6_t): Ditto.
11512         (vuint8mf8x6_t): Ditto.
11513         (vint8mf8x7_t): Ditto.
11514         (vuint8mf8x7_t): Ditto.
11515         (vint8mf8x8_t): Ditto.
11516         (vuint8mf8x8_t): Ditto.
11517         (vint8mf4x2_t): Ditto.
11518         (vuint8mf4x2_t): Ditto.
11519         (vint8mf4x3_t): Ditto.
11520         (vuint8mf4x3_t): Ditto.
11521         (vint8mf4x4_t): Ditto.
11522         (vuint8mf4x4_t): Ditto.
11523         (vint8mf4x5_t): Ditto.
11524         (vuint8mf4x5_t): Ditto.
11525         (vint8mf4x6_t): Ditto.
11526         (vuint8mf4x6_t): Ditto.
11527         (vint8mf4x7_t): Ditto.
11528         (vuint8mf4x7_t): Ditto.
11529         (vint8mf4x8_t): Ditto.
11530         (vuint8mf4x8_t): Ditto.
11531         (vint8mf2x2_t): Ditto.
11532         (vuint8mf2x2_t): Ditto.
11533         (vint8mf2x3_t): Ditto.
11534         (vuint8mf2x3_t): Ditto.
11535         (vint8mf2x4_t): Ditto.
11536         (vuint8mf2x4_t): Ditto.
11537         (vint8mf2x5_t): Ditto.
11538         (vuint8mf2x5_t): Ditto.
11539         (vint8mf2x6_t): Ditto.
11540         (vuint8mf2x6_t): Ditto.
11541         (vint8mf2x7_t): Ditto.
11542         (vuint8mf2x7_t): Ditto.
11543         (vint8mf2x8_t): Ditto.
11544         (vuint8mf2x8_t): Ditto.
11545         (vint8m1x2_t): Ditto.
11546         (vuint8m1x2_t): Ditto.
11547         (vint8m1x3_t): Ditto.
11548         (vuint8m1x3_t): Ditto.
11549         (vint8m1x4_t): Ditto.
11550         (vuint8m1x4_t): Ditto.
11551         (vint8m1x5_t): Ditto.
11552         (vuint8m1x5_t): Ditto.
11553         (vint8m1x6_t): Ditto.
11554         (vuint8m1x6_t): Ditto.
11555         (vint8m1x7_t): Ditto.
11556         (vuint8m1x7_t): Ditto.
11557         (vint8m1x8_t): Ditto.
11558         (vuint8m1x8_t): Ditto.
11559         (vint8m2x2_t): Ditto.
11560         (vuint8m2x2_t): Ditto.
11561         (vint8m2x3_t): Ditto.
11562         (vuint8m2x3_t): Ditto.
11563         (vint8m2x4_t): Ditto.
11564         (vuint8m2x4_t): Ditto.
11565         (vint8m4x2_t): Ditto.
11566         (vuint8m4x2_t): Ditto.
11567         (vint16mf4x2_t): Ditto.
11568         (vuint16mf4x2_t): Ditto.
11569         (vint16mf4x3_t): Ditto.
11570         (vuint16mf4x3_t): Ditto.
11571         (vint16mf4x4_t): Ditto.
11572         (vuint16mf4x4_t): Ditto.
11573         (vint16mf4x5_t): Ditto.
11574         (vuint16mf4x5_t): Ditto.
11575         (vint16mf4x6_t): Ditto.
11576         (vuint16mf4x6_t): Ditto.
11577         (vint16mf4x7_t): Ditto.
11578         (vuint16mf4x7_t): Ditto.
11579         (vint16mf4x8_t): Ditto.
11580         (vuint16mf4x8_t): Ditto.
11581         (vint16mf2x2_t): Ditto.
11582         (vuint16mf2x2_t): Ditto.
11583         (vint16mf2x3_t): Ditto.
11584         (vuint16mf2x3_t): Ditto.
11585         (vint16mf2x4_t): Ditto.
11586         (vuint16mf2x4_t): Ditto.
11587         (vint16mf2x5_t): Ditto.
11588         (vuint16mf2x5_t): Ditto.
11589         (vint16mf2x6_t): Ditto.
11590         (vuint16mf2x6_t): Ditto.
11591         (vint16mf2x7_t): Ditto.
11592         (vuint16mf2x7_t): Ditto.
11593         (vint16mf2x8_t): Ditto.
11594         (vuint16mf2x8_t): Ditto.
11595         (vint16m1x2_t): Ditto.
11596         (vuint16m1x2_t): Ditto.
11597         (vint16m1x3_t): Ditto.
11598         (vuint16m1x3_t): Ditto.
11599         (vint16m1x4_t): Ditto.
11600         (vuint16m1x4_t): Ditto.
11601         (vint16m1x5_t): Ditto.
11602         (vuint16m1x5_t): Ditto.
11603         (vint16m1x6_t): Ditto.
11604         (vuint16m1x6_t): Ditto.
11605         (vint16m1x7_t): Ditto.
11606         (vuint16m1x7_t): Ditto.
11607         (vint16m1x8_t): Ditto.
11608         (vuint16m1x8_t): Ditto.
11609         (vint16m2x2_t): Ditto.
11610         (vuint16m2x2_t): Ditto.
11611         (vint16m2x3_t): Ditto.
11612         (vuint16m2x3_t): Ditto.
11613         (vint16m2x4_t): Ditto.
11614         (vuint16m2x4_t): Ditto.
11615         (vint16m4x2_t): Ditto.
11616         (vuint16m4x2_t): Ditto.
11617         (vint32mf2x2_t): Ditto.
11618         (vuint32mf2x2_t): Ditto.
11619         (vint32mf2x3_t): Ditto.
11620         (vuint32mf2x3_t): Ditto.
11621         (vint32mf2x4_t): Ditto.
11622         (vuint32mf2x4_t): Ditto.
11623         (vint32mf2x5_t): Ditto.
11624         (vuint32mf2x5_t): Ditto.
11625         (vint32mf2x6_t): Ditto.
11626         (vuint32mf2x6_t): Ditto.
11627         (vint32mf2x7_t): Ditto.
11628         (vuint32mf2x7_t): Ditto.
11629         (vint32mf2x8_t): Ditto.
11630         (vuint32mf2x8_t): Ditto.
11631         (vint32m1x2_t): Ditto.
11632         (vuint32m1x2_t): Ditto.
11633         (vint32m1x3_t): Ditto.
11634         (vuint32m1x3_t): Ditto.
11635         (vint32m1x4_t): Ditto.
11636         (vuint32m1x4_t): Ditto.
11637         (vint32m1x5_t): Ditto.
11638         (vuint32m1x5_t): Ditto.
11639         (vint32m1x6_t): Ditto.
11640         (vuint32m1x6_t): Ditto.
11641         (vint32m1x7_t): Ditto.
11642         (vuint32m1x7_t): Ditto.
11643         (vint32m1x8_t): Ditto.
11644         (vuint32m1x8_t): Ditto.
11645         (vint32m2x2_t): Ditto.
11646         (vuint32m2x2_t): Ditto.
11647         (vint32m2x3_t): Ditto.
11648         (vuint32m2x3_t): Ditto.
11649         (vint32m2x4_t): Ditto.
11650         (vuint32m2x4_t): Ditto.
11651         (vint32m4x2_t): Ditto.
11652         (vuint32m4x2_t): Ditto.
11653         (vint64m1x2_t): Ditto.
11654         (vuint64m1x2_t): Ditto.
11655         (vint64m1x3_t): Ditto.
11656         (vuint64m1x3_t): Ditto.
11657         (vint64m1x4_t): Ditto.
11658         (vuint64m1x4_t): Ditto.
11659         (vint64m1x5_t): Ditto.
11660         (vuint64m1x5_t): Ditto.
11661         (vint64m1x6_t): Ditto.
11662         (vuint64m1x6_t): Ditto.
11663         (vint64m1x7_t): Ditto.
11664         (vuint64m1x7_t): Ditto.
11665         (vint64m1x8_t): Ditto.
11666         (vuint64m1x8_t): Ditto.
11667         (vint64m2x2_t): Ditto.
11668         (vuint64m2x2_t): Ditto.
11669         (vint64m2x3_t): Ditto.
11670         (vuint64m2x3_t): Ditto.
11671         (vint64m2x4_t): Ditto.
11672         (vuint64m2x4_t): Ditto.
11673         (vint64m4x2_t): Ditto.
11674         (vuint64m4x2_t): Ditto.
11675         (vfloat32mf2x2_t): Ditto.
11676         (vfloat32mf2x3_t): Ditto.
11677         (vfloat32mf2x4_t): Ditto.
11678         (vfloat32mf2x5_t): Ditto.
11679         (vfloat32mf2x6_t): Ditto.
11680         (vfloat32mf2x7_t): Ditto.
11681         (vfloat32mf2x8_t): Ditto.
11682         (vfloat32m1x2_t): Ditto.
11683         (vfloat32m1x3_t): Ditto.
11684         (vfloat32m1x4_t): Ditto.
11685         (vfloat32m1x5_t): Ditto.
11686         (vfloat32m1x6_t): Ditto.
11687         (vfloat32m1x7_t): Ditto.
11688         (vfloat32m1x8_t): Ditto.
11689         (vfloat32m2x2_t): Ditto.
11690         (vfloat32m2x3_t): Ditto.
11691         (vfloat32m2x4_t): Ditto.
11692         (vfloat32m4x2_t): Ditto.
11693         (vfloat64m1x2_t): Ditto.
11694         (vfloat64m1x3_t): Ditto.
11695         (vfloat64m1x4_t): Ditto.
11696         (vfloat64m1x5_t): Ditto.
11697         (vfloat64m1x6_t): Ditto.
11698         (vfloat64m1x7_t): Ditto.
11699         (vfloat64m1x8_t): Ditto.
11700         (vfloat64m2x2_t): Ditto.
11701         (vfloat64m2x3_t): Ditto.
11702         (vfloat64m2x4_t): Ditto.
11703         (vfloat64m4x2_t): Ditto.
11704         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
11705         Ditto.
11706         (DEF_RVV_TYPE_INDEX): Ditto.
11707         (rvv_arg_type_info::get_tuple_subpart_type): New function.
11708         (DEF_RVV_TUPLE_TYPE): New macro.
11709         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
11710         Adapt for tuple vget/vset support.
11711         (vint8mf4_t): Ditto.
11712         (vuint8mf4_t): Ditto.
11713         (vint8mf2_t): Ditto.
11714         (vuint8mf2_t): Ditto.
11715         (vint8m1_t): Ditto.
11716         (vuint8m1_t): Ditto.
11717         (vint8m2_t): Ditto.
11718         (vuint8m2_t): Ditto.
11719         (vint8m4_t): Ditto.
11720         (vuint8m4_t): Ditto.
11721         (vint8m8_t): Ditto.
11722         (vuint8m8_t): Ditto.
11723         (vint16mf4_t): Ditto.
11724         (vuint16mf4_t): Ditto.
11725         (vint16mf2_t): Ditto.
11726         (vuint16mf2_t): Ditto.
11727         (vint16m1_t): Ditto.
11728         (vuint16m1_t): Ditto.
11729         (vint16m2_t): Ditto.
11730         (vuint16m2_t): Ditto.
11731         (vint16m4_t): Ditto.
11732         (vuint16m4_t): Ditto.
11733         (vint16m8_t): Ditto.
11734         (vuint16m8_t): Ditto.
11735         (vint32mf2_t): Ditto.
11736         (vuint32mf2_t): Ditto.
11737         (vint32m1_t): Ditto.
11738         (vuint32m1_t): Ditto.
11739         (vint32m2_t): Ditto.
11740         (vuint32m2_t): Ditto.
11741         (vint32m4_t): Ditto.
11742         (vuint32m4_t): Ditto.
11743         (vint32m8_t): Ditto.
11744         (vuint32m8_t): Ditto.
11745         (vint64m1_t): Ditto.
11746         (vuint64m1_t): Ditto.
11747         (vint64m2_t): Ditto.
11748         (vuint64m2_t): Ditto.
11749         (vint64m4_t): Ditto.
11750         (vuint64m4_t): Ditto.
11751         (vint64m8_t): Ditto.
11752         (vuint64m8_t): Ditto.
11753         (vfloat32mf2_t): Ditto.
11754         (vfloat32m1_t): Ditto.
11755         (vfloat32m2_t): Ditto.
11756         (vfloat32m4_t): Ditto.
11757         (vfloat32m8_t): Ditto.
11758         (vfloat64m1_t): Ditto.
11759         (vfloat64m2_t): Ditto.
11760         (vfloat64m4_t): Ditto.
11761         (vfloat64m8_t): Ditto.
11762         (tuple_subpart): Add tuple subpart base type.
11763         * config/riscv/riscv-vector-builtins.h (struct
11764         rvv_arg_type_info): Ditto.
11765         (tuple_type_field): New function.
11767 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
11769         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
11770         (RVV_TUPLE_PARTIAL_MODES): Ditto.
11771         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
11772         function.
11773         (get_nf): Ditto.
11774         (get_subpart_mode): Ditto.
11775         (get_tuple_mode): Ditto.
11776         (expand_tuple_move): Ditto.
11777         * config/riscv/riscv-v.cc (ENTRY): New macro.
11778         (TUPLE_ENTRY): Ditto.
11779         (get_nf): New function.
11780         (get_subpart_mode): Ditto.
11781         (get_tuple_mode): Ditto.
11782         (expand_tuple_move): Ditto.
11783         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
11784         New macro.
11785         (register_tuple_type): New function
11786         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
11787         New macro.
11788         (vint8mf8x2_t): New macro.
11789         (vuint8mf8x2_t): Ditto.
11790         (vint8mf8x3_t): Ditto.
11791         (vuint8mf8x3_t): Ditto.
11792         (vint8mf8x4_t): Ditto.
11793         (vuint8mf8x4_t): Ditto.
11794         (vint8mf8x5_t): Ditto.
11795         (vuint8mf8x5_t): Ditto.
11796         (vint8mf8x6_t): Ditto.
11797         (vuint8mf8x6_t): Ditto.
11798         (vint8mf8x7_t): Ditto.
11799         (vuint8mf8x7_t): Ditto.
11800         (vint8mf8x8_t): Ditto.
11801         (vuint8mf8x8_t): Ditto.
11802         (vint8mf4x2_t): Ditto.
11803         (vuint8mf4x2_t): Ditto.
11804         (vint8mf4x3_t): Ditto.
11805         (vuint8mf4x3_t): Ditto.
11806         (vint8mf4x4_t): Ditto.
11807         (vuint8mf4x4_t): Ditto.
11808         (vint8mf4x5_t): Ditto.
11809         (vuint8mf4x5_t): Ditto.
11810         (vint8mf4x6_t): Ditto.
11811         (vuint8mf4x6_t): Ditto.
11812         (vint8mf4x7_t): Ditto.
11813         (vuint8mf4x7_t): Ditto.
11814         (vint8mf4x8_t): Ditto.
11815         (vuint8mf4x8_t): Ditto.
11816         (vint8mf2x2_t): Ditto.
11817         (vuint8mf2x2_t): Ditto.
11818         (vint8mf2x3_t): Ditto.
11819         (vuint8mf2x3_t): Ditto.
11820         (vint8mf2x4_t): Ditto.
11821         (vuint8mf2x4_t): Ditto.
11822         (vint8mf2x5_t): Ditto.
11823         (vuint8mf2x5_t): Ditto.
11824         (vint8mf2x6_t): Ditto.
11825         (vuint8mf2x6_t): Ditto.
11826         (vint8mf2x7_t): Ditto.
11827         (vuint8mf2x7_t): Ditto.
11828         (vint8mf2x8_t): Ditto.
11829         (vuint8mf2x8_t): Ditto.
11830         (vint8m1x2_t): Ditto.
11831         (vuint8m1x2_t): Ditto.
11832         (vint8m1x3_t): Ditto.
11833         (vuint8m1x3_t): Ditto.
11834         (vint8m1x4_t): Ditto.
11835         (vuint8m1x4_t): Ditto.
11836         (vint8m1x5_t): Ditto.
11837         (vuint8m1x5_t): Ditto.
11838         (vint8m1x6_t): Ditto.
11839         (vuint8m1x6_t): Ditto.
11840         (vint8m1x7_t): Ditto.
11841         (vuint8m1x7_t): Ditto.
11842         (vint8m1x8_t): Ditto.
11843         (vuint8m1x8_t): Ditto.
11844         (vint8m2x2_t): Ditto.
11845         (vuint8m2x2_t): Ditto.
11846         (vint8m2x3_t): Ditto.
11847         (vuint8m2x3_t): Ditto.
11848         (vint8m2x4_t): Ditto.
11849         (vuint8m2x4_t): Ditto.
11850         (vint8m4x2_t): Ditto.
11851         (vuint8m4x2_t): Ditto.
11852         (vint16mf4x2_t): Ditto.
11853         (vuint16mf4x2_t): Ditto.
11854         (vint16mf4x3_t): Ditto.
11855         (vuint16mf4x3_t): Ditto.
11856         (vint16mf4x4_t): Ditto.
11857         (vuint16mf4x4_t): Ditto.
11858         (vint16mf4x5_t): Ditto.
11859         (vuint16mf4x5_t): Ditto.
11860         (vint16mf4x6_t): Ditto.
11861         (vuint16mf4x6_t): Ditto.
11862         (vint16mf4x7_t): Ditto.
11863         (vuint16mf4x7_t): Ditto.
11864         (vint16mf4x8_t): Ditto.
11865         (vuint16mf4x8_t): Ditto.
11866         (vint16mf2x2_t): Ditto.
11867         (vuint16mf2x2_t): Ditto.
11868         (vint16mf2x3_t): Ditto.
11869         (vuint16mf2x3_t): Ditto.
11870         (vint16mf2x4_t): Ditto.
11871         (vuint16mf2x4_t): Ditto.
11872         (vint16mf2x5_t): Ditto.
11873         (vuint16mf2x5_t): Ditto.
11874         (vint16mf2x6_t): Ditto.
11875         (vuint16mf2x6_t): Ditto.
11876         (vint16mf2x7_t): Ditto.
11877         (vuint16mf2x7_t): Ditto.
11878         (vint16mf2x8_t): Ditto.
11879         (vuint16mf2x8_t): Ditto.
11880         (vint16m1x2_t): Ditto.
11881         (vuint16m1x2_t): Ditto.
11882         (vint16m1x3_t): Ditto.
11883         (vuint16m1x3_t): Ditto.
11884         (vint16m1x4_t): Ditto.
11885         (vuint16m1x4_t): Ditto.
11886         (vint16m1x5_t): Ditto.
11887         (vuint16m1x5_t): Ditto.
11888         (vint16m1x6_t): Ditto.
11889         (vuint16m1x6_t): Ditto.
11890         (vint16m1x7_t): Ditto.
11891         (vuint16m1x7_t): Ditto.
11892         (vint16m1x8_t): Ditto.
11893         (vuint16m1x8_t): Ditto.
11894         (vint16m2x2_t): Ditto.
11895         (vuint16m2x2_t): Ditto.
11896         (vint16m2x3_t): Ditto.
11897         (vuint16m2x3_t): Ditto.
11898         (vint16m2x4_t): Ditto.
11899         (vuint16m2x4_t): Ditto.
11900         (vint16m4x2_t): Ditto.
11901         (vuint16m4x2_t): Ditto.
11902         (vint32mf2x2_t): Ditto.
11903         (vuint32mf2x2_t): Ditto.
11904         (vint32mf2x3_t): Ditto.
11905         (vuint32mf2x3_t): Ditto.
11906         (vint32mf2x4_t): Ditto.
11907         (vuint32mf2x4_t): Ditto.
11908         (vint32mf2x5_t): Ditto.
11909         (vuint32mf2x5_t): Ditto.
11910         (vint32mf2x6_t): Ditto.
11911         (vuint32mf2x6_t): Ditto.
11912         (vint32mf2x7_t): Ditto.
11913         (vuint32mf2x7_t): Ditto.
11914         (vint32mf2x8_t): Ditto.
11915         (vuint32mf2x8_t): Ditto.
11916         (vint32m1x2_t): Ditto.
11917         (vuint32m1x2_t): Ditto.
11918         (vint32m1x3_t): Ditto.
11919         (vuint32m1x3_t): Ditto.
11920         (vint32m1x4_t): Ditto.
11921         (vuint32m1x4_t): Ditto.
11922         (vint32m1x5_t): Ditto.
11923         (vuint32m1x5_t): Ditto.
11924         (vint32m1x6_t): Ditto.
11925         (vuint32m1x6_t): Ditto.
11926         (vint32m1x7_t): Ditto.
11927         (vuint32m1x7_t): Ditto.
11928         (vint32m1x8_t): Ditto.
11929         (vuint32m1x8_t): Ditto.
11930         (vint32m2x2_t): Ditto.
11931         (vuint32m2x2_t): Ditto.
11932         (vint32m2x3_t): Ditto.
11933         (vuint32m2x3_t): Ditto.
11934         (vint32m2x4_t): Ditto.
11935         (vuint32m2x4_t): Ditto.
11936         (vint32m4x2_t): Ditto.
11937         (vuint32m4x2_t): Ditto.
11938         (vint64m1x2_t): Ditto.
11939         (vuint64m1x2_t): Ditto.
11940         (vint64m1x3_t): Ditto.
11941         (vuint64m1x3_t): Ditto.
11942         (vint64m1x4_t): Ditto.
11943         (vuint64m1x4_t): Ditto.
11944         (vint64m1x5_t): Ditto.
11945         (vuint64m1x5_t): Ditto.
11946         (vint64m1x6_t): Ditto.
11947         (vuint64m1x6_t): Ditto.
11948         (vint64m1x7_t): Ditto.
11949         (vuint64m1x7_t): Ditto.
11950         (vint64m1x8_t): Ditto.
11951         (vuint64m1x8_t): Ditto.
11952         (vint64m2x2_t): Ditto.
11953         (vuint64m2x2_t): Ditto.
11954         (vint64m2x3_t): Ditto.
11955         (vuint64m2x3_t): Ditto.
11956         (vint64m2x4_t): Ditto.
11957         (vuint64m2x4_t): Ditto.
11958         (vint64m4x2_t): Ditto.
11959         (vuint64m4x2_t): Ditto.
11960         (vfloat32mf2x2_t): Ditto.
11961         (vfloat32mf2x3_t): Ditto.
11962         (vfloat32mf2x4_t): Ditto.
11963         (vfloat32mf2x5_t): Ditto.
11964         (vfloat32mf2x6_t): Ditto.
11965         (vfloat32mf2x7_t): Ditto.
11966         (vfloat32mf2x8_t): Ditto.
11967         (vfloat32m1x2_t): Ditto.
11968         (vfloat32m1x3_t): Ditto.
11969         (vfloat32m1x4_t): Ditto.
11970         (vfloat32m1x5_t): Ditto.
11971         (vfloat32m1x6_t): Ditto.
11972         (vfloat32m1x7_t): Ditto.
11973         (vfloat32m1x8_t): Ditto.
11974         (vfloat32m2x2_t): Ditto.
11975         (vfloat32m2x3_t): Ditto.
11976         (vfloat32m2x4_t): Ditto.
11977         (vfloat32m4x2_t): Ditto.
11978         (vfloat64m1x2_t): Ditto.
11979         (vfloat64m1x3_t): Ditto.
11980         (vfloat64m1x4_t): Ditto.
11981         (vfloat64m1x5_t): Ditto.
11982         (vfloat64m1x6_t): Ditto.
11983         (vfloat64m1x7_t): Ditto.
11984         (vfloat64m1x8_t): Ditto.
11985         (vfloat64m2x2_t): Ditto.
11986         (vfloat64m2x3_t): Ditto.
11987         (vfloat64m2x4_t): Ditto.
11988         (vfloat64m4x2_t): Ditto.
11989         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
11990         Ditto.
11991         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
11992         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
11993         function.
11994         (TUPLE_ENTRY): Ditto.
11995         (riscv_v_ext_mode_p): New function.
11996         (riscv_v_adjust_nunits): Add tuple mode adjustment.
11997         (riscv_classify_address): Ditto.
11998         (riscv_binary_cost): Ditto.
11999         (riscv_rtx_costs): Ditto.
12000         (riscv_secondary_memory_needed): Ditto.
12001         (riscv_hard_regno_nregs): Ditto.
12002         (riscv_hard_regno_mode_ok): Ditto.
12003         (riscv_vector_mode_supported_p): Ditto.
12004         (riscv_regmode_natural_size): Ditto.
12005         (riscv_array_mode): New function.
12006         (TARGET_ARRAY_MODE): New target hook.
12007         * config/riscv/riscv.md: Add tuple modes.
12008         * config/riscv/vector-iterators.md: Ditto.
12009         * config/riscv/vector.md (mov<mode>): Add tuple modes data
12010         movement.
12011         (*mov<VT:mode>_<P:mode>): Ditto.
12013 2023-05-03  Richard Biener  <rguenther@suse.de>
12015         * cse.cc (cse_insn): Track an equivalence to the destination
12016         separately and delay using src_related for it.
12018 2023-05-03  Richard Biener  <rguenther@suse.de>
12020         * cse.cc (HASH): Turn into inline function and mix
12021         in another HASH_SHIFT bits.
12022         (SAFE_HASH): Likewise.
12024 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12026         PR target/99195
12027         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
12028         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
12030 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12032         PR target/99195
12033         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
12034         (add<mode>3<vczle><vczbe>): ... This.
12035         (sub<mode>3): Rename to...
12036         (sub<mode>3<vczle><vczbe>): ... This.
12037         (mul<mode>3): Rename to...
12038         (mul<mode>3<vczle><vczbe>): ... This.
12039         (*div<mode>3): Rename to...
12040         (*div<mode>3<vczle><vczbe>): ... This.
12041         (neg<mode>2): Rename to...
12042         (neg<mode>2<vczle><vczbe>): ... This.
12043         (abs<mode>2): Rename to...
12044         (abs<mode>2<vczle><vczbe>): ... This.
12045         (<frint_pattern><mode>2): Rename to...
12046         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
12047         (<fmaxmin><mode>3): Rename to...
12048         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
12049         (*sqrt<mode>2): Rename to...
12050         (*sqrt<mode>2<vczle><vczbe>): ... This.
12052 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
12054         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
12056 2023-05-03  Martin Liska  <mliska@suse.cz>
12058         PR tree-optimization/109693
12059         * value-range-storage.cc (vrange_allocator::vrange_allocator):
12060         Remove unused field.
12061         * value-range-storage.h: Likewise.
12063 2023-05-02  Andrew Pinski  <apinski@marvell.com>
12065         * tree-ssa-phiopt.cc (move_stmt): New function.
12066         (match_simplify_replacement): Use move_stmt instead
12067         of the inlined version.
12069 2023-05-02  Andrew Pinski  <apinski@marvell.com>
12071         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
12072         pattern.
12074 2023-05-02  Andrew Pinski  <apinski@marvell.com>
12076         PR tree-optimization/109702
12077         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
12078         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
12080 2023-05-02  Andrew Pinski  <apinski@marvell.com>
12082         PR target/109657
12083         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
12084         insn_and_split pattern.
12086 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12088         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
12089         load mapping.
12091 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12093         * config/riscv/sync.md (mem_thread_fence_1): Change fence
12094         depending on the given memory model.
12096 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12098         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
12099         riscv_union_memmodels function to sync.md.
12100         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
12101         get the union of two memmodels in sync.md.
12102         (riscv_print_operand): Add %I and %J flags that output the
12103         optimal LR/SC flag bits for a given memory model.
12104         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
12105         bits on SC op and replace with optimized %I, %J flags.
12107 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12109         * config/riscv/riscv.cc
12110         (riscv_memmodel_needs_amo_release): Change function name.
12111         (riscv_print_operand): Remove unneeded %F case.
12112         * config/riscv/sync.md: Remove unneeded fences.
12114 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12116         PR target/89835
12117         * config/riscv/sync.md (atomic_store<mode>): Use simple store
12118         instruction in combination with fence(s).
12120 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12122         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
12123         of %A to include release bits.
12125 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12127         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
12128         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
12129         pair.
12131 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12133         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
12134         sequentially consistent LR.aqrl/SC.rl pairs.
12136 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
12138         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
12139         sanitize memmodel input with memmodel_base.
12141 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
12142             Pan Li  <pan2.li@intel.com>
12144         PR target/109617
12145         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
12147 2023-05-02  Romain Naour  <romain.naour@gmail.com>
12149         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
12150         the namespace.
12152 2023-05-02  Martin Liska  <mliska@suse.cz>
12154         * doc/invoke.texi: Update documentation based on param.opt file.
12156 2023-05-02  Richard Biener  <rguenther@suse.de>
12158         PR tree-optimization/109672
12159         * tree-vect-stmts.cc (vectorizable_operation): For plus,
12160         minus and negate always check the vector mode is word mode.
12162 2023-05-01  Andrew Pinski  <apinski@marvell.com>
12164         * tree-ssa-phiopt.cc: Update comment about
12165         how the transformation are implemented.
12167 2023-05-01  Jeff Law  <jlaw@ventanamicro>
12169         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
12171 2023-05-01  Jeff Law  <jlaw@ventanamicro>
12173         * config/cris/cris.cc (TARGET_LRA_P): Remove.
12174         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
12175         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
12176         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
12177         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
12178         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
12180 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
12182         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
12183         * print-tree.cc (print_decl_identifier): Implement it.
12184         * toplev.cc (output_stack_usage_1): Use it.
12186 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12188         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
12189         friends.
12191 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12193         * value-range.h (irange::set_nonzero): Inline.
12195 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12197         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
12198         precision.
12199         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
12200         invalid_range, as it is an inverse range.
12201         * tree-vrp.cc (find_case_label_range): Avoid trees.
12202         * value-range.cc (irange::irange_set): Delete.
12203         (irange::irange_set_1bit_anti_range): Delete.
12204         (irange::irange_set_anti_range): Delete.
12205         (irange::set): Cleanup.
12206         * value-range.h (class irange): Remove irange_set,
12207         irange_set_anti_range, irange_set_1bit_anti_range.
12208         (irange::set_undefined): Remove set to m_type.
12210 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12212         * range-op.cc (update_known_bitmask): Adjust for irange containing
12213         wide_ints internally.
12214         * tree-ssanames.cc (set_nonzero_bits): Same.
12215         * tree-ssanames.h (set_nonzero_bits): Same.
12216         * value-range-storage.cc (irange_storage::set_irange): Same.
12217         (irange_storage::get_irange): Same.
12218         * value-range.cc (irange::operator=): Same.
12219         (irange::irange_set): Same.
12220         (irange::irange_set_1bit_anti_range): Same.
12221         (irange::irange_set_anti_range): Same.
12222         (irange::set): Same.
12223         (irange::verify_range): Same.
12224         (irange::contains_p): Same.
12225         (irange::irange_single_pair_union): Same.
12226         (irange::union_): Same.
12227         (irange::irange_contains_p): Same.
12228         (irange::intersect): Same.
12229         (irange::invert): Same.
12230         (irange::set_range_from_nonzero_bits): Same.
12231         (irange::set_nonzero_bits): Same.
12232         (mask_to_wi): Same.
12233         (irange::intersect_nonzero_bits): Same.
12234         (irange::union_nonzero_bits): Same.
12235         (gt_ggc_mx): Same.
12236         (gt_pch_nx): Same.
12237         (tree_range): Same.
12238         (range_tests_strict_enum): Same.
12239         (range_tests_misc): Same.
12240         (range_tests_nonzero_bits): Same.
12241         * value-range.h (irange::type): Same.
12242         (irange::varying_compatible_p): Same.
12243         (irange::irange): Same.
12244         (int_range::int_range): Same.
12245         (irange::set_undefined): Same.
12246         (irange::set_varying): Same.
12247         (irange::lower_bound): Same.
12248         (irange::upper_bound): Same.
12250 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12252         * gimple-range-fold.cc (tree_lower_bound): Delete.
12253         (tree_upper_bound): Delete.
12254         (vrp_val_max): Delete.
12255         (vrp_val_min): Delete.
12256         (fold_using_range::range_of_ssa_name_with_loop_info): Call
12257         range_of_var_in_loop.
12258         * vr-values.cc (valid_value_p): Delete.
12259         (fix_overflow): Delete.
12260         (get_scev_info): New.
12261         (bounds_of_var_in_loop): Refactor into...
12262         (induction_variable_may_overflow_p): ...this,
12263         (range_from_loop_direction): ...and this,
12264         (range_of_var_in_loop): ...and this.
12265         * vr-values.h (bounds_of_var_in_loop): Delete.
12266         (range_of_var_in_loop): New.
12268 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12270         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
12271         irange_val*.
12272         (vrp_val_max): New.
12273         (vrp_val_min): New.
12274         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
12275         * range-op.cc (max_limit): Same.
12276         (min_limit): Same.
12277         (plus_minus_ranges): Same.
12278         (operator_rshift::op1_range): Same.
12279         (operator_cast::inside_domain_p): Same.
12280         * value-range.cc (vrp_val_is_max): Delete.
12281         (vrp_val_is_min): Delete.
12282         (range_tests_misc): Use irange_val_*.
12283         * value-range.h (vrp_val_is_min): Delete.
12284         (vrp_val_is_max): Delete.
12285         (vrp_val_max): Delete.
12286         (irange_val_min): New.
12287         (vrp_val_min): Delete.
12288         (irange_val_max): New.
12289         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
12291 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12293         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
12294         * gimple-fold.cc (size_must_be_zero_p): Same.
12295         * gimple-loop-versioning.cc
12296         (loop_versioning::prune_loop_conditions): Same.
12297         * gimple-range-edge.cc (gcond_edge_range): Same.
12298         (gimple_outgoing_range::calc_switch_ranges): Same.
12299         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
12300         (adjust_realpart_expr): Same.
12301         (fold_using_range::range_of_address): Same.
12302         (fold_using_range::relation_fold_and_or): Same.
12303         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
12304         (range_is_either_true_or_false): Same.
12305         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
12306         (cfn_clz::fold_range): Same.
12307         (cfn_ctz::fold_range): Same.
12308         * gimple-range-tests.cc (class test_expr_eval): Same.
12309         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
12310         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
12311         (propagate_vr_across_jump_function): Same.
12312         (decide_whether_version_node): Same.
12313         * ipa-prop.cc (ipa_get_value_range): Same.
12314         * ipa-prop.h (ipa_range_set_and_normalize): Same.
12315         * range-op.cc (get_shift_range): Same.
12316         (value_range_from_overflowed_bounds): Same.
12317         (value_range_with_overflow): Same.
12318         (create_possibly_reversed_range): Same.
12319         (equal_op1_op2_relation): Same.
12320         (not_equal_op1_op2_relation): Same.
12321         (lt_op1_op2_relation): Same.
12322         (le_op1_op2_relation): Same.
12323         (gt_op1_op2_relation): Same.
12324         (ge_op1_op2_relation): Same.
12325         (operator_mult::op1_range): Same.
12326         (operator_exact_divide::op1_range): Same.
12327         (operator_lshift::op1_range): Same.
12328         (operator_rshift::op1_range): Same.
12329         (operator_cast::op1_range): Same.
12330         (operator_logical_and::fold_range): Same.
12331         (set_nonzero_range_from_mask): Same.
12332         (operator_bitwise_or::op1_range): Same.
12333         (operator_bitwise_xor::op1_range): Same.
12334         (operator_addr_expr::fold_range): Same.
12335         (pointer_plus_operator::wi_fold): Same.
12336         (pointer_or_operator::op1_range): Same.
12337         (INT): Same.
12338         (UINT): Same.
12339         (INT16): Same.
12340         (UINT16): Same.
12341         (SCHAR): Same.
12342         (UCHAR): Same.
12343         (range_op_cast_tests): Same.
12344         (range_op_lshift_tests): Same.
12345         (range_op_rshift_tests): Same.
12346         (range_op_bitwise_and_tests): Same.
12347         (range_relational_tests): Same.
12348         * range.cc (range_zero): Same.
12349         (range_nonzero): Same.
12350         * range.h (range_true): Same.
12351         (range_false): Same.
12352         (range_true_and_false): Same.
12353         * tree-data-ref.cc (split_constant_offset_1): Same.
12354         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
12355         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
12356         (find_unswitching_predicates_for_bb): Same.
12357         * tree-ssa-phiopt.cc (value_replacement): Same.
12358         * tree-ssa-threadbackward.cc
12359         (back_threader::find_taken_edge_cond): Same.
12360         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
12361         * tree-vrp.cc (find_case_label_range): Same.
12362         * value-query.cc (range_query::get_tree_range): Same.
12363         * value-range.cc (irange::set_nonnegative): Same.
12364         (frange::contains_p): Same.
12365         (frange::singleton_p): Same.
12366         (frange::internal_singleton_p): Same.
12367         (irange::irange_set): Same.
12368         (irange::irange_set_1bit_anti_range): Same.
12369         (irange::irange_set_anti_range): Same.
12370         (irange::set): Same.
12371         (irange::operator==): Same.
12372         (irange::singleton_p): Same.
12373         (irange::contains_p): Same.
12374         (irange::set_range_from_nonzero_bits): Same.
12375         (DEFINE_INT_RANGE_INSTANCE): Same.
12376         (INT): Same.
12377         (UINT): Same.
12378         (SCHAR): Same.
12379         (UINT128): Same.
12380         (UCHAR): Same.
12381         (range): New.
12382         (tree_range): New.
12383         (range_int): New.
12384         (range_uint): New.
12385         (range_uint128): New.
12386         (range_uchar): New.
12387         (range_char): New.
12388         (build_range3): Convert to irange wide_int API.
12389         (range_tests_irange3): Same.
12390         (range_tests_int_range_max): Same.
12391         (range_tests_strict_enum): Same.
12392         (range_tests_misc): Same.
12393         (range_tests_nonzero_bits): Same.
12394         (range_tests_nan): Same.
12395         (range_tests_signed_zeros): Same.
12396         * value-range.h (Value_Range::Value_Range): Same.
12397         (irange::set): Same.
12398         (irange::nonzero_p): Same.
12399         (irange::contains_p): Same.
12400         (range_includes_zero_p): Same.
12401         (irange::set_nonzero): Same.
12402         (irange::set_zero): Same.
12403         (contains_zero_p): Same.
12404         (frange::contains_p): Same.
12405         * vr-values.cc
12406         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
12407         (bounds_of_var_in_loop): Same.
12408         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12410 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12412         * value-range.cc (irange::irange_union): Rename to...
12413         (irange::union_): ...this.
12414         (irange::irange_intersect): Rename to...
12415         (irange::intersect): ...this.
12416         * value-range.h (irange::union_): Delete.
12417         (irange::intersect): Delete.
12419 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12421         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
12423 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12425         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
12426         ranger API.
12427         (compare_ranges): Delete.
12428         (compare_range_with_value): Delete.
12429         (bounds_of_var_in_loop): Tidy up by using ranger API.
12430         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
12431         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
12432         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
12433         strict_overflow_p and only_ranges.
12434         (simplify_using_ranges::legacy_fold_cond): Adjust call to
12435         legacy_fold_cond_overflow.
12436         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
12437         rename.
12438         (range_fits_type_p): Rename value_range to irange.
12439         * vr-values.h (range_fits_type_p): Adjust prototype.
12441 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12443         * value-range.cc (irange::irange_set_anti_range): Remove uses of
12444         tree_lower_bound and tree_upper_bound.
12445         (irange::verify_range): Same.
12446         (irange::operator==): Same.
12447         (irange::singleton_p): Same.
12448         * value-range.h (irange::tree_lower_bound): Delete.
12449         (irange::tree_upper_bound): Delete.
12450         (irange::lower_bound): Delete.
12451         (irange::upper_bound): Delete.
12452         (irange::zero_p): Remove uses of tree_lower_bound and
12453         tree_upper_bound.
12455 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12457         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
12458         kind() call.
12459         (determine_value_range): Same.
12460         (record_nonwrapping_iv): Same.
12461         (infer_loop_bounds_from_signedness): Same.
12462         (scev_var_range_cant_overflow): Same.
12463         * tree-vrp.cc (operand_less_p): Delete.
12464         * tree-vrp.h (operand_less_p): Delete.
12465         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
12466         (irange::value_inside_range): Delete.
12467         * value-range.h (vrange::kind): Delete.
12468         (irange::num_pairs): Remove check of m_kind.
12469         (irange::min): Delete.
12470         (irange::max): Delete.
12472 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
12474         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
12475         for vrange_storage.
12476         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
12477         (sbr_vector::grow): Same.
12478         (sbr_vector::set_bb_range): Same.
12479         (sbr_vector::get_bb_range): Same.
12480         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
12481         (sbr_sparse_bitmap::set_bb_range): Same.
12482         (sbr_sparse_bitmap::get_bb_range): Same.
12483         (block_range_cache::block_range_cache): Same.
12484         (ssa_global_cache::ssa_global_cache): Same.
12485         (ssa_global_cache::get_global_range): Same.
12486         (ssa_global_cache::set_global_range): Same.
12487         * gimple-range-cache.h: Same.
12488         * gimple-range-edge.cc
12489         (gimple_outgoing_range::gimple_outgoing_range): Same.
12490         (gimple_outgoing_range::switch_edge_range): Same.
12491         (gimple_outgoing_range::calc_switch_ranges): Same.
12492         * gimple-range-edge.h: Same.
12493         * gimple-range-infer.cc
12494         (infer_range_manager::infer_range_manager): Same.
12495         (infer_range_manager::get_nonzero): Same.
12496         (infer_range_manager::maybe_adjust_range): Same.
12497         (infer_range_manager::add_range): Same.
12498         * gimple-range-infer.h: Rename obstack_vrange_allocator to
12499         vrange_allocator.
12500         * tree-core.h (struct irange_storage_slot): Remove.
12501         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
12502         range_info a pointer to vrange_storage.
12503         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
12504         (range_info_alloc): Same.
12505         (range_info_free): Same.
12506         (range_info_get_range): Same.
12507         (range_info_set_range): Same.
12508         (get_nonzero_bits): Same.
12509         * value-query.cc (get_ssa_name_range_info): Same.
12510         * value-range-storage.cc (class vrange_internal_alloc): New.
12511         (class vrange_obstack_alloc): New.
12512         (class vrange_ggc_alloc): New.
12513         (vrange_allocator::vrange_allocator): New.
12514         (vrange_allocator::~vrange_allocator): New.
12515         (vrange_storage::alloc_slot): New.
12516         (vrange_allocator::alloc): New.
12517         (vrange_allocator::free): New.
12518         (vrange_allocator::clone): New.
12519         (vrange_allocator::clone_varying): New.
12520         (vrange_allocator::clone_undefined): New.
12521         (vrange_storage::alloc): New.
12522         (vrange_storage::set_vrange): Remove slot argument.
12523         (vrange_storage::get_vrange): Same.
12524         (vrange_storage::fits_p): Same.
12525         (vrange_storage::equal_p): New.
12526         (irange_storage::write_lengths_address): New.
12527         (irange_storage::lengths_address): New.
12528         (irange_storage_slot::alloc_slot): Remove.
12529         (irange_storage::alloc): New.
12530         (irange_storage_slot::irange_storage_slot): Remove.
12531         (irange_storage::irange_storage): New.
12532         (write_wide_int): New.
12533         (irange_storage_slot::set_irange): Remove.
12534         (irange_storage::set_irange): New.
12535         (read_wide_int): New.
12536         (irange_storage_slot::get_irange): Remove.
12537         (irange_storage::get_irange): New.
12538         (irange_storage_slot::size): Remove.
12539         (irange_storage::equal_p): New.
12540         (irange_storage_slot::num_wide_ints_needed): Remove.
12541         (irange_storage::size): New.
12542         (irange_storage_slot::fits_p): Remove.
12543         (irange_storage::fits_p): New.
12544         (irange_storage_slot::dump): Remove.
12545         (irange_storage::dump): New.
12546         (frange_storage_slot::alloc_slot): Remove.
12547         (frange_storage::alloc): New.
12548         (frange_storage_slot::set_frange): Remove.
12549         (frange_storage::set_frange): New.
12550         (frange_storage_slot::get_frange): Remove.
12551         (frange_storage::get_frange): New.
12552         (frange_storage_slot::fits_p): Remove.
12553         (frange_storage::equal_p): New.
12554         (frange_storage::fits_p): New.
12555         (ggc_vrange_allocator): New.
12556         (ggc_alloc_vrange_storage): New.
12557         * value-range-storage.h (class vrange_storage): Rewrite.
12558         (class irange_storage): Rewrite.
12559         (class frange_storage): Rewrite.
12560         (class obstack_vrange_allocator): Remove.
12561         (class ggc_vrange_allocator): Remove.
12562         (vrange_allocator::alloc_vrange): Remove.
12563         (vrange_allocator::alloc_irange): Remove.
12564         (vrange_allocator::alloc_frange): Remove.
12565         (ggc_alloc_vrange_storage): New.
12566         * value-range.h (class irange): Rename vrange_allocator to
12567         irange_storage.
12568         (class frange): Same.
12570 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
12572         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
12573         inc to avoid clobbering the carry flag.
12575 2023-04-30  Andrew Pinski  <apinski@marvell.com>
12577         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
12578         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
12580 2023-04-30  Andrew Pinski  <apinski@marvell.com>
12582         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12583         Allow some builtin/internal function calls which
12584         are known not to trap/throw.
12585         (phiopt_worker::match_simplify_replacement):
12586         Use name instead of getting the lhs again.
12588 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
12590         * configure: Regenerate.
12591         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
12593 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
12595         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
12596         emit_insn_if_valid_for_reload.
12597         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
12598         to be recognized, also try emitting a parallel that clobbers
12599         TARGET_FLAGS_REGNUM, as applicable.
12601 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
12603         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
12604         to a define_insn.
12605         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
12606         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
12608 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
12610         * config/stormy16/stormy16.md (any_lshift): New code iterator.
12611         (any_or_plus): Likewise.
12612         (any_rotate): Likewise.
12613         (*<any_lshift>_and_internal): New define_insn_and_split to
12614         recognize a logical shift followed by an AND, and split it
12615         again after reload.
12616         (*swpn): New define_insn matching xstormy16's swpn.
12617         (*swpn_zext): New define_insn recognizing swpn followed by
12618         zero_extendqihi2, i.e. with the high byte set to zero.
12619         (*swpn_sext): Likewise, for swpn followed by cbw.
12620         (*swpn_sext_2): Likewise, for an alternate RTL form.
12621         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
12622         sequence is split in the correct place to recognize the *swpn_zext
12623         followed by any_or_plus (ior, xor or plus) instruction.
12625 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
12627         PR target/105525
12628         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
12629         (lm32-*-uclinux*): Likewise.
12631 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
12633         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
12634         for riscv_use_save_libcall.
12635         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
12636         (riscv_compute_frame_info): restructure to decouple stack allocation
12637         for rv32e w/o save-restore.
12639 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
12641         * doc/install.texi: Fix documentation typo
12643 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
12645         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
12646         (u): Add div/udiv cases.
12647         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
12648         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
12649         divmod expansion.
12650         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
12651         (thead_c906_tune_info): Likewise.
12652         (optimize_size_tune_info): Likewise.
12653         (riscv_use_divmod_expander): New function.
12654         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
12656 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
12658         * config/riscv/bitmanip.md: Added clmulr instruction.
12659         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
12660         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
12661         (type): Add clmul
12662         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
12663         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
12664         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
12665         functions to riscv-cmo.def.
12666         * config/riscv/generic.md: Add clmul to list of instructions
12667         using the generic_imul reservation.
12669 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
12671         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
12673 2023-04-28  Andrew Pinski  <apinski@marvell.com>
12675         PR tree-optimization/100958
12676         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
12677         (pass_phiopt::execute): Don't call two_value_replacement.
12678         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
12679         handle what two_value_replacement did.
12681 2023-04-28  Andrew Pinski  <apinski@marvell.com>
12683         * match.pd: Add patterns for
12684         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
12686 2023-04-28  Andrew Pinski  <apinski@marvell.com>
12688         * match.pd: Factor out the deciding the min/max from
12689         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
12690         pattern to ...
12691         * fold-const.cc (minmax_from_comparison): this new function.
12692         * fold-const.h (minmax_from_comparison): New prototype.
12694 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
12696         PR rtl-optimization/109476
12697         * lower-subreg.cc: Include explow.h for force_reg.
12698         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
12699         If decomposing a suitable LSHIFTRT and we're not splitting
12700         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
12701         instead of setting a high part SUBREG to zero, which helps combine.
12702         (decompose_multiword_subregs): Update call to resolve_shift_zext.
12704 2023-04-28  Richard Biener  <rguenther@suse.de>
12706         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
12707         consider scatters.
12708         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
12709         gather-scatter info and cost emulated scatters accordingly.
12710         (get_load_store_type): Support emulated scatters.
12711         (vectorizable_store): Likewise.  Emulate them by extracting
12712         scalar offsets and data, doing scalar stores.
12714 2023-04-28  Richard Biener  <rguenther@suse.de>
12716         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
12717         Tame down element extracts and scalar loads for gather/scatter
12718         similar to elementwise strided accesses.
12720 2023-04-28  Pan Li  <pan2.li@intel.com>
12721             kito-cheng  <kito.cheng@sifive.com>
12723         * config/riscv/vector.md: Add new define split to perform
12724         the simplification.
12726 2023-04-28  Richard Biener  <rguenther@suse.de>
12728         PR ipa/109652
12729         * ipa-param-manipulation.cc
12730         (ipa_param_body_adjustments::modify_expression): Allow
12731         conversion of a register to a non-register type.  Elide
12732         conversions inside BIT_FIELD_REFs.
12734 2023-04-28  Richard Biener  <rguenther@suse.de>
12736         PR tree-optimization/109644
12737         * tree-cfg.cc (verify_types_in_gimple_reference): Check
12738         register constraints on the outermost VIEW_CONVERT_EXPR
12739         only.  Do not allow register or invariant bases on
12740         multi-level or possibly variable index handled components.
12742 2023-04-28  Richard Biener  <rguenther@suse.de>
12744         * gimplify.cc (gimplify_compound_lval): When there's a
12745         non-register type produced by one of the handled component
12746         operations make sure we get a non-register base.
12748 2023-04-28  Richard Biener  <rguenther@suse.de>
12750         PR tree-optimization/108752
12751         * tree-vect-generic.cc (build_replicated_const): Rename
12752         to build_replicated_int_cst and move to tree.{h,cc}.
12753         (do_plus_minus): Adjust.
12754         (do_negate): Likewise.
12755         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
12756         arithmetic vector operations in lowered form.
12757         * tree.h (build_replicated_int_cst): Declare.
12758         * tree.cc (build_replicated_int_cst): Moved from
12759         tree-vect-generic.cc build_replicated_const.
12761 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12763         PR target/99195
12764         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
12765         (aarch64_rbit<mode><vczle><vczbe>): ... This.
12766         (neg<mode>2): Rename to...
12767         (neg<mode>2<vczle><vczbe>): ... This.
12768         (abs<mode>2): Rename to...
12769         (abs<mode>2<vczle><vczbe>): ... This.
12770         (aarch64_abs<mode>): Rename to...
12771         (aarch64_abs<mode><vczle><vczbe>): ... This.
12772         (one_cmpl<mode>2): Rename to...
12773         (one_cmpl<mode>2<vczle><vczbe>): ... This.
12774         (clrsb<mode>2): Rename to...
12775         (clrsb<mode>2<vczle><vczbe>): ... This.
12776         (clz<mode>2): Rename to...
12777         (clz<mode>2<vczle><vczbe>): ... This.
12778         (popcount<mode>2): Rename to...
12779         (popcount<mode>2<vczle><vczbe>): ... This.
12781 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
12783         * gimple-range-op.cc (class cfn_sqrt): New type.
12784         (op_cfn_sqrt): New variable.
12785         (gimple_range_op_handler::maybe_builtin_call): Handle
12786         CASE_CFN_SQRT{,_FN}.
12788 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
12789             Jakub Jelinek  <jakub@redhat.com>
12791         * value-range.h (frange_nextafter): Declare.
12792         * gimple-range-op.cc (class cfn_sincos): New.
12793         (op_cfn_sin, op_cfn_cos): New variables.
12794         (gimple_range_op_handler::maybe_builtin_call): Handle
12795         CASE_CFN_{SIN,COS}{,_FN}.
12797 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
12799         * target.def (libm_function_max_error): New target hook.
12800         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
12801         * doc/tm.texi: Regenerated.
12802         * targhooks.h (default_libm_function_max_error,
12803         glibc_linux_libm_function_max_error): Declare.
12804         * targhooks.cc: Include case-cfn-macros.h.
12805         (default_libm_function_max_error,
12806         glibc_linux_libm_function_max_error): New functions.
12807         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12808         * config/linux-protos.h (linux_libm_function_max_error): Declare.
12809         * config/linux.cc: Include target.h and targhooks.h.
12810         (linux_libm_function_max_error): New function.
12811         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
12812         (arc_libm_function_max_error): New function.
12813         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12814         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
12815         (ix86_libm_function_max_error): New function.
12816         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12817         * config/rs6000/rs6000-protos.h
12818         (rs6000_linux_libm_function_max_error): Declare.
12819         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
12820         and case-cfn-macros.h.
12821         (rs6000_linux_libm_function_max_error): New function.
12822         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12823         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12824         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
12825         (or1k_libm_function_max_error): New function.
12826         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
12828 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
12830         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
12831         Move detach value calls...
12832         (pass_harden_conditional_branches::execute): ... here.
12833         (pass_harden_compares::execute): Detach values before
12834         compares.
12836 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
12838         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
12839         (cml<addsub_as><mode>4): Likewise.
12840         (vec_addsub<mode>3): Likewise.
12841         (cadd<rot><mode>3): Likewise.
12842         (vec_fmaddsub<mode>4): Likewise.
12843         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
12845 2023-04-27  Andrew Pinski  <apinski@marvell.com>
12847         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
12848         up to 2 min/max expressions in the sequence/match code.
12850 2023-04-27  Andrew Pinski  <apinski@marvell.com>
12852         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
12853         COMPARISON.
12854         * tree-eh.cc (operation_could_trap_helper_p): Treate
12855         MIN_EXPR/MAX_EXPR similar as other comparisons.
12857 2023-04-27  Andrew Pinski  <apinski@marvell.com>
12859         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
12860         prototype.
12861         (cond_if_else_store_replacement): Likewise.
12862         (get_non_trapping): Likewise.
12863         (store_elim_worker): Move into ...
12864         (pass_cselim::execute): This.
12866 2023-04-27  Andrew Pinski  <apinski@marvell.com>
12868         * tree-ssa-phiopt.cc (two_value_replacement): Remove
12869         prototype.
12870         (match_simplify_replacement): Likewise.
12871         (factor_out_conditional_conversion): Likewise.
12872         (value_replacement): Likewise.
12873         (minmax_replacement): Likewise.
12874         (spaceship_replacement): Likewise.
12875         (cond_removal_in_builtin_zero_pattern): Likewise.
12876         (hoist_adjacent_loads): Likewise.
12877         (tree_ssa_phiopt_worker): Move into ...
12878         (pass_phiopt::execute): this.
12880 2023-04-27  Andrew Pinski  <apinski@marvell.com>
12882         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
12883         do_store_elim argument and split that part out to ...
12884         (store_elim_worker): This new function.
12885         (pass_cselim::execute): Call store_elim_worker.
12886         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
12888 2023-04-27  Jan Hubicka  <jh@suse.cz>
12890         * cfgloopmanip.h (unloop_loops): Export.
12891         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
12892         that no longer loop.
12893         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
12894         vectors of loops to unloop.
12895         (canonicalize_induction_variables): Free vectors here.
12896         (tree_unroll_loops_completely): Free vectors here.
12898 2023-04-27  Richard Biener  <rguenther@suse.de>
12900         PR tree-optimization/109170
12901         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
12902         Handle __builtin_expect and similar via cfn_pass_through_arg1
12903         and inspecting the calls fnspec.
12904         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
12905         and BUILT_IN_EXPECT_WITH_PROBABILITY.
12907 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
12909         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
12911 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
12913         PR tree-optimization/109639
12914         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
12915         (propagate_vr_across_jump_function): Same.
12916         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
12917         * ipa-prop.h (ipa_range_set_and_normalize): New.
12918         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
12920 2023-04-27  Richard Biener  <rguenther@suse.de>
12922         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
12923         create a CTOR operand in the result when simplifying GIMPLE.
12925 2023-04-27  Richard Biener  <rguenther@suse.de>
12927         * gimplify.cc (gimplify_compound_lval): When the base
12928         gimplified to a register make sure to split up chains
12929         of operations.
12931 2023-04-27  Richard Biener  <rguenther@suse.de>
12933         PR ipa/109607
12934         * ipa-param-manipulation.h
12935         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
12936         argument.
12937         * ipa-param-manipulation.cc
12938         (ipa_param_body_adjustments::modify_expression): Likewise.
12939         When we need a conversion and the replacement is a register
12940         split the conversion out.
12941         (ipa_param_body_adjustments::modify_assignment): Pass
12942         extra_stmts to RHS modify_expression.
12944 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
12946         * doc/extend.texi (Zero Length): Describe example.
12948 2023-04-27  Richard Biener  <rguenther@suse.de>
12950         PR tree-optimization/109594
12951         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
12952         what we rewrite to a register based on the above.
12954 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
12956         * config/riscv/riscv.cc: Fix whitespace.
12957         * config/riscv/sync.md: Fix whitespace.
12959 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
12961         PR tree-optimization/108697
12962         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
12963         not clear the vector on an out of range query.
12964         (ssa_cache::dump): Use dump_range_query instead of get_range.
12965         (ssa_cache::dump_range_query): New.
12966         (ssa_lazy_cache::dump_range_query): New.
12967         (ssa_lazy_cache::set_range): New.
12968         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
12969         (class ssa_lazy_cache): New.
12970         (ssa_lazy_cache::ssa_lazy_cache): New.
12971         (ssa_lazy_cache::~ssa_lazy_cache): New.
12972         (ssa_lazy_cache::get_range): New.
12973         (ssa_lazy_cache::clear_range): New.
12974         (ssa_lazy_cache::clear): New.
12975         (ssa_lazy_cache::dump): New.
12976         * gimple-range-path.cc (path_range_query::path_range_query): Do
12977         not allocate a ssa_cache object nor has_cache bitmap.
12978         (path_range_query::~path_range_query): Do not free objects.
12979         (path_range_query::clear_cache): Remove.
12980         (path_range_query::get_cache): Adjust.
12981         (path_range_query::set_cache): Remove.
12982         (path_range_query::dump): Don't call through a pointer.
12983         (path_range_query::internal_range_of_expr): Set cache directly.
12984         (path_range_query::reset_path): Clear cache directly.
12985         (path_range_query::ssa_range_in_phi): Fold with globals only.
12986         (path_range_query::compute_ranges_in_phis): Simply set range.
12987         (path_range_query::compute_ranges_in_block): Call cache directly.
12988         * gimple-range-path.h (class path_range_query): Replace bitmap
12989         and cache pointer with lazy cache object.
12990         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
12992 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
12994         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
12995         (ssa_cache::~ssa_cache): Rename.
12996         (ssa_cache::has_range): New.
12997         (ssa_cache::get_range): Rename.
12998         (ssa_cache::set_range): Rename.
12999         (ssa_cache::clear_range): Rename.
13000         (ssa_cache::clear): Rename.
13001         (ssa_cache::dump): Rename and use get_range.
13002         (ranger_cache::get_global_range): Use get_range and set_range.
13003         (ranger_cache::range_of_def): Use get_range.
13004         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
13005         (class ranger_cache): Use ssa_cache.
13006         * gimple-range-path.cc (path_range_query::path_range_query): Use
13007         ssa_cache.
13008         (path_range_query::get_cache): Use get_range.
13009         (path_range_query::set_cache): Use set_range.
13010         * gimple-range-path.h (class path_range_query): Use ssa_cache.
13011         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
13012         (assume_query::range_of_expr): Use get_range.
13013         (assume_query::assume_query): Use set_range.
13014         (assume_query::calculate_op): Use get_range and set_range.
13015         * gimple-range.h (class assume_query): Use ssa_cache.
13017 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
13019         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
13020         and local to optionally zero memory.
13021         (br_vector::grow): Only zero memory if flag is set.
13022         (class sbr_lazy_vector): New.
13023         (sbr_lazy_vector::sbr_lazy_vector): New.
13024         (sbr_lazy_vector::set_bb_range): New.
13025         (sbr_lazy_vector::get_bb_range): New.
13026         (sbr_lazy_vector::bb_range_p): New.
13027         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
13028         * gimple-range-gori.cc (gori_map::calculate_gori): Use
13029         param_vrp_switch_limit.
13030         (gori_compute::gori_compute): Use param_vrp_switch_limit.
13031         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
13032         (vrp_switch_limit): Rename from evrp_switch_limit.
13033         (vrp_vector_threshold): New.
13035 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
13037         * value-relation.cc (dom_oracle::query_relation): Check early for lack
13038         of any relation.
13039         * value-relation.h (equiv_oracle::has_equiv_p): New.
13041 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
13043         PR tree-optimization/109417
13044         * gimple-range-gori.cc (range_def_chain::register_dependency):
13045         Save the ssa version number, not the pointer.
13046         (gori_compute::may_recompute_p): No need to check if a dependency
13047         is in the free list.
13048         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
13049         fields to be unsigned int instead of trees.
13050         (ange_def_chain::depend1): Adjust.
13051         (ange_def_chain::depend2): Adjust.
13052         * gimple-range.h: Include "ssa.h" to inline ssa_name().
13054 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
13056         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
13057         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
13058         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
13060 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
13062         PR target/104338
13063         * config/riscv/riscv-protos.h: Add helper function stubs.
13064         * config/riscv/riscv.cc: Add helper functions for subword masking.
13065         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
13066         -mno-inline-atomics.
13067         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
13068         fetch_and_nand, CAS, and exchange ops.
13069         * doc/invoke.texi: Add blurb regarding new command-line flags
13070         -minline-atomics and -mno-inline-atomics.
13072 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13074         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
13075         Reimplement using standard RTL codes instead of unspec.
13076         (aarch64_rshrn2<mode>_insn_be): Likewise.
13077         (aarch64_rshrn2<mode>): Adjust for the above.
13078         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
13080 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13082         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
13083         with standard RTL codes instead of an UNSPEC.
13084         (aarch64_rshrn<mode>_insn_be): Likewise.
13085         (aarch64_rshrn<mode>): Adjust for the above.
13086         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
13088 2023-04-26  Pan Li  <pan2.li@intel.com>
13089             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13091         * config/riscv/riscv.cc (riscv_classify_address): Allow
13092         const0_rtx for the RVV load/store.
13094 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13096         * range-op.cc (range_op_cast_tests): Remove legacy support.
13097         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
13098         * value-range.cc (irange::operator=): Same.
13099         (get_legacy_range): Same.
13100         (irange::copy_legacy_to_multi_range): Delete.
13101         (irange::copy_to_legacy): Delete.
13102         (irange::irange_set_anti_range): Delete.
13103         (irange::set): Remove legacy support.
13104         (irange::verify_range): Same.
13105         (irange::legacy_lower_bound): Delete.
13106         (irange::legacy_upper_bound): Delete.
13107         (irange::legacy_equal_p): Delete.
13108         (irange::operator==): Remove legacy support.
13109         (irange::singleton_p): Same.
13110         (irange::value_inside_range): Same.
13111         (irange::contains_p): Same.
13112         (intersect_ranges): Delete.
13113         (irange::legacy_intersect): Delete.
13114         (union_ranges): Delete.
13115         (irange::legacy_union): Delete.
13116         (irange::legacy_verbose_union_): Delete.
13117         (irange::legacy_verbose_intersect): Delete.
13118         (irange::irange_union): Remove legacy support.
13119         (irange::irange_intersect): Same.
13120         (irange::intersect): Same.
13121         (irange::invert): Same.
13122         (ranges_from_anti_range): Delete.
13123         (gt_pch_nx): Adjust for legacy removal.
13124         (gt_ggc_mx): Same.
13125         (range_tests_legacy): Delete.
13126         (range_tests_misc): Adjust for legacy removal.
13127         (range_tests): Same.
13128         * value-range.h (class irange): Same.
13129         (irange::legacy_mode_p): Delete.
13130         (ranges_from_anti_range): Delete.
13131         (irange::nonzero_p): Adjust for legacy removal.
13132         (irange::lower_bound): Same.
13133         (irange::upper_bound): Same.
13134         (irange::union_): Same.
13135         (irange::intersect): Same.
13136         (irange::set_nonzero): Same.
13137         (irange::set_zero): Same.
13138         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
13140 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13142         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
13143         of range_has_numeric_bounds_p with irange API.
13144         (range_has_numeric_bounds_p): Delete.
13145         * value-range.h (range_has_numeric_bounds_p): Delete.
13147 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13149         * tree-data-ref.cc (compute_distributive_range): Replace uses of
13150         range_int_cst_p with irange API.
13151         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
13152         * tree-vrp.h (range_int_cst_p): Delete.
13153         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
13154         range_int_cst_p with irange API.
13155         (vr_set_zero_nonzero_bits): Same.
13156         (range_fits_type_p): Same.
13157         (simplify_using_ranges::simplify_casted_cond): Same.
13158         * tree-vrp.cc (range_int_cst_p): Remove.
13160 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13162         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
13164 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13166         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
13167         API uses to new API.
13168         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
13169         * internal-fn.cc (get_min_precision): Same.
13170         * match.pd: Same.
13171         * tree-affine.cc (expr_to_aff_combination): Same.
13172         * tree-data-ref.cc (dr_step_indicator): Same.
13173         * tree-dfa.cc (get_ref_base_and_extent): Same.
13174         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
13175         * tree-ssa-phiopt.cc (two_value_replacement): Same.
13176         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
13177         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
13178         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
13179         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
13180         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
13181         * tree.cc (get_range_pos_neg): Same.
13183 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13185         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
13186         vrange::dump instead of ad-hoc dumper.
13187         * tree-ssa-strlen.cc (dump_strlen_info): Same.
13188         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
13189         dump_generic_node.
13191 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13193         * range-op.cc (operator_cast::op1_range): Use
13194         create_possibly_reversed_range.
13195         (operator_bitwise_and::simple_op1_range_solver): Same.
13196         * value-range.cc (swap_out_of_order_endpoints): Delete.
13197         (irange::set): Remove call to swap_out_of_order_endpoints.
13199 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13201         * builtins.cc (determine_block_size): Convert use of legacy API to
13202         get_legacy_range.
13203         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
13204         (array_bounds_checker::check_array_ref): Same.
13205         * gimple-ssa-warn-restrict.cc
13206         (builtin_memref::extend_offset_range): Same.
13207         * ipa-cp.cc (ipcp_store_vr_results): Same.
13208         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
13209         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
13210         (ipa_write_jump_function): Same.
13211         * pointer-query.cc (get_size_range): Same.
13212         * tree-data-ref.cc (split_constant_offset): Same.
13213         * tree-ssa-strlen.cc (get_range): Same.
13214         (maybe_diag_stxncpy_trunc): Same.
13215         (strlen_pass::get_len_or_size): Same.
13216         (strlen_pass::count_nonzero_bytes_addr): Same.
13217         * tree-vect-patterns.cc (vect_get_range_info): Same.
13218         * value-range.cc (irange::maybe_anti_range): Remove.
13219         (get_legacy_range): New.
13220         (irange::copy_to_legacy): Use get_legacy_range.
13221         (ranges_from_anti_range): Same.
13222         * value-range.h (class irange): Remove maybe_anti_range.
13223         (get_legacy_range): New.
13224         * vr-values.cc (check_for_binary_op_overflow): Convert use of
13225         legacy API to get_legacy_range.
13226         (compare_ranges): Same.
13227         (compare_range_with_value): Same.
13228         (bounds_of_var_in_loop): Same.
13229         (find_case_label_ranges): Same.
13230         (simplify_using_ranges::simplify_switch_using_ranges): Same.
13232 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13234         * value-range-pretty-print.cc (vrange_printer::visit): Remove
13235         constant_p use.
13236         * value-range.cc (irange::constant_p): Remove.
13237         (irange::get_nonzero_bits_from_range): Remove constant_p use.
13238         * value-range.h (class irange): Remove constant_p.
13239         (irange::num_pairs): Remove constant_p use.
13241 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13243         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
13244         symbolics support.
13245         (irange::set): Same.
13246         (irange::legacy_lower_bound): Same.
13247         (irange::legacy_upper_bound): Same.
13248         (irange::contains_p): Same.
13249         (range_tests_legacy): Same.
13250         (irange::normalize_addresses): Remove.
13251         (irange::normalize_symbolics): Remove.
13252         (irange::symbolic_p): Remove.
13253         * value-range.h (class irange): Remove symbolic_p,
13254         normalize_symbolics, and normalize_addresses.
13255         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
13256         Remove symbolics support.
13258 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13260         * value-range.cc (irange::may_contain_p): Remove.
13261         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
13262         usage with contains_p.
13263         * vr-values.cc (compare_range_with_value): Same.
13265 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13267         * tree-vrp.cc (supported_types_p): Remove.
13268         (defined_ranges_p): Remove.
13269         (range_fold_binary_expr): Remove.
13270         (range_fold_unary_expr): Remove.
13271         * tree-vrp.h (range_fold_unary_expr): Remove.
13272         (range_fold_binary_expr): Remove.
13274 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13276         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
13277         (ipa_value_range_from_jfunc): Same.
13278         (propagate_vr_across_jump_function): Same.
13279         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
13280         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
13281         * vr-values.cc (bounds_of_var_in_loop): Same.
13283 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13285         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
13286         Add irange argument.
13287         (check_out_of_bounds_and_warn): Remove check for vr.
13288         (array_bounds_checker::check_array_ref): Remove pointer qualifier
13289         for vr and adjust accordingly.
13290         * gimple-array-bounds.h (get_value_range): Add irange argument.
13291         * value-query.cc (class equiv_allocator): Delete.
13292         (range_query::get_value_range): Delete.
13293         (range_query::range_query): Remove allocator access.
13294         (range_query::~range_query): Same.
13295         * value-query.h (get_value_range): Delete.
13296         * vr-values.cc
13297         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
13298         call to get_value_range.
13299         (check_for_binary_op_overflow): Same.
13300         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
13301         (simplify_using_ranges::simplify_abs_using_ranges): Same.
13302         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
13303         (simplify_using_ranges::simplify_casted_cond): Same.
13304         (simplify_using_ranges::simplify_switch_using_ranges): Same.
13305         (simplify_using_ranges::two_valued_val_range_p): Same.
13307 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13309         * vr-values.cc
13310         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
13311         Rename to...
13312         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
13313         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
13314         (simplify_using_ranges::legacy_fold_cond): ...this.
13315         (simplify_using_ranges::fold_cond): Rename
13316         vrp_evaluate_conditional_warnv_with_ops to
13317         legacy_fold_cond_overflow.
13318         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
13319         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
13320         legacy_fold_cond_overflow respectively.
13322 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
13324         * vr-values.cc (get_vr_for_comparison): Remove.
13325         (compare_name_with_value): Same.
13326         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
13327         compare_name_with_value.
13328         * vr-values.h: Remove compare_name_with_value.
13329         Remove get_vr_for_comparison.
13331 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
13333         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
13334         (bswapsi2): New define_insn.
13335         (swaphi): New define_insn to exchange two registers (swpw).
13336         (define_peephole2): Recognize exchange of registers as swaphi.
13338 2023-04-26  Richard Biener  <rguenther@suse.de>
13340         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
13341         Avoid last_stmt.
13342         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
13343         * predict.cc (apply_return_prediction): Likewise.
13344         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
13345         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
13346         (make_edges_bb): Likewise.
13347         (make_cond_expr_edges): Likewise.
13348         (end_recording_case_labels): Likewise.
13349         (make_gimple_asm_edges): Likewise.
13350         (cleanup_dead_labels): Likewise.
13351         (group_case_labels): Likewise.
13352         (gimple_can_merge_blocks_p): Likewise.
13353         (gimple_merge_blocks): Likewise.
13354         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
13355         (gimple_duplicate_sese_tail): Avoid last_stmt.
13356         (find_loop_dist_alias): Likewise.
13357         (gimple_block_ends_with_condjump_p): Likewise.
13358         (gimple_purge_dead_eh_edges): Likewise.
13359         (gimple_purge_dead_abnormal_call_edges): Likewise.
13360         (pass_warn_function_return::execute): Likewise.
13361         (execute_fixup_cfg): Likewise.
13362         * tree-eh.cc (redirect_eh_edge_1): Likewise.
13363         (pass_lower_resx::execute): Likewise.
13364         (pass_lower_eh_dispatch::execute): Likewise.
13365         (cleanup_empty_eh): Likewise.
13366         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
13367         (predicate_bbs): Likewise.
13368         (ifcvt_split_critical_edges): Likewise.
13369         * tree-loop-distribution.cc (create_edge_for_control_dependence):
13370         Likewise.
13371         (loop_distribution::transform_reduction_loop): Likewise.
13372         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
13373         (try_transform_to_exit_first_loop_alt): Likewise.
13374         (transform_to_exit_first_loop): Likewise.
13375         (create_parallel_loop): Likewise.
13376         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
13377         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
13378         (eliminate_unnecessary_stmts): Likewise.
13379         * tree-ssa-dom.cc
13380         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
13381         Likewise.
13382         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
13383         (pass_tree_ifcombine::execute): Likewise.
13384         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
13385         (should_duplicate_loop_header_p): Likewise.
13386         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
13387         (tree_estimate_loop_size): Likewise.
13388         (try_unroll_loop_completely): Likewise.
13389         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
13390         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
13391         (canonicalize_loop_ivs): Likewise.
13392         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
13393         (bound_difference): Likewise.
13394         (number_of_iterations_popcount): Likewise.
13395         (number_of_iterations_cltz): Likewise.
13396         (number_of_iterations_cltz_complement): Likewise.
13397         (simplify_using_initial_conditions): Likewise.
13398         (number_of_iterations_exit_assumptions): Likewise.
13399         (loop_niter_by_eval): Likewise.
13400         (estimate_numbers_of_iterations): Likewise.
13402 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13404         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
13406 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
13408         PR target/108758
13409         * config/rs6000/rs6000-builtins.def
13410         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
13411         __builtin_vsx_scalar_cmp_exp_qp_lt,
13412         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
13413         to power9-vector.
13415 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
13417         PR target/109069
13418         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
13419         easy_vector_constant with const_vector_each_byte_same, add
13420         handlings in preparation for !easy_vector_constant, and update
13421         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
13422         * config/rs6000/predicates.md (const_vector_each_byte_same): New
13423         predicate.
13425 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13427         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
13428         (*pred_ltge<mode>_merge_tie_mask): Ditto.
13429         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
13430         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
13431         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
13432         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
13433         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
13435 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13437         * config/riscv/vector.md: Fix redundant vmv1r.v.
13439 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13441         * config/riscv/vector.md: Fix RA constraint.
13443 2023-04-26  Pan Li  <pan2.li@intel.com>
13445         PR target/109272
13446         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
13447         check for vn_reference equal.
13449 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13451         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
13452         auto-vectorization preference.
13453         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
13454         auto-vectorization.
13455         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
13457 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
13459         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
13460         and bclridisi_nottwobits patterns.
13461         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
13462         predicate to avoid splitting arith constants.
13463         (const_nottwobits_not_arith_operand): New predicate.
13465 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
13467         * recog.cc (peep2_attempt, peep2_update_life): Correct
13468         head-comment description of parameter match_len.
13470 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
13472         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
13473         riscv_split_symbol() drop in_splitter arg.
13474         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
13475         riscv_split_symbol() drop in_splitter arg.
13476         riscv_force_temporary() drop in_splitter arg.
13477         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
13478         riscv_split_symbol() drop in_splitter arg.
13480 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
13482         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
13483         superfluous debug temporaries for single GIMPLE assignments.
13485 2023-04-25  Richard Biener  <rguenther@suse.de>
13487         PR tree-optimization/109609
13488         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
13489         Clarify semantics.
13490         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
13491         the size given by arg_max_access_size_given_by_arg_p as
13492         maximum, not exact, size.
13494 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13496         PR target/99195
13497         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
13498         (orn<mode>3<vczle><vczbe>): ... This.
13499         (bic<mode>3): Rename to...
13500         (bic<mode>3<vczle><vczbe>): ... This.
13501         (<su><maxmin><mode>3): Rename to...
13502         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
13504 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13506         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
13507         * config/aarch64/iterators.md (VQDIV): New mode iterator.
13508         (vnx2di): New mode attribute.
13510 2023-04-25  Richard Biener  <rguenther@suse.de>
13512         PR rtl-optimization/109585
13513         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
13515 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
13517         PR target/109566
13518         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
13519         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
13520         is larger than signed int maximum.
13522 2023-04-25  Martin Liska  <mliska@suse.cz>
13524         * doc/gcov.texi: Document the new "calls" field and document
13525         the API bump. Mention also "block_ids" for lines.
13526         * gcov.cc (output_intermediate_json_line): Output info about
13527         calls and extend branches as well.
13528         (generate_results): Bump version to 2.
13529         (output_line_details): Use block ID instead of a non-sensual
13530         index.
13532 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
13534         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
13535         length attribute for the first (memory operand) alternative.
13537 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
13539         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
13540         * config/aarch64/constraints.md: Make "Umn" relaxed memory
13541         constraint.
13542         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
13544 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
13546         * value-range.cc (frange::set): Adjust constructor.
13547         * value-range.h (nan_state::nan_state): Replace default
13548         constructor with one taking an argument.
13550 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
13552         * ipa-cp.cc (ipa_range_contains_p): New.
13553         (decide_whether_version_node): Use it.
13555 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13557         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
13558         simplify two successive VEC_PERM_EXPRs with same VLA mask,
13559         where mask chooses elements in reverse order.
13561 2023-04-24  Andrew Pinski  <apinski@marvell.com>
13563         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
13564         and support diamond shaped basic block form.
13565         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
13567 2023-04-24  Andrew Pinski  <apinski@marvell.com>
13569         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
13570         Instead of calling last_and_only_stmt, look for the last statement
13571         manually.
13573 2023-04-24  Andrew Pinski  <apinski@marvell.com>
13575         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
13576         New function.
13577         (match_simplify_replacement): Call
13578         empty_bb_or_one_feeding_into_p instead of doing it inline.
13580 2023-04-24  Andrew Pinski  <apinski@marvell.com>
13582         PR tree-optimization/68894
13583         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
13584         continue for the do_hoist_loads diamond case.
13586 2023-04-24  Andrew Pinski  <apinski@marvell.com>
13588         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
13589         code for better code readability.
13591 2023-04-24  Andrew Pinski  <apinski@marvell.com>
13593         PR tree-optimization/109604
13594         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
13595         diamond form check from ...
13596         (minmax_replacement): Here.
13598 2023-04-24  Patrick Palka  <ppalka@redhat.com>
13600         * tree.cc (strip_array_types): Don't define here.
13601         (is_typedef_decl): Don't define here.
13602         (typedef_variant_p): Don't define here.
13603         * tree.h (strip_array_types): Define here.
13604         (is_typedef_decl): Define here.
13605         (typedef_variant_p): Define here.
13607 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
13609         * doc/generic.texi (OpenMP): Add != to allowed
13610         conditions and state that vars can be unsigned.
13611         * tree.def (OMP_FOR): Likewise.
13613 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13615         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
13617 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13619         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
13620         Remove explicit Solaris 11 references.
13621         Markup fixes.
13622         (Options specification, --with-gnu-as): as and gas always differ
13623         on Solaris.
13624         Remove /usr/ccs/bin reference.
13625         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
13626         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
13627         (*-*-solaris2*): ... here.
13628         Update bundled GCC versions.
13629         Don't refer to pre-built binaries.
13630         Remove /bin/sh warning.
13631         Update assembler, linker recommendations.
13632         Document GNAT bootstrap compiler.
13633         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
13634         (sparc64-*-solaris2*): Move content...
13635         (sparcv9-*-solaris2*): ...here.
13636         Add GDC for 64-bit bootstrap compilers.
13638 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13640         PR target/109406
13641         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
13642         case.
13643         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
13644         pattern.
13646 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13648         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
13649         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
13650         (aarch64_<su>abal2<mode>): New define_expand.
13651         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
13652         (aarch64_rtx_costs): Handle ABD rtxes.
13653         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
13654         * config/aarch64/iterators.md (ABAL2): Delete.
13655         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
13657 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13659         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
13660         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
13661         (<sur>sadv16qi): Rename to...
13662         (<su>sadv16qi): ... This.  Adjust for the above.
13663         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
13664         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
13665         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
13666         * config/aarch64/iterators.md (ABAL): Delete.
13667         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
13669 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13671         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
13672         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
13673         (aarch64_<su>abdl2<mode>): New define_expand.
13674         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
13675         * config/aarch64/iterators.md (ABDL2): Delete.
13676         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
13678 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13680         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
13681         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
13682         unspec.
13683         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
13684         * config/aarch64/iterators.md (ABDL): Delete.
13685         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
13687 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13689         * config/aarch64/aarch64-simd.md
13690         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
13692 2023-04-24  Richard Biener  <rguenther@suse.de>
13694         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
13695         last_stmt.
13696         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
13697         Likewise.
13698         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
13699         (set_switch_stmt_execution_predicate): Likewise.
13700         (phi_result_unknown_predicate): Likewise.
13701         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
13702         (ipa_analyze_indirect_call_uses): Likewise.
13703         * predict.cc (predict_iv_comparison): Likewise.
13704         (predict_extra_loop_exits): Likewise.
13705         (predict_loops): Likewise.
13706         (tree_predict_by_opcode): Likewise.
13707         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
13708         Likewise.
13709         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
13710         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
13711         (replace_phi_edge_with_variable): Likewise.
13712         (two_value_replacement): Likewise.
13713         (value_replacement): Likewise.
13714         (minmax_replacement): Likewise.
13715         (spaceship_replacement): Likewise.
13716         (cond_removal_in_builtin_zero_pattern): Likewise.
13717         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
13718         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
13719         (vn_phi_lookup): Likewise.
13720         (vn_phi_insert): Likewise.
13721         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
13722         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
13723         Likewise.
13724         (back_threader_profitability::possibly_profitable_path_p):
13725         Likewise.
13726         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
13727         Likewise.
13728         * tree-switch-conversion.cc (pass_convert_switch::execute):
13729         Likewise.
13730         (pass_lower_switch<O0>::execute): Likewise.
13731         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
13732         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
13733         * tree-vect-slp.cc (vect_slp_function): Likewise.
13734         * tree-vect-stmts.cc (cfun_returns): Likewise.
13735         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
13736         (vect_loop_dist_alias_call): Likewise.
13738 2023-04-24  Richard Biener  <rguenther@suse.de>
13740         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
13742 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13744         * config/riscv/riscv-vsetvl.cc
13745         (vector_infos_manager::all_avail_in_compatible_p): New function.
13746         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
13747         * config/riscv/riscv-vsetvl.h: New function.
13749 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13751         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
13752         comment for cleanup_insns.
13754 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13756         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
13757         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
13758         with the fault first load property.
13760 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13762         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
13763         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
13765 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13767         PR target/99195
13768         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
13769         (aarch64_addp<mode><vczle><vczbe>): ... This.
13771 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
13773         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
13774         provide reasonable values for common arithmetic operations and
13775         immediate operands (in several machine modes).
13777 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
13779         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
13780         format specifier to output high_part register name of SImode reg.
13781         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
13782         (zero_extendqihi2): Fix lengths, consistent formatting and add
13783         "and Rx,#255" alternative, for documentation purposes.
13784         (zero_extendhisi2): New define_insn.
13786 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
13788         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
13789         SImode shifts by two by performing a single bit SImode shift twice.
13791 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
13793         PR tree-optimization/109593
13794         * value-range.cc (frange::operator==): Handle NANs.
13796 2023-04-23  liuhongt  <hongtao.liu@intel.com>
13798         PR rtl-optimization/108707
13799         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
13800         GENERAL_REGS when preferred reg_class is not known.
13802 2023-04-22  Andrew Pinski  <apinski@marvell.com>
13804         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
13805         Change the code around slightly to move diamond
13806         handling for do_store_elim/do_hoist_loads out of
13807         the big if/else.
13809 2023-04-22  Andrew Pinski  <apinski@marvell.com>
13811         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
13812         Remove check on empty_block_p.
13814 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
13816         PR bootstrap/109589
13817         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
13818         * realmpfr.h (class auto_mpfr): Likewise.
13820 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
13822         PR tree-optimization/109583
13823         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
13824         if vec_mode is not VECTOR_MODE_P.
13826 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
13827             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
13829         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
13830         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
13831         loop profile and bounds after header duplication.
13832         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
13833         Break out from try_peel_loop; fix handling of 0 iterations.
13834         (try_peel_loop): Use adjust_loop_info_after_peeling.
13836 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
13838         PR tree-optimization/109546
13839         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
13840         not fold conditions with ADDR_EXPR early.
13842 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13844         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
13845         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
13846         for umax.
13847         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
13848         (*aarch64_<optab><mode>3_zero): Define.
13849         (*aarch64_<optab><mode>3_cssc): Likewise.
13850         * config/aarch64/iterators.md (maxminand): New code attribute.
13852 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13854         PR target/108779
13855         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
13856         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
13857         Define prototype.
13858         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
13859         (aarch64_override_options_internal): Handle the above.
13860         (aarch64_output_load_tp): New function.
13861         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
13862         aarch64_output_load_tp.
13863         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
13864         (mtp=): New option.
13865         * doc/invoke.texi (AArch64 Options): Document -mtp=.
13867 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13869         PR target/99195
13870         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
13871         (add_vec_concat_subst_be): Likewise.
13872         (vczle): Likewise.
13873         (vczbe): Likewise.
13874         (add<mode>3): Rename to...
13875         (add<mode>3<vczle><vczbe>): ... This.
13876         (sub<mode>3): Rename to...
13877         (sub<mode>3<vczle><vczbe>): ... This.
13878         (mul<mode>3): Rename to...
13879         (mul<mode>3<vczle><vczbe>): ... This.
13880         (and<mode>3): Rename to...
13881         (and<mode>3<vczle><vczbe>): ... This.
13882         (ior<mode>3): Rename to...
13883         (ior<mode>3<vczle><vczbe>): ... This.
13884         (xor<mode>3): Rename to...
13885         (xor<mode>3<vczle><vczbe>): ... This.
13886         * config/aarch64/iterators.md (VDZ): Define.
13888 2023-04-21  Patrick Palka  <ppalka@redhat.com>
13890         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
13891         and type_p.
13893 2023-04-21  Jan Hubicka  <jh@suse.cz>
13895         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
13896         commit.
13898 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
13900         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
13901         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
13903 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13905         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
13906         force_reg instead of copy_to_mode_reg.
13907         (aarch64_expand_vector_init): Likewise.
13909 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
13911         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
13912         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
13913         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
13914         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
13915         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
13916         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
13917         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
13918         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
13919         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
13920         * config/i386/predicates.md (index_register_operand):
13921         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
13922         * config/i386/i386.cc (ix86_legitimate_address_p): Use
13923         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
13924         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
13926 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
13927             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
13929         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
13930         latch.
13932 2023-04-21  Richard Biener  <rguenther@suse.de>
13934         * is-a.h (safe_is_a): New.
13936 2023-04-21  Richard Biener  <rguenther@suse.de>
13938         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
13939         (gphi_iterator::operator*): Likewise.
13941 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
13942             Michal Jires  <michal@jires.eu>
13944         * ipa-inline.cc (class inline_badness): New class.
13945         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
13946         of sreal.
13947         (update_edge_key): Update.
13948         (lookup_recursive_calls): Likewise.
13949         (recursive_inlining): Likewise.
13950         (add_new_edges_to_heap): Likewise.
13951         (inline_small_functions): Likewise.
13953 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
13955         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
13957 2023-04-21  Richard Biener  <rguenther@suse.de>
13959         PR tree-optimization/109573
13960         * tree-vect-loop.cc (vectorizable_live_operation): Allow
13961         unhandled SSA copy as well.  Demote assert to checking only.
13963 2023-04-21  Richard Biener  <rguenther@suse.de>
13965         * df-core.cc (df_analyze): Compute RPO on the reverse graph
13966         for DF_BACKWARD problems.
13967         (loop_post_order_compute): Rename to ...
13968         (loop_rev_post_order_compute): ... this, compute a RPO.
13969         (loop_inverted_post_order_compute): Rename to ...
13970         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
13971         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
13972         problems, RPO on the inverted graph for DF_BACKWARD.
13974 2023-04-21  Richard Biener  <rguenther@suse.de>
13976         * cfganal.h (inverted_rev_post_order_compute): Rename
13977         from ...
13978         (inverted_post_order_compute): ... this.  Add struct function
13979         argument, change allocation to a C array.
13980         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
13981         * lcm.cc (compute_antinout_edge): Adjust.
13982         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
13983         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
13984         * tree-ssa-pre.cc (compute_antic): Likewise.
13986 2023-04-21  Richard Biener  <rguenther@suse.de>
13988         * df.h (df_d::postorder_inverted): Change back to int *,
13989         clarify comments.
13990         * df-core.cc (rest_of_handle_df_finish): Adjust.
13991         (df_analyze_1): Likewise.
13992         (df_analyze): For DF_FORWARD problems use RPO on the forward
13993         graph.  Adjust.
13994         (loop_inverted_post_order_compute): Adjust API.
13995         (df_analyze_loop): Adjust.
13996         (df_get_n_blocks): Likewise.
13997         (df_get_postorder): Likewise.
13999 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14001         PR target/108270
14002         * config/riscv/riscv-vsetvl.cc
14003         (vector_infos_manager::all_empty_predecessor_p): New function.
14004         (pass_vsetvl::backward_demand_fusion): Ditto.
14005         * config/riscv/riscv-vsetvl.h: Ditto.
14007 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
14009         PR target/109582
14010         * config/riscv/generic.md: Change standard names to insn names.
14012 2023-04-21  Richard Biener  <rguenther@suse.de>
14014         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
14015         (compute_laterin): Use RPO.
14016         (compute_available): Likewise.
14018 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
14020         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
14022 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14024         PR target/109547
14025         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
14026         (vector_insn_info::skip_avl_compatible_p): Ditto.
14027         (vector_insn_info::merge): Remove default value.
14028         (pass_vsetvl::compute_local_backward_infos): Ditto.
14029         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
14030         * config/riscv/riscv-vsetvl.h: Ditto.
14032 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
14034         * doc/extend.texi (Common Function Attributes): Remove duplicate
14035         word.
14037 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
14039         PR tree-optimization/109564
14040         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
14041         UNDEFINED range names when deciding if all PHI arguments are the same,
14043 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
14045         PR tree-optimization/109011
14046         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
14047         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
14048         .CTZ (X) = PREC - .POPCOUNT (X | -X).
14050 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
14052         * lra-constraints.cc (match_reload): Exclude some hard regs for
14053         multi-reg inout reload pseudos used in asm in different mode.
14055 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
14057         * config/arm/arm.cc (thumb1_legitimate_address_p):
14058         Use VIRTUAL_REGISTER_P predicate.
14059         (arm_eliminable_register): Ditto.
14060         * config/avr/avr.md (push<mode>_1): Ditto.
14061         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
14062         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
14063         * config/i386/predicates.md (register_no_elim_operand): Ditto.
14064         * config/iq2000/predicates.md (call_insn_operand): Ditto.
14065         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
14067 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
14069         PR target/78952
14070         * config/i386/predicates.md (extract_operator): New predicate.
14071         * config/i386/i386.md (any_extract): Remove code iterator.
14072         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
14073         (*cmpqi_ext<mode>_1): Ditto.
14074         (*cmpqi_ext<mode>_2): Ditto.
14075         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
14076         (*cmpqi_ext<mode>_3): Ditto.
14077         (*cmpqi_ext<mode>_4): Ditto.
14078         (*extzvqi_mem_rex64): Ditto.
14079         (*extzvqi): Ditto.
14080         (*insvqi_2): Ditto.
14081         (*extendqi<SWI24:mode>_ext_1): Ditto.
14082         (*addqi_ext<mode>_0): Ditto.
14083         (*addqi_ext<mode>_1): Ditto.
14084         (*addqi_ext<mode>_2): Ditto.
14085         (*subqi_ext<mode>_0): Ditto.
14086         (*subqi_ext<mode>_2): Ditto.
14087         (*testqi_ext<mode>_1): Ditto.
14088         (*testqi_ext<mode>_2): Ditto.
14089         (*andqi_ext<mode>_0): Ditto.
14090         (*andqi_ext<mode>_1): Ditto.
14091         (*andqi_ext<mode>_1_cc): Ditto.
14092         (*andqi_ext<mode>_2): Ditto.
14093         (*<any_or:code>qi_ext<mode>_0): Ditto.
14094         (*<any_or:code>qi_ext<mode>_1): Ditto.
14095         (*<any_or:code>qi_ext<mode>_2): Ditto.
14096         (*xorqi_ext<mode>_1_cc): Ditto.
14097         (*negqi_ext<mode>_2): Ditto.
14098         (*ashlqi_ext<mode>_2): Ditto.
14099         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
14101 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
14103         PR target/108248
14104         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
14105         <bitmanip_insn> as the type to allow for fine grained control of
14106         scheduling these insns.
14107         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
14108         min, max.
14109         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
14110         pcnt, signed and unsigned min/max.
14112 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14113             kito-cheng  <kito.cheng@sifive.com>
14115         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
14117 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
14118             kito-cheng  <kito.cheng@sifive.com>
14120         PR target/109535
14121         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
14122         (pass_vsetvl::cleanup_insns): Fix bug.
14124 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
14126         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
14127         (ldexp<mode>3): Delete.
14128         (ldexp<mode>3<exec>): Change "B" to "A".
14130 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
14131             Jonathan Wakely  <jwakely@redhat.com>
14133         * tree.h (built_in_function_equal_p): New helper function.
14134         (fndecl_built_in_p): Turn into variadic template to support
14135         1 or more built_in_function arguments.
14136         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
14137         * gimplify.cc (goa_stabilize_expr): Likewise.
14138         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
14139         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
14140         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
14141         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
14142         cgraph_update_edges_for_call_stmt_node,
14143         cgraph_edge::verify_corresponds_to_fndecl,
14144         cgraph_node::verify_node): Likewise.
14145         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
14146         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
14147         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
14149 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
14151         PR tree-optimization/109011
14152         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
14153         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
14154         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
14155         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
14156         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
14157         case.
14158         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
14160 2023-04-20  Richard Biener  <rguenther@suse.de>
14162         * df-core.cc (rest_of_handle_df_initialize): Remove
14163         computation of df->postorder, df->postorder_inverted and
14164         df->n_blocks.
14166 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
14168         * common/config/i386/i386-common.cc
14169         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
14170         (ix86_handle_option): Set AVX flag for VAES.
14171         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
14172         Add OPTION_MASK_ISA2_VAES_UNSET.
14173         (def_builtin): Share builtin between AES and VAES.
14174         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
14175         Ditto.
14176         * config/i386/i386.md (aes): New isa attribute.
14177         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
14178         (aesenclast): Ditto.
14179         (aesdec): Ditto.
14180         (aesdeclast): Ditto.
14181         * config/i386/vaesintrin.h: Remove redundant avx target push.
14182         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
14183         (_mm_aesdeclast_si128): Ditto.
14184         (_mm_aesenc_si128): Ditto.
14185         (_mm_aesenclast_si128): Ditto.
14187 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
14189         * config/i386/avx2intrin.h
14190         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
14191         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
14192         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
14193         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
14194         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
14195         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
14196         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
14197         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
14198         (_mm_reduce_add_epi16): New instrinsics.
14199         (_mm_reduce_mul_epi16): Ditto.
14200         (_mm_reduce_and_epi16): Ditto.
14201         (_mm_reduce_or_epi16): Ditto.
14202         (_mm_reduce_max_epi16): Ditto.
14203         (_mm_reduce_max_epu16): Ditto.
14204         (_mm_reduce_min_epi16): Ditto.
14205         (_mm_reduce_min_epu16): Ditto.
14206         (_mm256_reduce_add_epi16): Ditto.
14207         (_mm256_reduce_mul_epi16): Ditto.
14208         (_mm256_reduce_and_epi16): Ditto.
14209         (_mm256_reduce_or_epi16): Ditto.
14210         (_mm256_reduce_max_epi16): Ditto.
14211         (_mm256_reduce_max_epu16): Ditto.
14212         (_mm256_reduce_min_epi16): Ditto.
14213         (_mm256_reduce_min_epu16): Ditto.
14214         (_mm_reduce_add_epi8): Ditto.
14215         (_mm_reduce_mul_epi8): Ditto.
14216         (_mm_reduce_and_epi8): Ditto.
14217         (_mm_reduce_or_epi8): Ditto.
14218         (_mm_reduce_max_epi8): Ditto.
14219         (_mm_reduce_max_epu8): Ditto.
14220         (_mm_reduce_min_epi8): Ditto.
14221         (_mm_reduce_min_epu8): Ditto.
14222         (_mm256_reduce_add_epi8): Ditto.
14223         (_mm256_reduce_mul_epi8): Ditto.
14224         (_mm256_reduce_and_epi8): Ditto.
14225         (_mm256_reduce_or_epi8): Ditto.
14226         (_mm256_reduce_max_epi8): Ditto.
14227         (_mm256_reduce_max_epu8): Ditto.
14228         (_mm256_reduce_min_epi8): Ditto.
14229         (_mm256_reduce_min_epu8): Ditto.
14230         * config/i386/avx512vlbwintrin.h:
14231         (_mm_mask_reduce_add_epi16): Ditto.
14232         (_mm_mask_reduce_mul_epi16): Ditto.
14233         (_mm_mask_reduce_and_epi16): Ditto.
14234         (_mm_mask_reduce_or_epi16): Ditto.
14235         (_mm_mask_reduce_max_epi16): Ditto.
14236         (_mm_mask_reduce_max_epu16): Ditto.
14237         (_mm_mask_reduce_min_epi16): Ditto.
14238         (_mm_mask_reduce_min_epu16): Ditto.
14239         (_mm256_mask_reduce_add_epi16): Ditto.
14240         (_mm256_mask_reduce_mul_epi16): Ditto.
14241         (_mm256_mask_reduce_and_epi16): Ditto.
14242         (_mm256_mask_reduce_or_epi16): Ditto.
14243         (_mm256_mask_reduce_max_epi16): Ditto.
14244         (_mm256_mask_reduce_max_epu16): Ditto.
14245         (_mm256_mask_reduce_min_epi16): Ditto.
14246         (_mm256_mask_reduce_min_epu16): Ditto.
14247         (_mm_mask_reduce_add_epi8): Ditto.
14248         (_mm_mask_reduce_mul_epi8): Ditto.
14249         (_mm_mask_reduce_and_epi8): Ditto.
14250         (_mm_mask_reduce_or_epi8): Ditto.
14251         (_mm_mask_reduce_max_epi8): Ditto.
14252         (_mm_mask_reduce_max_epu8): Ditto.
14253         (_mm_mask_reduce_min_epi8): Ditto.
14254         (_mm_mask_reduce_min_epu8): Ditto.
14255         (_mm256_mask_reduce_add_epi8): Ditto.
14256         (_mm256_mask_reduce_mul_epi8): Ditto.
14257         (_mm256_mask_reduce_and_epi8): Ditto.
14258         (_mm256_mask_reduce_or_epi8): Ditto.
14259         (_mm256_mask_reduce_max_epi8): Ditto.
14260         (_mm256_mask_reduce_max_epu8): Ditto.
14261         (_mm256_mask_reduce_min_epi8): Ditto.
14262         (_mm256_mask_reduce_min_epu8): Ditto.
14264 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
14266         * common/config/i386/i386-common.cc
14267         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
14268         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
14269         (OPTION_MASK_ISA_AVX_UNSET):
14270         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
14271         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
14272         * config/i386/i386.md (vpclmulqdqvl): New.
14273         * config/i386/sse.md (pclmulqdq): Add evex encoding.
14274         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
14275         push.
14277 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
14279         * config/i386/avx512vlbwintrin.h
14280         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
14281         (_mm_mask_blend_epi8): Ditto.
14282         (_mm256_mask_blend_epi16): Ditto.
14283         (_mm256_mask_blend_epi8): Ditto.
14284         * config/i386/avx512vlintrin.h
14285         (_mm256_mask_blend_pd): Ditto.
14286         (_mm256_mask_blend_ps): Ditto.
14287         (_mm256_mask_blend_epi64): Ditto.
14288         (_mm256_mask_blend_epi32): Ditto.
14289         (_mm_mask_blend_pd): Ditto.
14290         (_mm_mask_blend_ps): Ditto.
14291         (_mm_mask_blend_epi64): Ditto.
14292         (_mm_mask_blend_epi32): Ditto.
14293         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
14294         (VF_AVX512HFBFVL): Move it before the first usage.
14295         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
14296         to VF_AVX512HFBFVL.
14298 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
14300         * common/config/i386/i386-common.cc
14301         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
14302         to OPTION_MASK_ISA_AVX512BW_SET.
14303         (OPTION_MASK_ISA_AVX512F_UNSET):
14304         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
14305         (OPTION_MASK_ISA_AVX512BW_UNSET):
14306         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
14307         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
14308         * config/i386/avx512vbmi2vlintrin.h: Ditto.
14309         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
14310         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
14311         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
14312         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
14313         VI12_AVX512VL.
14314         (compressstore<mode>_mask): Ditto.
14315         (expand<mode>_mask): Ditto.
14316         (expand<mode>_maskz): Ditto.
14317         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
14318         VI12_VI48F_AVX512VL.
14320 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
14322         * common/config/i386/i386-common.cc
14323         (OPTION_MASK_ISA_AVX512BITALG_SET):
14324         Change OPTION_MASK_ISA_AVX512F_SET
14325         to OPTION_MASK_ISA_AVX512BW_SET.
14326         (OPTION_MASK_ISA_AVX512F_UNSET):
14327         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
14328         (OPTION_MASK_ISA_AVX512BW_UNSET):
14329         Add OPTION_MASK_ISA_AVX512BITALG_SET.
14330         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
14331         * config/i386/i386-builtin.def:
14332         Remove redundant OPTION_MASK_ISA_AVX512BW.
14333         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
14334         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
14335         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
14337 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
14339         * config/i386/i386-expand.cc
14340         (ix86_check_builtin_isa_match): Correct wrong comments.
14341         Add a new macro SHARE_BUILTIN and refactor the current if
14342         clauses to macro.
14344 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
14346         * config/i386/cpuid.h: Open a new section for Extended Features
14347         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
14348         %ecx == 1).
14350 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
14352         * config/i386/sse.md: Modify insn vperm{i,f}
14353         and vshuf{i,f}.
14355 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
14357         * config/xtensa/xtensa-opts.h: New header.
14358         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
14359         xtensa_strict_align.
14360         * config/xtensa/xtensa.cc (xtensa_option_override): When
14361         -m[no-]strict-align is not specified in the command line set
14362         xtensa_strict_align to 0 if the hardware supports both unaligned
14363         loads and stores or to 1 otherwise.
14364         * config/xtensa/xtensa.opt (mstrict-align): New option.
14365         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
14367 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
14369         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
14370         function.
14372 2023-04-19  Andrew Pinski  <apinski@marvell.com>
14374         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
14376 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14378         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
14379         (VECTOR_BOOL_MODE): Ditto.
14380         (ADJUST_NUNITS): Ditto.
14381         (ADJUST_ALIGNMENT): Ditto.
14382         (ADJUST_BYTESIZE): Ditto.
14383         (ADJUST_PRECISION): Ditto.
14384         (RVV_MODES): Ditto.
14385         (VECTOR_MODE_WITH_PREFIX): Ditto.
14386         * config/riscv/riscv-v.cc (ENTRY): Ditto.
14387         (get_vlmul): Ditto.
14388         (get_ratio): Ditto.
14389         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
14390         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
14391         (vbool64_t): Ditto.
14392         (vbool32_t): Ditto.
14393         (vbool16_t): Ditto.
14394         (vbool8_t): Ditto.
14395         (vbool4_t): Ditto.
14396         (vbool2_t): Ditto.
14397         (vbool1_t): Ditto.
14398         (vint8mf8_t): Ditto.
14399         (vuint8mf8_t): Ditto.
14400         (vint8mf4_t): Ditto.
14401         (vuint8mf4_t): Ditto.
14402         (vint8mf2_t): Ditto.
14403         (vuint8mf2_t): Ditto.
14404         (vint8m1_t): Ditto.
14405         (vuint8m1_t): Ditto.
14406         (vint8m2_t): Ditto.
14407         (vuint8m2_t): Ditto.
14408         (vint8m4_t): Ditto.
14409         (vuint8m4_t): Ditto.
14410         (vint8m8_t): Ditto.
14411         (vuint8m8_t): Ditto.
14412         (vint16mf4_t): Ditto.
14413         (vuint16mf4_t): Ditto.
14414         (vint16mf2_t): Ditto.
14415         (vuint16mf2_t): Ditto.
14416         (vint16m1_t): Ditto.
14417         (vuint16m1_t): Ditto.
14418         (vint16m2_t): Ditto.
14419         (vuint16m2_t): Ditto.
14420         (vint16m4_t): Ditto.
14421         (vuint16m4_t): Ditto.
14422         (vint16m8_t): Ditto.
14423         (vuint16m8_t): Ditto.
14424         (vint32mf2_t): Ditto.
14425         (vuint32mf2_t): Ditto.
14426         (vint32m1_t): Ditto.
14427         (vuint32m1_t): Ditto.
14428         (vint32m2_t): Ditto.
14429         (vuint32m2_t): Ditto.
14430         (vint32m4_t): Ditto.
14431         (vuint32m4_t): Ditto.
14432         (vint32m8_t): Ditto.
14433         (vuint32m8_t): Ditto.
14434         (vint64m1_t): Ditto.
14435         (vuint64m1_t): Ditto.
14436         (vint64m2_t): Ditto.
14437         (vuint64m2_t): Ditto.
14438         (vint64m4_t): Ditto.
14439         (vuint64m4_t): Ditto.
14440         (vint64m8_t): Ditto.
14441         (vuint64m8_t): Ditto.
14442         (vfloat32mf2_t): Ditto.
14443         (vfloat32m1_t): Ditto.
14444         (vfloat32m2_t): Ditto.
14445         (vfloat32m4_t): Ditto.
14446         (vfloat32m8_t): Ditto.
14447         (vfloat64m1_t): Ditto.
14448         (vfloat64m2_t): Ditto.
14449         (vfloat64m4_t): Ditto.
14450         (vfloat64m8_t): Ditto.
14451         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
14452         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
14453         (riscv_convert_vector_bits): Ditto.
14454         * config/riscv/riscv.md:
14455         * config/riscv/vector-iterators.md:
14456         * config/riscv/vector.md
14457         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
14458         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
14459         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
14460         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
14461         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
14462         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
14463         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
14464         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
14465         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
14467 2023-04-19  Pan Li  <pan2.li@intel.com>
14469         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
14470         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
14472 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
14474         PR target/78904
14475         PR target/78952
14476         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
14477         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
14478         for operand 0. Use any_extract code iterator.
14479         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
14480         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
14481         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
14482         (*cmpqi_ext<mode>_1): Use general_operand predicate
14483         for operand 1. Use any_extract code iterator.
14484         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
14485         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
14487 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14489         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
14490         (aarch64_uaddw2<mode>): Delete.
14491         (aarch64_ssubw2<mode>): Delete.
14492         (aarch64_usubw2<mode>): Delete.
14493         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
14495 2023-04-19  Richard Biener  <rguenther@suse.de>
14497         * tree-ssa-structalias.cc (do_ds_constraint): Use
14498         solve_add_graph_edge.
14500 2023-04-19  Richard Biener  <rguenther@suse.de>
14502         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
14503         split out from ...
14504         (do_sd_constraint): ... here.
14506 2023-04-19  Richard Biener  <rguenther@suse.de>
14508         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
14509         rejecting the merge when A contains only a non-local label.
14511 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
14513         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
14514         (VIRTUAL_REGISTER_NUM_P): Ditto.
14515         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
14516         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
14517         * function.cc (instantiate_decl_rtl): Ditto.
14518         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
14519         (nonzero_address_p): Ditto.
14520         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
14522 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
14524         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
14526 2023-04-19  Richard Biener  <rguenther@suse.de>
14528         * system.h (auto_mpz::operator->()): New.
14529         * realmpfr.h (auto_mpfr::operator->()): New.
14530         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
14531         * real.cc (real_from_string): Likewise.
14532         (dconst_e_ptr): Likewise.
14533         (dconst_sqrt2_ptr): Likewise.
14534         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
14535         Use auto_mpz.
14536         (bound_difference_of_offsetted_base): Likewise.
14537         (number_of_iterations_ne): Likewise.
14538         (number_of_iterations_lt_to_ne): Likewise.
14539         * ubsan.cc: Include realmpfr.h.
14540         (ubsan_instrument_float_cast): Use auto_mpfr.
14542 2023-04-19  Richard Biener  <rguenther@suse.de>
14544         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
14545         edges, remove edges from escaped after special-casing them.
14547 2023-04-19  Richard Biener  <rguenther@suse.de>
14549         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
14550         special casing.
14552 2023-04-19  Richard Biener  <rguenther@suse.de>
14554         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
14555         to the LHS varinfo solution member.
14557 2023-04-19  Richard Biener  <rguenther@suse.de>
14559         * tree-ssa-structalias.cc (topo_visit): Look at the real
14560         destination of edges.
14562 2023-04-19  Richard Biener  <rguenther@suse.de>
14564         PR tree-optimization/44794
14565         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
14566         If an epilogue loop is required set its iteration upper bound.
14568 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
14570         PR target/109465
14571         * config/loongarch/loongarch-protos.h
14572         (loongarch_expand_block_move): Add a parameter as alignment RTX.
14573         * config/loongarch/loongarch.h:
14574         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
14575         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
14576         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
14577         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
14578         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
14579         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
14580         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
14581         Take the alignment from the parameter, but set it to
14582         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
14583         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
14584         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
14585         (loongarch_block_move_straight): When there are left-over bytes,
14586         half the mode size instead of falling back to byte mode at once.
14587         (loongarch_block_move_loop): Limit the length of loop body with
14588         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
14589         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
14590         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
14591         to loongarch_expand_block_move.
14593 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
14595         * config/loongarch/loongarch.cc
14596         (loongarch_setup_incoming_varargs): Don't save more GARs than
14597         cfun->va_list_gpr_size / UNITS_PER_WORD.
14599 2023-04-19  Richard Biener  <rguenther@suse.de>
14601         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
14602         no epilogue condition.
14604 2023-04-19  Richard Biener  <rguenther@suse.de>
14606         * gimple.h (gimple_assign_load): Outline...
14607         * gimple.cc (gimple_assign_load): ... here.  Avoid
14608         get_base_address and instead just strip the outermost
14609         handled component, treating a remaining handled component
14610         as load.
14612 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14614         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
14615         definition.
14616         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
14618 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
14620         PR tree-optimization/109011
14621         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
14622         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
14623         CLZ, CTZ and FFS.  Remove vargs variable, use
14624         gimple_build_call_internal rather than gimple_build_call_internal_vec.
14625         (vect_vect_recog_func_ptrs): Adjust popcount entry.
14627 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
14629         PR target/109040
14630         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
14631         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
14632         a new REG rather than the SUBREG.
14634 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
14636         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
14637         New pattern.
14639 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14641         PR target/108840
14642         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
14643         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
14645 2023-04-19  Richard Biener  <rguenther@suse.de>
14647         PR rtl-optimization/109237
14648         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
14649         TREE_VISITED on INSN_VAR_LOCATION_DECL.
14650         (delete_trivially_dead_insns): Maintain TREE_VISITED on
14651         active debug bind INSN_VAR_LOCATION_DECL.
14653 2023-04-19  Richard Biener  <rguenther@suse.de>
14655         PR rtl-optimization/109237
14656         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14658 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
14660         * doc/install.texi (enable-decimal-float): Add AArch64.
14662 2023-04-19  liuhongt  <hongtao.liu@intel.com>
14664         PR rtl-optimization/109351
14665         * ira.cc (setup_class_subset_and_memory_move_costs): Check
14666         hard_regno_mode_ok before setting lowest memory move cost for
14667         the mode with different reg classes.
14669 2023-04-18  Jason Merrill  <jason@redhat.com>
14671         * doc/invoke.texi: Remove stray @gol.
14673 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
14675         * ifcvt.cc (cond_move_process_if_block): Consider the result of
14676         targetm.noce_conversion_profitable_p() when replacing the original
14677         sequence with the converted one.
14679 2023-04-18  Mark Harmstone  <mark@harmstone.com>
14681         * common.opt (gcodeview): Add new option.
14682         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
14683         * opts.cc (command_handle_option): Similarly.
14684         * doc/invoke.texi: Add documentation for -gcodeview.
14686 2023-04-18  Andrew Pinski  <apinski@marvell.com>
14688         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
14689         (make_pass_phiopt): Make execute out of line.
14690         (tree_ssa_cs_elim): Move code into ...
14691         (pass_cselim::execute): here.
14693 2023-04-18  Sam James  <sam@gentoo.org>
14695         * system.h: Drop unused INCLUDE_PTHREAD_H.
14697 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
14699         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
14700         condition.
14702 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
14704         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
14705         (bswapdi2, bswapsi2): Similarly.
14707 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
14709         PR target/94908
14710         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
14711         Use CODE_FOR_sse4_1_insertps_v4sf.
14712         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
14713         (expand_vec_perm_1): Call expand_vec_per_insertps.
14714         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
14715         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
14716         (@sse4_1_insertps_<mode>): New insn pattern.
14717         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
14718         pattern from sse4_1_insertps using VI4F_128 mode iterator.
14720 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14722         * value-range.cc (gt_ggc_mx): New.
14723         (gt_pch_nx): New.
14724         * value-range.h (class vrange): Add GTY marker.
14725         (class frange): Same.
14726         (gt_ggc_mx): Remove.
14727         (gt_pch_nx): Remove.
14729 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
14731         * lra-constraints.cc (constraint_unique): New.
14732         (process_address_1): Apply constraint_unique test.
14733         * recog.cc (constrain_operands): Allow relaxed memory
14734         constaints.
14736 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
14738         * doc/extend.texi (Target Builtins): Add RISC-V Vector
14739         Intrinsics.
14740         (RISC-V Vector Intrinsics): Document GCC implemented which
14741         version of RISC-V vector intrinsics and its reference.
14743 2023-04-18  Richard Biener  <rguenther@suse.de>
14745         PR middle-end/108786
14746         * bitmap.h (bitmap_clear_first_set_bit): New.
14747         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
14748         bitmap_first_set_bit and add optional clearing of the bit.
14749         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
14750         (bitmap_clear_first_set_bit): Likewise.
14751         * df-core.cc (df_worklist_dataflow_doublequeue): Use
14752         bitmap_clear_first_set_bit.
14753         * graphite-scop-detection.cc (scop_detection::merge_sese):
14754         Likewise.
14755         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
14756         (sanitize_asan_mark_poison): Likewise.
14757         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
14758         * tree-into-ssa.cc (rewrite_blocks): Likewise.
14759         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
14760         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
14762 2023-04-18  Richard Biener  <rguenther@suse.de>
14764         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
14765         (dump_sa_points_to_info): ... this function.
14766         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
14767         and call dump_sa_stats guarded with TDF_STATS.
14768         (ipa_pta_execute): Likewise.
14769         (compute_may_aliases): Guard dump_alias_info with
14770         TDF_DETAILS|TDF_ALIAS.
14772 2023-04-18  Andrew Pinski  <apinski@marvell.com>
14774         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
14775         the expression that is being tried when TDF_FOLDING
14776         is true.
14777         (phiopt_worker::match_simplify_replacement): Dump
14778         the sequence which was created by gimple_simplify_phiopt
14779         when TDF_FOLDING is true.
14781 2023-04-18  Andrew Pinski  <apinski@marvell.com>
14783         * tree-ssa-phiopt.cc (match_simplify_replacement):
14784         Simplify code that does the movement slightly.
14786 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14788         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
14789         define_expand.
14790         (rev16<mode>2): Rename to...
14791         (aarch64_rev16<mode>2_alt1): ... This.
14792         (rev16<mode>2_alt): Rename to...
14793         (*aarch64_rev16<mode>2_alt2): ... This.
14795 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14797         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
14798         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
14799         declaration.
14800         * range-op-float.cc (zero_range): Use dconstm0.
14801         (zero_to_inf_range): Same.
14802         * real.h (dconstm0): New.
14803         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
14804         (frange::set_zero): Do not declare dconstm0.
14806 2023-04-18  Richard Biener  <rguenther@suse.de>
14808         * system.h (class auto_mpz): New,
14809         * realmpfr.h (class auto_mpfr): Likewise.
14810         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
14811         (do_mpfr_arg2): Likewise.
14812         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
14814 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14816         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
14817         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
14819 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14821         * value-range.cc (frange::operator==): Adjust for NAN.
14822         (range_tests_nan): Remove some NAN tests.
14824 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14826         * inchash.cc (hash::add_real_value): New.
14827         * inchash.h (class hash): Add add_real_value.
14828         * value-range.cc (add_vrange): New.
14829         * value-range.h (inchash::add_vrange): New.
14831 2023-04-18  Richard Biener  <rguenther@suse.de>
14833         PR tree-optimization/109539
14834         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
14835         Re-implement pointer relatedness for PHIs.
14837 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
14839         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
14840         (SV_FP): New iterator.
14841         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
14842         (recip<mode>2): Unify the two patterns using SV_FP.
14843         (div_scale<mode><exec_vcc>): New insn.
14844         (div_fmas<mode><exec>): New insn.
14845         (div_fixup<mode><exec>): New insn.
14846         (div<mode>3): Unify the two expanders and rewrite using hardfp.
14847         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
14848         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
14849         and UNSPEC_DIV_FIXUP.
14850         (vccwait): New attribute.
14852 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14854         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
14855         if the argument matches that.
14857 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14859         * config/aarch64/atomics.md
14860         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
14861         Use SD_HSDI for destination mode iterator.
14863 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
14865         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
14866         of z-extensions and s-extensions.
14867         (riscv_subset_list::parse): Likewise.
14869 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
14871         PR tree-optimization/109240
14872         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
14873         first vec_perm operand and minus as second using fneg/fadd and
14874         minus as first vec_perm operand and plus as second using fneg/fsub.
14876 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14878         * data-streamer.cc (bp_pack_real_value): New.
14879         (bp_unpack_real_value): New.
14880         * data-streamer.h (bp_pack_real_value):  New.
14881         (bp_unpack_real_value): New.
14882         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
14883         bp_unpack_real_value.
14884         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
14885         bp_pack_real_value.
14887 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14889         * wide-int.h (WIDE_INT_MAX_HWIS): New.
14890         (class fixed_wide_int_storage): Use it.
14891         (trailing_wide_ints <N>::set_precision): Use it.
14892         (trailing_wide_ints <N>::extra_size): Use it.
14894 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
14896         * config/loongarch/loongarch-protos.h
14897         (loongarch_addu16i_imm12_operand_p): New function prototype.
14898         (loongarch_split_plus_constant): Likewise.
14899         * config/loongarch/loongarch.cc
14900         (loongarch_addu16i_imm12_operand_p): New function.
14901         (loongarch_split_plus_constant): Likewise.
14902         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
14903         (DUAL_IMM12_OPERAND): Likewise.
14904         (DUAL_ADDU16I_OPERAND): Likewise.
14905         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
14906         constraint.
14907         * config/loongarch/predicates.md (const_dual_imm12_operand): New
14908         predicate.
14909         (const_addu16i_operand): Likewise.
14910         (const_addu16i_imm12_di_operand): Likewise.
14911         (const_addu16i_imm12_si_operand): Likewise.
14912         (plus_di_operand): Likewise.
14913         (plus_si_operand): Likewise.
14914         (plus_si_extend_operand): Likewise.
14915         * config/loongarch/loongarch.md (add<mode>3): Convert to
14916         define_insn_and_split.  Use plus_<mode>_operand predicate
14917         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
14918         and Le constraints.
14919         (*addsi3_extended): Convert to define_insn_and_split.  Use
14920         plus_si_extend_operand instead of arith_operand.  Add
14921         alternatives for La and Le alternatives.
14923 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14925         * value-range.h (Value_Range::Value_Range): New.
14926         (Value_Range::contains_p): New.
14928 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
14930         * value-range.h (class vrange): Make m_discriminator const.
14931         (class irange): Make m_max_ranges const.  Adjust constructors
14932         accordingly.
14933         (class unsupported_range): Construct vrange appropriately.
14934         (class frange): Same.
14936 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
14938         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
14939         definition.
14941 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
14943         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
14945 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
14947         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
14948         readable.
14949         (riscv_expand_epilogue): Likewise.
14951 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
14953         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
14954         stack allocation.
14955         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
14957 2023-04-17  Andrew Pinski  <apinski@marvell.com>
14959         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
14960         prototype.
14962 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
14964         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
14965         global ranges.
14967 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
14969         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
14970         parameter remaining_size.
14971         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
14972         (riscv_expand_prologue): Likewise.
14973         (riscv_expand_epilogue): Likewise.
14975 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
14977         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
14978         roriw for constant counts.
14979         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
14980         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
14981         (simplify_context::simplify_binary_operation_1): Use it.
14982         * expmed.cc (expand_shift_1): Likewise.
14984 2023-04-17  Martin Jambor  <mjambor@suse.cz>
14986         PR ipa/107769
14987         PR ipa/109318
14988         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
14989         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
14990         (ipa_zap_jf_refdesc): New function.
14991         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
14992         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
14993         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
14994         the new parameter of find_reference.
14995         (adjust_references_in_caller): Likewise. Make sure the constant jump
14996         function is not used to decrement a refdec counter again.  Only
14997         decrement refdesc counters when the pass_through jump function allows
14998         it.  Added a detailed dump when decrementing refdesc counters.
14999         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
15000         (ipa_set_jf_simple_pass_through): Initialize the new flag.
15001         (ipa_set_jf_unary_pass_through): Likewise.
15002         (ipa_set_jf_arith_pass_through): Likewise.
15003         (remove_described_reference): Provide a value for the new parameter of
15004         find_reference.
15005         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
15006         the previous pass_through had a flag mandating that we do so.
15007         (propagate_controlled_uses): Likewise.  Only decrement refdesc
15008         counters when the pass_through jump function allows it.
15009         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
15010         parameter of find_reference.
15011         (ipa_write_jump_function): Assert the new flag does not have to be
15012         streamed.
15013         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
15014         it in searching.
15016 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
15017             Di Zhao  <di.zhao@amperecomputing.com>
15019         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
15020         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
15021         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
15022         Check for the above tuning option when processing loads.
15024 2023-04-17  Richard Biener  <rguenther@suse.de>
15026         PR tree-optimization/109524
15027         * tree-vrp.cc (remove_unreachable::m_list): Change to a
15028         vector of pairs of block indices.
15029         (remove_unreachable::maybe_register_block): Adjust.
15030         (remove_unreachable::remove_and_update_globals): Likewise.
15031         Deal with removed blocks.
15033 2023-04-16  Jeff Law  <jlaw@ventanamicro>
15035         PR target/109508
15036         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
15037         TARGET_SFB_ALU, force the true arm into a register.
15039 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
15041         PR target/104989
15042         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
15043         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
15044         size is zero.
15045         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
15046         (pa_function_arg_size): Change return type to int.  Return zero
15047         for arguments larger than 1 GB.  Update comments.
15049 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
15051         PR tree-optimization/109154
15052         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
15053         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
15055 2023-04-15  Jason Merrill  <jason@redhat.com>
15057         PR c++/109514
15058         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
15059         Overhaul lhs_ref.ref analysis.
15061 2023-04-14  Richard Biener  <rguenther@suse.de>
15063         PR tree-optimization/109502
15064         * tree-vect-stmts.cc (vectorizable_assignment): Fix
15065         check for conversion between mask and non-mask types.
15067 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
15068             Jakub Jelinek  <jakub@redhat.com>
15070         PR target/108947
15071         PR target/109040
15072         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
15073         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
15074         smaller than word_mode.
15075         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
15076         <case AND>: Likewise.
15078 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
15080         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
15081         of GEN_INT.
15083 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
15085         PR tree-optimization/108139
15086         PR tree-optimization/109462
15087         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
15088         equivalency check for PHI nodes.
15089         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
15090         does not dominate single-arg equivalency edges.
15092 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
15094         PR target/108910
15095         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
15096         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
15098 2023-04-13  Richard Biener  <rguenther@suse.de>
15100         PR tree-optimization/109491
15101         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
15102         NULL operands test.
15104 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15106         PR target/109479
15107         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
15108         (vint16mf4_t): Ditto.
15109         (vint32mf2_t): Ditto.
15110         (vint64m1_t): Ditto.
15111         (vint64m2_t): Ditto.
15112         (vint64m4_t): Ditto.
15113         (vint64m8_t): Ditto.
15114         (vuint8mf8_t): Ditto.
15115         (vuint16mf4_t): Ditto.
15116         (vuint32mf2_t): Ditto.
15117         (vuint64m1_t): Ditto.
15118         (vuint64m2_t): Ditto.
15119         (vuint64m4_t): Ditto.
15120         (vuint64m8_t): Ditto.
15121         (vfloat32mf2_t): Ditto.
15122         (vbool64_t): Ditto.
15123         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
15124         (register_vector_type): Ditto.
15125         (check_required_extensions): Fix condition.
15126         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
15127         (RVV_REQUIRE_ELEN_64): New define.
15128         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
15129         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
15130         (TARGET_VECTOR_FP64): Ditto.
15131         (ENTRY): Fix predicate.
15132         * config/riscv/vector-iterators.md: Fix predicate.
15134 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
15136         PR tree-optimization/109410
15137         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
15138         block if first statement of the function is a call to returns_twice
15139         function.
15141 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
15143         PR target/109458
15144         * config/i386/i386.cc: Include rtl-error.h.
15145         (ix86_print_operand): For z modifier warning, use warning_for_asm
15146         if this_is_asm_operands.  For Z modifier errors, use %c and code
15147         instead of hardcoded Z.
15149 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
15151         * config/i386/x-mingw32-utf8: Remove extrataneous $@
15153 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
15155         PR tree-optimization/109462
15156         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
15157         check for equivalences if NAME is a phi node.
15159 2023-04-12  Richard Biener  <rguenther@suse.de>
15161         PR tree-optimization/109473
15162         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
15163         Convert scalar result to the computation type before performing
15164         the reduction adjustment.
15166 2023-04-12  Richard Biener  <rguenther@suse.de>
15168         PR tree-optimization/109469
15169         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
15170         a returns-twice call.
15172 2023-04-12  Richard Biener  <rguenther@suse.de>
15174         PR tree-optimization/109434
15175         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
15176         handle possibly throwing calls when processing the LHS
15177         and may-defs are not OK.
15179 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
15181         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
15182         predicate to avoid splitting arith constants.
15184 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
15185             Pan Li  <pan2.li@intel.com>
15186             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15187             Kito Cheng  <kito.cheng@sifive.com>
15189         PR target/109104
15190         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
15191         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
15192         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
15193         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
15194         (riscv_zero_call_used_regs): New.
15195         (TARGET_ZERO_CALL_USED_REGS): New.
15197 2023-04-11  Martin Liska  <mliska@suse.cz>
15199         PR driver/108241
15200         * opts.cc (finish_options): Drop also
15201         x_flag_var_tracking_assignments.
15203 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
15205         PR tree-optimization/108888
15206         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
15208 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
15210         PR target/108812
15211         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
15212         (vsx_sign_extend_v16qi_<mode>): ... this.
15213         (vsx_sign_extend_hi_<mode>): Rename to...
15214         (vsx_sign_extend_v8hi_<mode>): ... this.
15215         (vsx_sign_extend_si_v2di): Rename to...
15216         (vsx_sign_extend_v4si_v2di): ... this.
15217         (vsignextend_qi_<mode>): Remove.
15218         (vsignextend_hi_<mode>): Remove.
15219         (vsignextend_si_v2di): Remove.
15220         (vsignextend_v2di_v1ti): Remove.
15221         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
15222         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
15223         with gen_vsx_sign_extend_v16qi_v4si.
15224         * config/rs6000/rs6000.md (split for DI constant generation):
15225         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
15226         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
15227         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
15228         with gen_vsx_sign_extend_v16qi_si.
15229         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
15230         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
15231         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
15232         vsx_sign_extend_v16qi_v4si.
15233         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
15234         vsx_sign_extend_v8hi_v2di.
15235         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
15236         vsx_sign_extend_v8hi_v4si.
15237         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
15238         vsx_sign_extend_si_v2di.
15239         (__builtin_altivec_vsignext): Set bif-pattern to
15240         vsx_sign_extend_v2di_v1ti.
15241         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
15242         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
15243         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
15244         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
15246 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
15248         PR target/70243
15249         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
15250         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
15252 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
15254         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
15256 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
15258         * common/config/i386/cpuinfo.h (get_available_features):
15259         Detect AMX-COMPLEX.
15260         * common/config/i386/i386-common.cc
15261         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
15262         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
15263         (ix86_handle_option): Handle -mamx-complex.
15264         * common/config/i386/i386-cpuinfo.h (enum processor_features):
15265         Add FEATURE_AMX_COMPLEX.
15266         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
15267         amx-complex.
15268         * config.gcc: Add amxcomplexintrin.h.
15269         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
15270         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
15271         __AMX_COMPLEX__.
15272         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
15273         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
15274         Handle amx-complex.
15275         * config/i386/i386.opt: Add option -mamx-complex.
15276         * config/i386/immintrin.h: Include amxcomplexintrin.h.
15277         * doc/extend.texi: Document amx-complex.
15278         * doc/invoke.texi: Document -mamx-complex.
15279         * doc/sourcebuild.texi: Document target amx-complex.
15280         * config/i386/amxcomplexintrin.h: New file.
15282 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
15284         PR tree-optimization/109392
15285         * tree-vect-generic.cc (tree_vec_extract): Handle failure
15286         of maybe_push_res_to_seq better.
15288 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
15290         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
15291         poly-int-types.h.
15292         (SYSTEM_H): Depend on $(HASHTAB_H).
15293         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
15294         dependency on $(RTL_BASE_H), remove redundant dependency on
15295         insn-modes.h.
15297 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
15299         PR target/107674
15300         * config/arm/arm.cc (arm_effective_regno): New function.
15301         (mve_vector_mem_operand): Use it.
15303 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
15305         PR tree-optimization/109417
15306         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
15307         dependency is in SSA_NAME_FREE_LIST.
15309 2023-04-06  Andrew Pinski  <apinski@marvell.com>
15311         PR tree-optimization/109427
15312         * params.opt (-param=vect-induction-float=):
15313         Fix option attribute typo for IntegerRange.
15315 2023-04-05  Jeff Law  <jlaw@ventanamicro>
15317         PR target/108892
15318         * combine.cc (combine_instructions): Force re-recognition when
15319         after restoring the body of an insn to its original form.
15321 2023-04-05  Martin Jambor  <mjambor@suse.cz>
15323         PR ipa/108959
15324         * ipa-sra.cc (zap_useless_ipcp_results): New function.
15325         (process_isra_node_results): Call it.
15327 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15329         * config/riscv/vector.md: Fix incorrect operand order.
15331 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15333         * config/riscv/riscv-vsetvl.cc
15334         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
15335         demand fusion.
15337 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
15339         * config/riscv/riscv-vector-builtins.def: Fix typo.
15340         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
15341         * config/riscv/vector-iterators.md: Ditto.
15343 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
15345         * doc/md.texi (Including Patterns): Fix page break.
15347 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
15349         PR tree-optimization/109386
15350         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
15351         foperator_le::op1_range, foperator_le::op2_range,
15352         foperator_gt::op1_range, foperator_gt::op2_range,
15353         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
15354         BRS_FALSE case even if the other op is maybe_isnan, not just
15355         known_isnan.
15356         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
15357         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
15358         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
15359         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
15360         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
15361         not just known_isnan.
15363 2023-04-04  Marek Polacek  <polacek@redhat.com>
15365         PR sanitizer/109107
15366         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
15367         when associating.
15368         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
15370 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
15372         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
15373         (mve_vcreateq_f<mode>): Swap operands.
15375 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
15377         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
15379 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
15381         PR target/109384
15382         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
15383         Reword diagnostics about zfinx conflict with f, formatting fixes.
15385 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
15387         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
15389 2023-04-04  Richard Biener  <rguenther@suse.de>
15391         PR tree-optimization/109304
15392         * tree-profile.cc (tree_profiling): Use symtab node
15393         availability to decide whether to skip adjusting calls.
15394         Do not adjust calls to internal functions.
15396 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
15398         PR target/108807
15399         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
15400         function for permutation control vector by considering big endianness.
15402 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
15404         PR target/108699
15405         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
15406         (rs6000_vprtyb<mode>2): ... this.
15407         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
15408         rs6000_vprtybv2di2.
15409         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
15410         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
15411         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
15412         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
15414 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
15415             Sandra Loosemore  <sandra@codesourcery.com>
15417         * doc/md.texi (Insn Splitting): Tweak wording for readability.
15419 2023-04-03  Martin Jambor  <mjambor@suse.cz>
15421         PR ipa/109303
15422         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
15423         offset + size will be representable in unsigned int.
15425 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
15427         * configure.ac (ZSTD_LIB): Move before zstd.h check.
15428         Unset gcc_cv_header_zstd_h without libzstd.
15429         * configure: Regenerate.
15431 2023-04-03  Martin Liska  <mliska@suse.cz>
15433         * doc/invoke.texi: Document new param.
15435 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
15437         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
15438         new check_effective_target function.
15440 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
15442         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
15443         (vfloat32m8_t): Likewise
15445 2023-04-03  liuhongt  <hongtao.liu@intel.com>
15447         * doc/md.texi: Document signbitm2.
15449 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15450             kito-cheng  <kito.cheng@sifive.com>
15452         * config/riscv/vector.md: Fix RA constraint.
15454 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15456         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
15457         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
15458         * config/riscv/vector.md: Fix scalar move bug.
15460 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
15462         * range-op-float.cc (foperator_equal::fold_range): If at least
15463         one of the op ranges is not singleton and neither is NaN and all
15464         4 bounds are zero, return [1, 1].
15465         (foperator_not_equal::fold_range): In the same case return [0, 0].
15467 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
15469         * range-op-float.cc (foperator_equal::fold_range): Perform the
15470         non-singleton handling regardless of maybe_isnan (op1, op2).
15471         (foperator_not_equal::fold_range): Likewise.
15472         (foperator_lt::fold_range, foperator_le::fold_range,
15473         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
15474         real_* comparison check which results in range_false (type)
15475         even if maybe_isnan (op1, op2).  Simplify.
15476         (foperator_ltgt): New class.
15477         (fop_ltgt): New variable.
15478         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
15479         fop_ltgt.
15481 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
15483         PR target/109254
15484         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
15485         returns VOIDmode, handle it like if the register isn't used for
15486         passing arguments at all.
15487         (apply_result_size): If targetm.calls.get_raw_result_mode returns
15488         VOIDmode, handle it like if the register isn't used for returning
15489         results at all.
15490         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
15491         means to return VOIDmode.
15492         * doc/tm.texi: Regenerated.
15493         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
15494         TARGET_SVE for P0_REGNUM.
15495         (aarch64_function_arg_regno_p): Also return true for p0-p3.
15496         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
15498 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
15500         * lra-constraints.cc: (combine_reload_insn): New function.
15502 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
15504         PR tree-optimization/91645
15505         * range-op-float.cc (foperator_unordered_lt::fold_range,
15506         foperator_unordered_le::fold_range,
15507         foperator_unordered_gt::fold_range,
15508         foperator_unordered_ge::fold_range,
15509         foperator_unordered_equal::fold_range): Call the ordered
15510         fold_range on ranges with cleared NaNs.
15511         * value-query.cc (range_query::get_tree_range): Handle also
15512         COMPARISON_CLASS_P trees.
15514 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
15515             Andrew Pinski  <pinskia@gmail.com>
15517         PR target/109328
15518         * config/riscv/t-riscv: Add missing dependencies.
15520 2023-03-31  liuhongt  <hongtao.liu@intel.com>
15522         * config/i386/i386.cc (inline_memory_move_cost): Return 100
15523         for MASK_REGS when MODE_SIZE > 8.
15525 2023-03-31  liuhongt  <hongtao.liu@intel.com>
15527         PR target/85048
15528         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
15529         ufloat/ufix to floatuns/fixuns.
15530         * config/i386/i386-expand.cc
15531         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
15532         * config/i386/sse.md
15533         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
15534         Renamed to ..
15535         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
15536         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
15537         Renamed to ..
15538         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
15539         .. this.
15540         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
15541         Renamed to ..
15542         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
15543         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
15544         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
15545         (ufloatv2siv2df2<mask_name>): Renamed to ..
15546         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
15547         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
15548         Renamed to ..
15549         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
15550         .. this.
15551         (ufix_notruncv2dfv2si2): Renamed to ..
15552         (fixuns_notruncv2dfv2si2):.. this.
15553         (ufix_notruncv2dfv2si2_mask): Renamed to ..
15554         (fixuns_notruncv2dfv2si2_mask): .. this.
15555         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
15556         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
15557         (ufix_truncv2dfv2si2): Renamed to ..
15558         (*fixuns_truncv2dfv2si2): .. this.
15559         (ufix_truncv2dfv2si2_mask): Renamed to ..
15560         (fixuns_truncv2dfv2si2_mask): .. this.
15561         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
15562         (*fixuns_truncv2dfv2si2_mask_1): .. this.
15563         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
15564         (fixuns_truncv4dfv4si2<mask_name>): .. this.
15565         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
15566         Renamed to ..
15567         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
15568         .. this.
15569         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
15570         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
15571         .. this.
15573 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
15575         PR tree-optimization/109154
15576         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
15577         * gimple-range-gori.h (may_recompute_p): Add depth param.
15578         * params.opt (ranger-recompute-depth): New param.
15580 2023-03-30  Jason Merrill  <jason@redhat.com>
15582         PR c++/107897
15583         PR c++/108887
15584         * cgraph.h: Move reset() from cgraph_node to symtab_node.
15585         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
15586         remove_from_same_comdat_group.
15588 2023-03-30  Richard Biener  <rguenther@suse.de>
15590         PR tree-optimization/107561
15591         * gimple-ssa-warn-access.cc (get_size_range): Add flags
15592         argument and pass it on.
15593         (check_access): When querying for the size range pass
15594         SR_ALLOW_ZERO when the known destination size is zero.
15596 2023-03-30  Richard Biener  <rguenther@suse.de>
15598         PR tree-optimization/109342
15599         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
15600         overload for edge.  When that edge is a backedge use
15601         dominated_by_p directly.
15603 2023-03-30  liuhongt  <hongtao.liu@intel.com>
15605         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
15606         vpblendd instead of vpblendw for V4SI under avx2.
15608 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
15610         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
15611         for many quick operands, for register-sized modes.
15613 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
15615         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
15616         New check.
15618 2023-03-29  Martin Liska  <mliska@suse.cz>
15620         PR bootstrap/109310
15621         * configure.ac: Emit a warning for deprecated option
15622         --enable-link-mutex.
15623         * configure: Regenerate.
15625 2023-03-29  Richard Biener  <rguenther@suse.de>
15627         PR tree-optimization/109331
15628         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
15629         discover a taken edge make sure to cleanup the CFG.
15631 2023-03-29  Richard Biener  <rguenther@suse.de>
15633         PR tree-optimization/109327
15634         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
15635         already removed stmts when draining to_remove.
15637 2023-03-29  Richard Biener  <rguenther@suse.de>
15639         PR ipa/106124
15640         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
15641         so we can re-create the DIE for the type if required.
15643 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
15644             Richard Biener  <rguenther@suse.de>
15646         PR tree-optimization/109301
15647         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
15648         properties_provided from PROP_gimple_opt_math to 0.
15649         (pass_data_expand_powcabs): Change properties_provided from 0 to
15650         PROP_gimple_opt_math.
15652 2023-03-29  Richard Biener  <rguenther@suse.de>
15654         PR tree-optimization/109154
15655         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
15656         inverted condition specially by inverting at the caller.
15657         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
15659 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
15661         PR c/107002
15662         * diagnostic-show-locus.cc (column_range::column_range): Factor
15663         out assertion conditional into...
15664         (column_range::valid_p): ...this new function.
15665         (line_corrections::add_hint): Don't attempt to consolidate hints
15666         if it would lead to invalid column_range instances.
15668 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
15670         PR target/109312
15671         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
15672         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
15673         minor refactor.
15675 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
15677         PR rtl-optimization/109187
15678         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
15679         subtraction in three-way comparison.
15681 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
15683         PR tree-optimization/109265
15684         PR tree-optimization/109274
15685         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
15686         not create a relation record is op1 and op2 are the same symbol.
15687         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
15688         handler for this stmt, but create a new record only if this statement
15689         generates a relation based on the ranges.
15690         (gori_compute::compute_operand2_range): Ditto.
15691         * value-relation.h (value_relation::set_relation): Always create the
15692         record that is requested.
15694 2023-03-28  Richard Biener  <rguenther@suse.de>
15696         PR tree-optimization/107087
15697         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
15698         executable regions to avoid useless work and to better
15699         propagate degenerate PHIs.
15701 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
15703         * config/i386/x-mingw32-utf8: update comments.
15705 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
15707         PR target/109072
15708         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
15709         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
15710         variable.
15711         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
15712         New function.
15713         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
15714         after inlining.  Record which decls are loaded from.  Fix handling
15715         of vops for loads and stores.
15716         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
15717         (aarch64_accesses_vector_load_decl_p): Likewise.
15718         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
15719         variable.
15720         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
15721         that loads from a decl, treat vector stores to those decls as
15722         zero cost.
15723         (aarch64_vector_costs::finish_cost): ...and in that case,
15724         if the vector code does nothing more than a store, give the
15725         prologue a zero cost as well.
15727 2023-03-28  Richard Biener  <rguenther@suse.de>
15729         PR bootstrap/84402
15730         PR tree-optimization/108129
15731         * genmatch.cc (lower_for): For (match ...) delay
15732         substituting into the match operator if possible.
15733         (dt_operand::gen_gimple_expr): For user_id look at the
15734         first substitute for determining how to access operands.
15735         (dt_operand::gen_generic_expr): Likewise.
15736         (dt_node::gen_kids): Properly sort user_ids according
15737         to their substitutes.
15738         (dt_node::gen_kids_1): Code-generate user_id matching.
15740 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
15741             Jonathan Wakely  <jwakely@redhat.com>
15743         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
15744         Use subcommand rather than sub-command in function comments.
15746 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
15748         PR tree-optimization/109154
15749         * value-range.h (frange::flush_denormals_to_zero): Make it public
15750         rather than private.
15751         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
15752         here.
15753         * range-op-float.cc (range_operator_float::fold_range): Call
15754         flush_denormals_to_zero.
15756 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
15758         PR middle-end/106190
15759         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
15760         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
15762 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
15764         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
15765         as 4th argument to set to avoid clear_nan and union_ calls.
15767 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
15769         PR target/109276
15770         * config/i386/i386.cc (assign_386_stack_local): For DImode
15771         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
15772         align 32 rather than 0 to assign_stack_local.
15774 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15776         PR target/109140
15777         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
15778         on operand #3 to get the final condition code.  Use std::swap.
15779         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
15780         (fucmp<gcond:code>8<P:mode>_vis): Move around.
15781         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
15782         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
15784 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15786         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
15787         top-level sections.
15789 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
15791         * config.host: Pull in i386/x-mingw32-utf8 Makefile
15792         fragment and reference utf8rc-mingw32.o explicitly
15793         for mingw hosts.
15794         * config/i386/sym-mingw32.cc: prevent name mangling of
15795         stub symbol.
15796         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
15797         depend on manifest file explicitly.
15799 2023-03-28  Richard Biener  <rguenther@suse.de>
15801         Revert:
15802         2023-03-27  Richard Biener  <rguenther@suse.de>
15804         PR rtl-optimization/109237
15805         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
15807 2023-03-28  Richard Biener  <rguenther@suse.de>
15809         * common.opt (gdwarf): Remove Negative(gdwarf-).
15811 2023-03-28  Richard Biener  <rguenther@suse.de>
15813         * common.opt (gdwarf): Add RejectNegative.
15814         (gdwarf-): Likewise.
15815         (ggdb): Likewise.
15816         (gvms): Likewise.
15818 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
15820         * config/cris/constraints.md ("T"): Correct to
15821         define_memory_constraint.
15823 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
15825         * config/cris/cris.md (BW2): New mode-iterator.
15826         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
15827         peephole2s.
15829 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
15831         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
15832         for possible eliminable compares.
15834 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
15836         * config/cris/constraints.md ("R"): Remove unused constraint.
15838 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
15840         PR gcov-profile/109297
15841         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
15842         (merge_stream_usage): Likewise.
15843         (overlap_usage): Likewise.
15845 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
15847         PR target/109296
15848         * config/riscv/thead.md: Add missing mode specifiers.
15850 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
15851             Jiangning Liu  <jiangning.liu@amperecomputing.com>
15852             Manolis Tsamis  <manolis.tsamis@vrull.eu>
15854         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
15856 2023-03-27  Richard Biener  <rguenther@suse.de>
15858         PR rtl-optimization/109237
15859         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
15861 2023-03-27  Richard Biener  <rguenther@suse.de>
15863         PR lto/109263
15864         * lto-wrapper.cc (run_gcc): Parse alternate debug options
15865         as well, they always enable debug.
15867 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
15869         PR target/109167
15870         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
15871         from ...
15872         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
15874 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
15876         PR target/109082
15877         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
15878         than zero when calling vec_sld.
15879         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
15880         zero when calling vec_sld.
15881         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
15882         than zero when calling vec_sld.
15884 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
15886         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
15887         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
15888         loops are represented and which fields are vectors.  Add
15889         documentation for OMP_FOR_PRE_BODY field.  Document internal
15890         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
15891         * tree.def (OMP_FOR): Make documentation consistent with the
15892         Texinfo manual, to fill some gaps and correct errors.
15894 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
15896         PR target/106282
15897         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
15898         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
15899         (handle_move_double): Call it before handle_movsi.
15900         * config/m68k/m68k-protos.h: Declare it.
15902 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
15904         PR tree-optimization/109230
15905         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
15907 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
15909         PR ipa/105685
15910         * predict.cc (compute_function_frequency): Don't call
15911         warn_function_cold if function already has cold attribute.
15913 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
15915         * doc/install.texi: Remove anachronistic note
15916         related to languages built and separate source tarballs.
15918 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
15920         PR analyzer/109098
15921         * diagnostic-format-sarif.cc (read_until_eof): Delete.
15922         (maybe_read_file): Delete.
15923         (sarif_builder::maybe_make_artifact_content_object): Use
15924         get_source_file_content rather than maybe_read_file.
15925         Reject it if it's not valid UTF-8.
15926         * input.cc (file_cache_slot::get_full_file_content): New.
15927         (get_source_file_content): New.
15928         (selftest::check_cpp_valid_utf8_p): New.
15929         (selftest::test_cpp_valid_utf8_p): New.
15930         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
15931         * input.h (get_source_file_content): New prototype.
15933 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
15935         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
15936         debugging options.
15937         (Special Functions for Debugging the Analyzer): Convert to a
15938         table, and rewrite in places.
15939         (Other Debugging Techniques): Add notes on how to compare two
15940         different exploded graphs.
15942 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
15944         PR other/109163
15945         * json.cc: Update comments to indicate that we now preserve
15946         insertion order of keys within objects.
15947         (object::print): Traverse keys in insertion order.
15948         (object::set): Preserve insertion order of keys.
15949         (selftest::test_writing_objects): Add an additional key to verify
15950         that we preserve insertion order.
15951         * json.h (object::m_keys): New field.
15953 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
15955         PR tree-optimization/109238
15956         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
15957         predecessors which this block dominates.
15959 2023-03-24  Richard Biener  <rguenther@suse.de>
15961         PR tree-optimization/106912
15962         * tree-profile.cc (tree_profiling): Update stmts only when
15963         profiling or testing coverage.  Make sure to update calls
15964         fntype, stripping 'const' there.
15966 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
15968         PR middle-end/109258
15969         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
15970         if target == const0_rtx.
15972 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
15974         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
15975         Document options and effective targets.
15977 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
15979         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
15980         optional.
15982 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
15984         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
15985         non-earlyclobber alternative.
15987 2023-03-23  Andrew Pinski  <apinski@marvell.com>
15989         PR c/84900
15990         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
15991         as a lvalue.
15993 2023-03-23  Richard Biener  <rguenther@suse.de>
15995         PR tree-optimization/107569
15996         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
15997         Do not push SSA names with zero uses as available leader.
15998         (process_bb): Likewise.
16000 2023-03-23  Richard Biener  <rguenther@suse.de>
16002         PR tree-optimization/109262
16003         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
16004         combining a piecewise complex load avoid touching loads
16005         that throw internally.  Use fun, not cfun throughout.
16007 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
16009         * value-range.cc (irange::irange_union, irange::intersect): Fix
16010         comment spelling bugs.
16011         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
16012         * gimple-range-trace.h: Likewise.
16013         * gimple-range-edge.cc: Likewise.
16014         (gimple_outgoing_range_stmt_p,
16015         gimple_outgoing_range::switch_edge_range,
16016         gimple_outgoing_range::edge_range_p): Likewise.
16017         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
16018         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
16019         assume_query::assume_query, assume_query::calculate_phi): Likewise.
16020         * gimple-range-edge.h: Likewise.
16021         * value-range.h (Value_Range::set, Value_Range::lower_bound,
16022         Value_Range::upper_bound, frange::set_undefined): Likewise.
16023         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
16024         gori_compute): Likewise.
16025         * gimple-range-fold.h (fold_using_range): Likewise.
16026         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
16027         Likewise.
16028         * gimple-range-gori.cc (range_def_chain::in_chain_p,
16029         range_def_chain::dump, gori_map::calculate_gori,
16030         gori_compute::compute_operand_range_switch,
16031         gori_compute::logical_combine, gori_compute::refine_using_relation,
16032         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
16033         Likewise.
16034         * gimple-range.h: Likewise.
16035         (enable_ranger): Likewise.
16036         * range-op.h (empty_range_varying): Likewise.
16037         * value-query.h (value_query): Likewise.
16038         * gimple-range-cache.cc (block_range_cache::set_bb_range,
16039         block_range_cache::dump, ssa_global_cache::clear_global_range,
16040         temporal_cache::temporal_value, temporal_cache::current_p,
16041         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
16042         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
16043         Likewise.
16044         * gimple-range-fold.cc (fur_edge::get_phi_operand,
16045         fur_stmt::get_operand, gimple_range_adjustment,
16046         fold_using_range::range_of_phi,
16047         fold_using_range::relation_fold_and_or): Likewise.
16048         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
16049         * value-query.cc (range_query::value_of_expr,
16050         range_query::value_on_edge, range_query::query_relation): Likewise.
16051         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
16052         intersect_range_with_nonzero_bits): Likewise.
16053         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
16054         exit_range): Likewise.
16055         * value-relation.h: Likewise.
16056         (equiv_oracle, relation_trio::relation_trio, value_relation,
16057         value_relation::value_relation, pe_min): Likewise.
16058         * range-op-float.cc (range_operator_float::rv_fold,
16059         frange_arithmetic, foperator_unordered_equal::op1_range,
16060         foperator_div::rv_fold): Likewise.
16061         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
16062         * value-relation.cc (equiv_oracle::query_relation,
16063         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
16064         value_relation::apply_transitive, relation_chain_head::find_relation,
16065         dom_oracle::query_relation, dom_oracle::find_relation_block,
16066         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
16067         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
16068         create_possibly_reversed_range, adjust_op1_for_overflow,
16069         operator_mult::wi_fold, operator_exact_divide::op1_range,
16070         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
16071         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
16072         range_op_lshift_tests): Likewise.
16074 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
16076         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
16077         (move_callee_saved_registers): Detect the bug condition early.
16079 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
16081         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
16082         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
16083         (V_2REG_ALT): New.
16084         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
16085         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
16086         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
16087         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
16088         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
16090 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
16092         PR tree-optimization/109176
16093         * tree-vect-generic.cc (expand_vector_condition): If a has
16094         vector boolean type and is a comparison, also check if both
16095         the comparison and VEC_COND_EXPR could be successfully expanded
16096         individually.
16098 2023-03-23  Pan Li  <pan2.li@intel.com>
16099             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16101         PR target/108654
16102         PR target/108185
16103         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
16104         for vector mask modes.
16105         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
16106         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
16108 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
16110         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
16112 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16114         PR target/109244
16115         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
16116         (emit_vlmax_op): Ditto.
16117         * config/riscv/riscv-v.cc (get_sew): New function.
16118         (emit_vlmax_vsetvl): Adapt function.
16119         (emit_pred_op): Ditto.
16120         (emit_vlmax_op): Ditto.
16121         (emit_nonvlmax_op): Ditto.
16122         (legitimize_move): Fix LRA ICE.
16123         (gen_no_side_effects_vsetvl_rtx): Adapt function.
16124         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
16125         (@mov<VB:mode><P:mode>_lra): Ditto.
16126         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
16127         (*mov<VB:mode><P:mode>_lra): Ditto.
16129 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16131         PR target/109228
16132         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
16133         __riscv_vlenb support.
16134         (BASE): Ditto.
16135         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16136         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
16137         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
16138         (SHAPE): Ditto.
16139         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16140         * config/riscv/riscv-vector-builtins.cc: Ditto.
16142 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16143             kito-cheng  <kito.cheng@sifive.com>
16145         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
16146         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
16147         (pass_vsetvl::need_vsetvl): Fix bugs.
16148         (pass_vsetvl::backward_demand_fusion): Fix bugs.
16149         (pass_vsetvl::demand_fusion): Fix bugs.
16150         (eliminate_insn): Fix bugs.
16151         (insert_vsetvl): Ditto.
16152         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
16153         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
16154         * config/riscv/vector.md: Ditto.
16156 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16157             kito-cheng  <kito.cheng@sifive.com>
16159         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
16160         * config/riscv/vector-iterators.md (nmsac): Ditto.
16161         (nmsub): Ditto.
16162         (msac): Ditto.
16163         (msub): Ditto.
16164         (nmadd): Ditto.
16165         (nmacc): Ditto.
16166         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
16167         (@pred_mul_plus<mode>): Ditto.
16168         (*pred_madd<mode>): Ditto.
16169         (*pred_macc<mode>): Ditto.
16170         (*pred_mul_plus<mode>): Ditto.
16171         (@pred_mul_plus<mode>_scalar): Ditto.
16172         (*pred_madd<mode>_scalar): Ditto.
16173         (*pred_macc<mode>_scalar): Ditto.
16174         (*pred_mul_plus<mode>_scalar): Ditto.
16175         (*pred_madd<mode>_extended_scalar): Ditto.
16176         (*pred_macc<mode>_extended_scalar): Ditto.
16177         (*pred_mul_plus<mode>_extended_scalar): Ditto.
16178         (@pred_minus_mul<mode>): Ditto.
16179         (*pred_<madd_nmsub><mode>): Ditto.
16180         (*pred_nmsub<mode>): Ditto.
16181         (*pred_<macc_nmsac><mode>): Ditto.
16182         (*pred_nmsac<mode>): Ditto.
16183         (*pred_mul_<optab><mode>): Ditto.
16184         (*pred_minus_mul<mode>): Ditto.
16185         (@pred_mul_<optab><mode>_scalar): Ditto.
16186         (@pred_minus_mul<mode>_scalar): Ditto.
16187         (*pred_<madd_nmsub><mode>_scalar): Ditto.
16188         (*pred_nmsub<mode>_scalar): Ditto.
16189         (*pred_<macc_nmsac><mode>_scalar): Ditto.
16190         (*pred_nmsac<mode>_scalar): Ditto.
16191         (*pred_mul_<optab><mode>_scalar): Ditto.
16192         (*pred_minus_mul<mode>_scalar): Ditto.
16193         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
16194         (*pred_nmsub<mode>_extended_scalar): Ditto.
16195         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
16196         (*pred_nmsac<mode>_extended_scalar): Ditto.
16197         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
16198         (*pred_minus_mul<mode>_extended_scalar): Ditto.
16199         (*pred_<madd_msub><mode>): Ditto.
16200         (*pred_<macc_msac><mode>): Ditto.
16201         (*pred_<madd_msub><mode>_scalar): Ditto.
16202         (*pred_<macc_msac><mode>_scalar): Ditto.
16203         (@pred_neg_mul_<optab><mode>): Ditto.
16204         (@pred_mul_neg_<optab><mode>): Ditto.
16205         (*pred_<nmadd_msub><mode>): Ditto.
16206         (*pred_<nmsub_nmadd><mode>): Ditto.
16207         (*pred_<nmacc_msac><mode>): Ditto.
16208         (*pred_<nmsac_nmacc><mode>): Ditto.
16209         (*pred_neg_mul_<optab><mode>): Ditto.
16210         (*pred_mul_neg_<optab><mode>): Ditto.
16211         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
16212         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
16213         (*pred_<nmadd_msub><mode>_scalar): Ditto.
16214         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
16215         (*pred_<nmacc_msac><mode>_scalar): Ditto.
16216         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
16217         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
16218         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
16219         (@pred_widen_neg_mul_<optab><mode>): Ditto.
16220         (@pred_widen_mul_neg_<optab><mode>): Ditto.
16221         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
16222         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
16224 2023-03-23  liuhongt  <hongtao.liu@intel.com>
16226         * builtins.cc (builtin_memset_read_str): Replace
16227         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
16228         (builtin_memset_gen_str): Ditto.
16229         * config/i386/i386-expand.cc
16230         (ix86_convert_const_wide_int_to_broadcast): Replace
16231         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
16232         (ix86_expand_vector_move): Ditto.
16233         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
16234         Removed.
16235         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
16236         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
16237         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
16238         * doc/tm.texi.in: Ditto.
16239         * target.def: Ditto.
16241 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
16243         * lra.cc (lra): Do not repeat inheritance and live range splitting
16244         when asm error is found.
16246 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
16248         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
16249         (gcn_expand_dpp_distribute_even_insn)
16250         (gcn_expand_dpp_distribute_odd_insn): Declare.
16251         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
16252         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
16253         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
16254         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
16255         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
16256         (fms<mode>4_negop2): New patterns.
16257         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
16258         (gcn_expand_dpp_distribute_even_insn)
16259         (gcn_expand_dpp_distribute_odd_insn): New functions.
16260         * config/gcn/gcn.md: Add entries to unspec enum.
16262 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
16264         PR tree-optimization/109008
16265         * value-range.cc (frange::set): Add nan_state argument.
16266         * value-range.h (class nan_state): New.
16267         (frange::get_nan_state): New.
16269 2023-03-22  Martin Liska  <mliska@suse.cz>
16271         * configure: Regenerate.
16273 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
16275         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
16276         to variants.
16278 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
16280         PR tree-optimization/109192
16281         * gimple-range-gori.cc (gori_compute::compute_operand_range):
16282         Terminate gori calculations if a relation is not relevant.
16283         * value-relation.h (value_relation::set_relation): Allow
16284         equality between op1 and op2 if they are the same.
16286 2023-03-21  Richard Biener  <rguenther@suse.de>
16288         PR tree-optimization/109219
16289         * tree-vect-loop.cc (vectorizable_reduction): Check
16290         slp_node, not STMT_SLP_TYPE.
16291         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
16292         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
16293         Remove assertion on STMT_SLP_TYPE.
16295 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
16297         PR tree-optimization/109215
16298         * tree.h (enum special_array_member): Adjust comments for int_0
16299         and trail_0.
16300         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
16301         has zero sized element type and the array has variable number of
16302         elements or constant one or more elements.
16303         (component_ref_size): Adjust comments, formatting fix.
16305 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16307         * configure.ac: Add check for the Texinfo 6.8
16308         CONTENTS_OUTPUT_LOCATION customization variable and set it if
16309         supported.
16310         * configure: Regenerate.
16311         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
16312         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
16313         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
16314         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
16316 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16318         * doc/extend.texi: Associate use_hazard_barrier_return index
16319         entry with its attribute.
16320         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
16321         its attribute
16323 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16325         * doc/implement-c.texi: Remove usage of @gol.
16326         * doc/invoke.texi: Ditto.
16327         * doc/sourcebuild.texi: Ditto.
16328         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
16329         texinfo.tex versions, the bug it was working around appears to
16330         be gone.
16332 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16334         * doc/include/texinfo.tex: Update to 2023-01-17.19.
16336 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16338         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
16339         @enddefbuiltin for defining built-in functions.
16340         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
16341         places where it should be used.
16343 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16345         * doc/extend.texi (Formatted Output Function Checking): New
16346         subsection for  grouping together printf et al.
16347         (Exception handling) Fix missing @ sign before copyright
16348         header, which lead to the copyright line leaking into
16349         '(gcc)Exception handling'.
16350         * doc/gcc.texi: Set document language to en_US.
16351         (@copying): Wrap front cover texts in quotations, move in manual
16352         description text.
16354 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
16356         * doc/gcc.texi: Add the Indices appendix, to make texinfo
16357         generate nice indices overview page.
16359 2023-03-21  Richard Biener  <rguenther@suse.de>
16361         PR tree-optimization/109170
16362         * gimple-range-op.cc (cfn_pass_through_arg1): New.
16363         (gimple_range_op_handler::maybe_builtin_call): Handle
16364         __builtin_expect via cfn_pass_through_arg1.
16366 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
16368         PR target/109067
16369         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
16370         (init_float128_ieee): Delete code to switch complex multiply and divide
16371         for long double.
16372         (complex_multiply_builtin_code): New helper function.
16373         (complex_divide_builtin_code): Likewise.
16374         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
16375         of complex 128-bit multiply and divide built-in functions.
16377 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
16379         PR target/109178
16380         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
16382 2023-03-19  Jonny Grant  <jg@jguk.org>
16384         * doc/extend.texi (Common Function Attributes) <nonnull>:
16385         Correct typo.
16387 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
16389         PR rtl-optimization/109179
16390         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
16391         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
16393 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
16395         PR target/105554
16396         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
16397         to false.
16398         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
16399         to allocate_struct_function instead of false.
16400         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
16401         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
16402         push_struct_function.  Call targetm.target_option.relayout_function
16403         after it.
16404         (tree_function_versioning): Formatting fix.
16406 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
16408         * lra-constraints.cc: Include hooks.h.
16409         (combine_reload_insn): New function.
16410         (lra_constraints): Call it.
16412 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16413             kito-cheng  <kito.cheng@sifive.com>
16415         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
16416         as legitimate value.
16417         * config/riscv/riscv-vector-builtins.cc
16418         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
16419         (function_expander::use_widen_ternop_insn): Ditto.
16420         * config/riscv/vector.md (@vundefined<mode>): New pattern.
16421         (pred_mul_<optab><mode>_undef_merge): Remove.
16422         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
16423         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
16424         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
16425         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
16427 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16429         PR target/109092
16430         * config/riscv/riscv.md: Fix subreg bug.
16432 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
16434         PR middle-end/108685
16435         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
16436         use its loop_father rather than BODY_BB's loop_father.
16437         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
16438         If broken_loop with ordered > collapse and at least one of those
16439         extra loops aren't guaranteed to have at least one iteration, change
16440         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
16441         loop_father to l0_bb's loop_father rather than l1_bb's.
16443 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
16445         PR plugins/108634
16446         * gdbhooks.py (TreePrinter.to_string): Wrap
16447         gdb.parse_and_eval('tree_code_type') in a try block, parse
16448         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
16449         raises exception.  Update comments for the recent tree_code_type
16450         changes.
16452 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
16454         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
16455         issues.  Add more line breaks to example so it doesn't overflow
16456         the margins.
16458 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
16460         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
16461         line breaks in examples.
16462         <malloc>: Fix bad line breaks in running text, also copy-edit
16463         for consistency.
16464         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
16465         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
16466         @gol.
16467         (C++ Dialect Options) <-fcontracts>: Add line break in example.
16468         <-Wctad-maybe-unsupported>: Likewise.
16469         <-Winvalid-constexpr>: Likewise.
16470         (Warning Options) <-Wdangling-pointer>: Likewise.
16471         <-Winterference-size>: Likewise.
16472         <-Wvla-parameter>: Likewise.
16473         (Static Analyzer Options): Fix bad line breaks in running text,
16474         plus add some missing markup.
16475         (Optimize Options) <openacc-privatization>: Fix more bad line
16476         breaks in running text.
16478 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
16480         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
16481         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
16482         (expand_vec_perm_2perm_pblendv): Ditto.
16484 2023-03-16  Martin Liska  <mliska@suse.cz>
16486         PR middle-end/106133
16487         * gcc.cc (driver_handle_option): Use x_main_input_basename
16488         if x_dump_base_name is null.
16489         * opts.cc (common_handle_option): Likewise.
16491 2023-03-16  Richard Biener  <rguenther@suse.de>
16493         PR tree-optimization/109123
16494         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
16495         Do not emit -Wuse-after-free late.
16496         (pass_waccess::check_call): Always check call pointer uses.
16498 2023-03-16  Richard Biener  <rguenther@suse.de>
16500         PR tree-optimization/109141
16501         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
16502         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
16503         out from ...
16504         (renumber_gimple_stmt_uids): ... here and
16505         (renumber_gimple_stmt_uids_in_blocks): ... here.
16506         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
16507         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
16508         to PHIs.
16509         (pass_waccess::check_pointer_uses): Process all PHIs.
16511 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
16513         PR analyzer/109097
16514         * diagnostic-format-sarif.cc (class sarif_invocation): New.
16515         (class sarif_ice_notification): New.
16516         (sarif_builder::m_invocation_obj): New field.
16517         (sarif_invocation::add_notification_for_ice): New.
16518         (sarif_invocation::prepare_to_flush): New.
16519         (sarif_ice_notification::sarif_ice_notification): New.
16520         (sarif_builder::sarif_builder): Add m_invocation_obj.
16521         (sarif_builder::end_diagnostic): Special-case DK_ICE and
16522         DK_ICE_NOBT.
16523         (sarif_builder::flush_to_file): Call prepare_to_flush on
16524         m_invocation_obj.  Pass the latter to make_top_level_object.
16525         (sarif_builder::make_result_object): Move creation of "locations"
16526         array to...
16527         (sarif_builder::make_locations_arr): ...this new function.
16528         (sarif_builder::make_top_level_object): Add "invocation_obj" param
16529         and pass it to make_run_object.
16530         (sarif_builder::make_run_object): Add "invocation_obj" param and
16531         use it.
16532         (sarif_ice_handler): New callback.
16533         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
16534         * diagnostic.cc (diagnostic_initialize): Initialize new field
16535         "ice_handler_cb".
16536         (diagnostic_action_after_output): If it is set, make one attempt
16537         to call ice_handler_cb.
16538         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
16540 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
16542         * config/i386/i386-expand.cc (expand_vec_perm_blend):
16543         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
16544         and fix V2HImode handling.
16545         (expand_vec_perm_1): Try to emit BLEND instruction
16546         before MOVSS/MOVSD.
16547         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
16549 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
16551         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
16553 2023-03-15  Richard Biener  <rguenther@suse.de>
16555         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
16556         Do not diagnose clobbers.
16558 2023-03-15  Richard Biener  <rguenther@suse.de>
16560         PR tree-optimization/109139
16561         * tree-ssa-live.cc (remove_unused_locals): Look at the
16562         base address for unused decls on the LHS of .DEFERRED_INIT.
16564 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
16566         PR other/109086
16567         * builtins.cc (inline_string_cmp): Force the character
16568         difference into "result" pseudo-register, instead of reassign
16569         the pseudo-register.
16571 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16573         * config.gcc: Add thead.o to RISC-V extra_objs.
16574         * config/riscv/peephole.md: Add mempair peephole passes.
16575         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
16576         prototype.
16577         (th_mempair_operands_p): Likewise.
16578         (th_mempair_order_operands): Likewise.
16579         (th_mempair_prepare_save_restore_operands): Likewise.
16580         (th_mempair_save_restore_regs): Likewise.
16581         (th_mempair_output_move): Likewise.
16582         * config/riscv/riscv.cc (riscv_save_reg): Move code.
16583         (riscv_restore_reg): Move code.
16584         (riscv_for_each_saved_reg): Add code to emit mempair insns.
16585         * config/riscv/t-riscv: Add thead.cc.
16586         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
16587         New insn.
16588         (*th_mempair_store_<GPR:mode>2): Likewise.
16589         (*th_mempair_load_extendsidi2): Likewise.
16590         (*th_mempair_load_zero_extendsidi2): Likewise.
16591         * config/riscv/thead.cc: New file.
16593 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16595         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
16596         New constraint "th_f_fmv".
16597         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
16598         "th_r_fmv".
16599         * config/riscv/riscv.cc (riscv_split_doubleword_move):
16600         Add split code for XTheadFmv.
16601         (riscv_secondary_memory_needed): XTheadFmv does not need
16602         secondary memory.
16603         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
16604         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
16605         movdf_hardfloat_rv32.
16606         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
16607         (th_fmv_x_w): New INSN.
16608         (th_fmv_x_hw): New INSN.
16610 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16612         * config/riscv/riscv.md (maddhisi4): New expand.
16613         (msubhisi4): New expand.
16614         * config/riscv/thead.md (*th_mula<mode>): New pattern.
16615         (*th_mulawsi): New pattern.
16616         (*th_mulawsi2): New pattern.
16617         (*th_maddhisi4): New pattern.
16618         (*th_sextw_maddhisi4): New pattern.
16619         (*th_muls<mode>): New pattern.
16620         (*th_mulswsi): New pattern.
16621         (*th_mulswsi2): New pattern.
16622         (*th_msubhisi4): New pattern.
16623         (*th_sextw_msubhisi4): New pattern.
16625 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16627         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
16628         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
16629         Add prototype.
16630         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
16631         XTheadCondMov.
16632         (riscv_expand_conditional_move): New function.
16633         (riscv_expand_conditional_move_onesided): New function.
16634         * config/riscv/riscv.md: Add support for XTheadCondMov.
16635         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
16636         support for XTheadCondMov.
16637         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
16639 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16641         * config/riscv/bitmanip.md (clzdi2): New expand.
16642         (clzsi2): New expand.
16643         (ctz<mode>2): New expand.
16644         (popcount<mode>2): New expand.
16645         (<bitmanip_optab>si2): Rename INSN.
16646         (*<bitmanip_optab>si2): Hide INSN name.
16647         (<bitmanip_optab>di2): Rename INSN.
16648         (*<bitmanip_optab>di2): Hide INSN name.
16649         (rotrsi3): Remove INSN.
16650         (rotr<mode>3): Add expand.
16651         (*rotrsi3): New INSN.
16652         (rotrdi3): Rename INSN.
16653         (*rotrdi3): Hide INSN name.
16654         (rotrsi3_sext): Rename INSN.
16655         (*rotrsi3_sext): Hide INSN name.
16656         (bswap<mode>2): Remove INSN.
16657         (bswapdi2): Add expand.
16658         (bswapsi2): Add expand.
16659         (*bswap<mode>2): Hide INSN name.
16660         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
16661         extraction.
16662         * config/riscv/riscv.md (extv<mode>): New expand.
16663         (extzv<mode>): New expand.
16664         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
16665         (*th_ext<mode>): New INSN.
16666         (*th_extu<mode>): New INSN.
16667         (*th_clz<mode>2): New INSN.
16668         (*th_rev<mode>2): New INSN.
16670 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16672         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
16673         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
16675 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16677         * config/riscv/riscv.md: Include thead.md
16678         * config/riscv/thead.md: New file.
16680 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16682         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
16684 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
16686         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
16687         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
16688         (MASK_XTHEADBB): New.
16689         (MASK_XTHEADBS): New.
16690         (MASK_XTHEADCMO): New.
16691         (MASK_XTHEADCONDMOV): New.
16692         (MASK_XTHEADFMEMIDX): New.
16693         (MASK_XTHEADFMV): New.
16694         (MASK_XTHEADINT): New.
16695         (MASK_XTHEADMAC): New.
16696         (MASK_XTHEADMEMIDX): New.
16697         (MASK_XTHEADMEMPAIR): New.
16698         (MASK_XTHEADSYNC): New.
16699         (TARGET_XTHEADBA): New.
16700         (TARGET_XTHEADBB): New.
16701         (TARGET_XTHEADBS): New.
16702         (TARGET_XTHEADCMO): New.
16703         (TARGET_XTHEADCONDMOV): New.
16704         (TARGET_XTHEADFMEMIDX): New.
16705         (TARGET_XTHEADFMV): New.
16706         (TARGET_XTHEADINT): New.
16707         (TARGET_XTHEADMAC): New.
16708         (TARGET_XTHEADMEMIDX): New.
16709         (TARGET_XTHEADMEMPAIR): new.
16710         (TARGET_XTHEADSYNC): New.
16711         * config/riscv/riscv.opt: Add riscv_xthead_subext.
16713 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
16715         PR target/109117
16716         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
16717         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
16718         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
16720 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
16722         PR target/109109
16723         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
16724         when lo is equal to dhi and hi is a MEM which uses dlo register.
16726 2023-03-14  Martin Jambor  <mjambor@suse.cz>
16728         PR ipa/107925
16729         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
16730         global0 instead of zeroing when it does not have as many counts as
16731         it should.
16733 2023-03-14  Martin Jambor  <mjambor@suse.cz>
16735         PR ipa/107925
16736         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
16737         ipa count, remove assert, lenient_count_portion_handling, dump
16738         also orig_node_count.
16740 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
16742         * config/i386/i386-expand.cc (expand_vec_perm_movs):
16743         Handle V2SImode for TARGET_MMX_WITH_SSE.
16744         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
16745         using V2FI mode iterator to handle both V2SI and V2SF modes.
16747 2023-03-14  Sam James  <sam@gentoo.org>
16749         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
16750         including <sstream> earlier.
16751         * system.h: Add INCLUDE_SSTREAM.
16753 2023-03-14  Richard Biener  <rguenther@suse.de>
16755         * tree-ssa-live.cc (remove_unused_locals): Do not treat
16756         the .DEFERRED_INIT of a variable as use, instead remove
16757         that if it is the only use.
16759 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
16761         PR rtl-optimization/107762
16762         * expr.cc (emit_group_store): Revert latest change.
16764 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
16766         PR tree-optimization/109005
16767         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
16768         aggregate type check.
16770 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
16772         PR tree-optimization/109115
16773         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
16774         r.upper_bound () on r.undefined_p () range.
16776 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
16778         PR tree-optimization/106896
16779         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
16780         implementatoin with probability_in; avoid some asserts.
16782 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
16784         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
16786 2023-03-13  Sean Bright  <sean@seanbright.com>
16788         * doc/invoke.texi (Warning Options): Remove errant 'See'
16789         before @xref.
16791 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
16793         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
16794         REG_OK_FOR_BASE_P): Remove.
16796 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16798         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
16799         (=vd,vd,vr,vr): Ditto.
16800         * config/riscv/vector.md: Ditto.
16802 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16804         * config/riscv/riscv-vector-builtins.cc
16805         (function_expander::use_compare_insn): Add operand predicate check.
16807 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16809         * config/riscv/vector.md: Fine tune RA constraints.
16811 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
16813         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
16814         hsaco assemble/link.
16816 2023-03-13  Richard Biener  <rguenther@suse.de>
16818         PR tree-optimization/109046
16819         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
16820         piecewise complex loads.
16822 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
16824         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
16825         (aarch64_bf16_ptr_type_node): Adjust comment.
16826         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
16827         bfloat16_type_node rather than aarch64_bf16_type_node.
16828         (aarch64_libgcc_floating_mode_supported_p,
16829         aarch64_scalar_mode_supported_p): Also support BFmode.
16830         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
16831         (aarch64_invalid_binary_op): Remove BFmode related rejections.
16832         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
16833         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
16834         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
16835         aarch64_bf16_type_node.
16836         (aarch64_init_simd_builtin_types): Likewise.
16837         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
16838         which is created in tree.cc already.
16839         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
16841 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
16843         PR middle-end/109031
16844         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
16845         ensure that the type of x is as wide or wider than the type of a.
16847 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
16849         PR target/108583
16850         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
16851         (*bitmask_shift_plus<mode>): New.
16852         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
16853         (@aarch64_bitmask_udiv<mode>3): Remove.
16854         * config/aarch64/aarch64.cc
16855         (aarch64_vectorize_can_special_div_by_constant,
16856         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
16857         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
16858         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
16860 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
16862         PR target/108583
16863         * target.def (preferred_div_as_shifts_over_mult): New.
16864         * doc/tm.texi.in: Document it.
16865         * doc/tm.texi: Regenerate.
16866         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
16867         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
16868         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
16870 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
16871             Richard Sandiford  <richard.sandiford@arm.com>
16873         PR target/108583
16874         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
16875         single use.
16877 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
16878             Andrew MacLeod  <amacleod@redhat.com>
16880         PR target/108583
16881         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
16882         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
16883         Use it.
16884         (gimple_range_op_handler::maybe_non_standard): New.
16885         * range-op.cc (class operator_widen_plus_signed,
16886         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
16887         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
16888         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
16889         operator_widen_mult_unsigned::wi_fold,
16890         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
16891         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
16892         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
16893         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
16895 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
16897         PR target/108583
16898         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
16899         * doc/tm.texi.in: Likewise.
16900         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
16901         * expmed.cc (expand_divmod): Likewise.
16902         * expmed.h (expand_divmod): Likewise.
16903         * expr.cc (force_operand, expand_expr_divmod): Likewise.
16904         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
16905         * target.def (can_special_div_by_const): Remove.
16906         * target.h: Remove tree-core.h include
16907         * targhooks.cc (default_can_special_div_by_const): Remove.
16908         * targhooks.h (default_can_special_div_by_const): Remove.
16909         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
16910         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
16911         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
16913 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
16915         * doc/install.texi2html: Fix issue number typo in comment.
16917 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
16919         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
16920         bool.
16922 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
16924         * doc/invoke.texi (Optimize Options):  Add markup to
16925         description of asan-kernel-mem-intrinsic-prefix, and clarify
16926         wording slightly.
16928 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
16930         * doc/extend.texi (Named Address Spaces): Drop a redundant link
16931         to AVR-LibC.
16933 2023-03-11  Jeff Law  <jlaw@ventanamicro>
16935         PR web/88860
16936         * doc/extend.texi: Clarify Attribute Syntax a bit.
16938 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
16940         * doc/install.texi (Prerequisites): Suggest using newer versions
16941         of Texinfo.
16942         (Final install): Clean up and modernize discussion of how to
16943         build or obtain the GCC manuals.
16944         * doc/install.texi2html: Update comment to point to the PR instead
16945         of "makeinfo 4.7 brokenness" (it's not specific to that version).
16947 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
16949         PR target/107703
16950         * optabs.cc (expand_fix): For conversions from BFmode to integral,
16951         use shifts to convert it to SFmode first and then convert SFmode
16952         to integral.
16954 2023-03-10  Andrew Pinski  <apinski@marvell.com>
16956         * config/aarch64/aarch64.md: Add a new define_split
16957         to help combine.
16959 2023-03-10  Richard Biener  <rguenther@suse.de>
16961         * tree-ssa-structalias.cc (solve_graph): Immediately
16962         iterate self-cycles.
16964 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
16966         PR tree-optimization/109008
16967         * range-op-float.cc (float_widen_lhs_range): If not
16968         -frounding-math and not IBM double double format, extend lhs
16969         range just by 0.5ulp rather than 1ulp in each direction.
16971 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
16973         PR target/107998
16974         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
16975         $tmake_file.
16976         * config/i386/t-cygwin-w64: Remove.
16978 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
16980         PR plugins/108634
16981         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
16982         C++14, don't declare as extern const arrays.
16983         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
16984         static constexpr member arrays for C++11 or C++14.
16985         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
16986         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
16987         (TREE_CODE_LENGTH): For C++11 or C++14 use
16988         tree_code_length_tmpl <0>::tree_code_length instead of
16989         tree_code_length.
16990         * tree.cc (tree_code_type, tree_code_length): Remove.
16992 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
16994         PR other/108464
16995         * common.opt (fcanon-prefix-map): New option.
16996         * opts.cc: Include file-prefix-map.h.
16997         (flag_canon_prefix_map): New variable.
16998         (common_handle_option): Handle OPT_fcanon_prefix_map.
16999         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
17000         * file-prefix-map.h (flag_canon_prefix_map): Declare.
17001         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
17002         member.
17003         (add_prefix_map): Initialize canonicalize member from
17004         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
17005         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
17006         use lrealpath result only for map->canonicalize map entries.
17007         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
17008         * opts-global.cc (handle_common_deferred_options): Clear
17009         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
17010         * doc/invoke.texi (-fcanon-prefix-map): Document.
17011         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
17012         see also for -fcanon-prefix-map.
17013         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
17015 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
17017         PR c/108079
17018         * cgraphunit.cc (check_global_declaration): Don't warn for unused
17019         variables which have OPT_Wunused_variable warning suppressed.
17021 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
17023         PR tree-optimization/109008
17024         * range-op-float.cc (float_widen_lhs_range): If lb is
17025         minimum representable finite number or ub is maximum
17026         representable finite number, instead of widening it to
17027         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
17028         Temporarily clear flag_finite_math_only when canonicalizing
17029         the widened range.
17031 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17033         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
17034         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
17035         (gimple_fold_builtin):  Ditto.
17036         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
17037         (class vleff): Ditto.
17038         (BASE): Ditto.
17039         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17040         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
17041         (vleff): Ditto.
17042         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
17043         (struct fault_load_def): Ditto.
17044         (SHAPE): Ditto.
17045         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17046         * config/riscv/riscv-vector-builtins.cc
17047         (rvv_arg_type_info::get_tree_type): Add size_ptr.
17048         (gimple_folder::gimple_folder): New class.
17049         (gimple_folder::fold): Ditto.
17050         (gimple_fold_builtin): New function.
17051         (get_read_vl_instance): Ditto.
17052         (get_read_vl_decl): Ditto.
17053         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
17054         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
17055         (get_read_vl_instance): New function.
17056         (get_read_vl_decl):  Ditto.
17057         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
17058         (read_vl_insn_p): Ditto.
17059         (available_occurrence_p): Ditto.
17060         (backward_propagate_worthwhile_p): Ditto.
17061         (gen_vsetvl_pat): Adapt for vleff support.
17062         (get_forward_read_vl_insn): New function.
17063         (get_backward_fault_first_load_insn): Ditto.
17064         (source_equal_p): Adapt for vleff support.
17065         (first_ratio_invalid_for_second_sew_p): Remove.
17066         (first_ratio_invalid_for_second_lmul_p): Ditto.
17067         (first_lmul_less_than_second_lmul_p): Ditto.
17068         (first_ratio_less_than_second_ratio_p): Ditto.
17069         (support_relaxed_compatible_p): New function.
17070         (vector_insn_info::operator>): Remove.
17071         (vector_insn_info::operator>=): Refine.
17072         (vector_insn_info::parse_insn): Adapt for vleff support.
17073         (vector_insn_info::compatible_p): Ditto.
17074         (vector_insn_info::update_fault_first_load_avl): New function.
17075         (pass_vsetvl::transfer_after): Adapt for vleff support.
17076         (pass_vsetvl::demand_fusion): Ditto.
17077         (pass_vsetvl::cleanup_insns): Ditto.
17078         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
17079         redundant condtions.
17080         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
17081         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
17082         * config/riscv/riscv.md: Adapt for vleff support.
17083         * config/riscv/t-riscv: Ditto.
17084         * config/riscv/vector-iterators.md: New iterator.
17085         * config/riscv/vector.md (read_vlsi): New pattern.
17086         (read_vldi_zero_extend): Ditto.
17087         (@pred_fault_load<mode>): Ditto.
17089 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17091         * config/riscv/riscv-vector-builtins.cc
17092         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
17093         (function_expander::use_widen_ternop_insn): Ditto.
17094         * optabs.cc (maybe_gen_insn): Extend nops handling.
17096 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17098         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
17099         patterns according to RVV ISA.
17100         * config/riscv/vector-iterators.md: New iterators.
17101         * config/riscv/vector.md
17102         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
17103         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
17104         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
17105         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
17106         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
17107         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
17108         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
17109         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
17110         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
17111         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
17112         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
17113         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
17114         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
17115         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
17117 2023-03-10  Michael Collison  <collison@rivosinc.com>
17119         * tree-vect-loop-manip.cc (vect_do_peeling): Use
17120         result of constant_lower_bound instead of vf for the lower
17121         bound of the epilog loop trip count.
17123 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
17125         * passes.cc (emergency_dump_function): Finish graph generation.
17127 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
17129         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
17130         and bottom bit only.
17132 2023-03-09  Andrew Pinski  <apinski@marvell.com>
17134         PR tree-optimization/108980
17135         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
17136         Reorgnize the call to warning for not strict flexible arrays
17137         to be before the check of warned.
17139 2023-03-09  Jason Merrill  <jason@redhat.com>
17141         * doc/extend.texi: Comment out __is_deducible docs.
17143 2023-03-09  Jason Merrill  <jason@redhat.com>
17145         PR c++/105841
17146         * doc/extend.texi (Type Traits):: Document __is_deducible.
17148 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
17150         PR driver/108865
17151         * config.host: add object for x86_64-*-mingw*.
17152         * config/i386/sym-mingw32.cc: dummy file to attach
17153         symbol.
17154         * config/i386/utf8-mingw32.rc: windres resource file.
17155         * config/i386/winnt-utf8.manifest: XML manifest to
17156         enable UTF-8.
17157         * config/i386/x-mingw32: reference to x-mingw32-utf8.
17158         * config/i386/x-mingw32-utf8: Makefile fragment to
17159         embed UTF-8 manifest.
17161 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
17163         * lra-constraints.cc (process_alt_operands): Use operand modes for
17164         clobbered regs instead of the biggest access mode.
17166 2023-03-09  Richard Biener  <rguenther@suse.de>
17168         PR middle-end/108995
17169         * fold-const.cc (extract_muldiv_1): Avoid folding
17170         (CST * b) / CST2 when sanitizing overflow and we rely on
17171         overflow being undefined.
17173 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
17174             Richard Biener  <rguenther@suse.de>
17176         PR tree-optimization/109008
17177         * range-op-float.cc (float_widen_lhs_range): New function.
17178         (foperator_plus::op1_range, foperator_minus::op1_range,
17179         foperator_minus::op2_range, foperator_mult::op1_range,
17180         foperator_div::op1_range, foperator_div::op2_range): Use it.
17182 2023-03-07  Jonathan Grant  <jg@jguk.org>
17184         PR sanitizer/81649
17185         * doc/invoke.texi (Instrumentation Options):  Clarify
17186         LeakSanitizer behavior.
17188 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
17190         * doc/install.texi (Prerequisites): Add link to gmplib.org.
17192 2023-03-07  Pan Li  <pan2.li@intel.com>
17193             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17195         PR target/108185
17196         PR target/108654
17197         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
17198         modes.
17199         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
17200         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
17201         * genmodes.cc (adj_precision): New.
17202         (ADJUST_PRECISION): New.
17203         (emit_mode_adjustments): Handle ADJUST_PRECISION.
17205 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
17207         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
17209 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
17211         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
17212         {s|u}{max|min} in QI, HI and DI modes.
17213         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
17214         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
17215         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
17216         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
17217         saved in SGPRs.
17219 2023-03-06  Richard Biener  <rguenther@suse.de>
17221         PR tree-optimization/109025
17222         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
17223         the inner LC PHI use is the inner loop PHI latch definition
17224         before classifying an outer PHI as double reduction.
17226 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
17228         PR target/108429
17229         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
17230         generic.
17231         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
17232         (X86_TUNE_USE_SCATTER): Likewise.
17234 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
17236         PR target/109000
17237         * config/loongarch/loongarch.h (FP_RETURN): Use
17238         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
17239         (UNITS_PER_FP_ARG): Likewise.
17241 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17243         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
17244         (pass_vsetvl::backward_demand_fusion): Ditto.
17246 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
17247             SiYu Wu  <siyu@isrc.iscas.ac.cn>
17249         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
17250         instructions.
17251         (riscv_sm3p1_<mode>): New.
17252         (riscv_sm4ed_<mode>): New.
17253         (riscv_sm4ks_<mode>): New.
17254         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
17255         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
17256         ZKSH's built-in functions.
17258 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
17259             SiYu Wu  <siyu@isrc.iscas.ac.cn>
17261         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
17262         (riscv_sha256sig1_<mode>): New.
17263         (riscv_sha256sum0_<mode>): New.
17264         (riscv_sha256sum1_<mode>): New.
17265         (riscv_sha512sig0h): New.
17266         (riscv_sha512sig0l): New.
17267         (riscv_sha512sig1h): New.
17268         (riscv_sha512sig1l): New.
17269         (riscv_sha512sum0r): New.
17270         (riscv_sha512sum1r): New.
17271         (riscv_sha512sig0): New.
17272         (riscv_sha512sig1): New.
17273         (riscv_sha512sum0): New.
17274         (riscv_sha512sum1): New.
17275         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
17276         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
17277         built-in functions.
17278         (DIRECT_BUILTIN): Add new.
17280 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
17281             SiYu Wu  <siyu@isrc.iscas.ac.cn>
17283         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
17284         (DsA): New.
17285         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
17286         (riscv_aes32dsmi): New.
17287         (riscv_aes64ds): New.
17288         (riscv_aes64dsm): New.
17289         (riscv_aes64im): New.
17290         (riscv_aes64ks1i): New.
17291         (riscv_aes64ks2): New.
17292         (riscv_aes32esi): New.
17293         (riscv_aes32esmi): New.
17294         (riscv_aes64es): New.
17295         (riscv_aes64esm): New.
17296         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
17297         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
17298         ZKNE's built-in functions.
17300 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
17301             SiYu Wu  <siyu@isrc.iscas.ac.cn>
17303         * config/riscv/bitmanip.md: Add ZBKB's instructions.
17304         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
17305         * config/riscv/riscv.md: Add new type for crypto instructions.
17306         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
17307         description file.
17308         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
17309         extension's built-in function file.
17311 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
17312             SiYu Wu  <siyu@isrc.iscas.ac.cn>
17314         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
17315         (RISCV_FTYPE_NAME3): New.
17316         (RISCV_ATYPE_QI): New.
17317         (RISCV_ATYPE_HI): New.
17318         (RISCV_FTYPE_ATYPES2): New.
17319         (RISCV_FTYPE_ATYPES3): New.
17320         * config/riscv/riscv-ftypes.def (2): New.
17321         (3): New.
17323 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
17325         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
17326         use exact_log2().
17328 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17329             kito-cheng  <kito.cheng@sifive.com>
17331         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
17332         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
17333         (riscv_register_pragmas): Add builtin function check call.
17334         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
17335         (check_builtin_call): New function.
17336         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
17337         (class vreinterpret): Ditto.
17338         (class vlmul_ext): Ditto.
17339         (class vlmul_trunc): Ditto.
17340         (class vset): Ditto.
17341         (class vget): Ditto.
17342         (BASE): Ditto.
17343         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17344         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
17345         (vluxei16): Ditto.
17346         (vluxei32): Ditto.
17347         (vluxei64): Ditto.
17348         (vloxei8): Ditto.
17349         (vloxei16): Ditto.
17350         (vloxei32): Ditto.
17351         (vloxei64): Ditto.
17352         (vsuxei8): Ditto.
17353         (vsuxei16): Ditto.
17354         (vsuxei32): Ditto.
17355         (vsuxei64): Ditto.
17356         (vsoxei8): Ditto.
17357         (vsoxei16): Ditto.
17358         (vsoxei32): Ditto.
17359         (vsoxei64): Ditto.
17360         (vundefined): Add new intrinsic.
17361         (vreinterpret): Ditto.
17362         (vlmul_ext): Ditto.
17363         (vlmul_trunc): Ditto.
17364         (vset): Ditto.
17365         (vget): Ditto.
17366         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
17367         (struct narrow_alu_def): Ditto.
17368         (struct reduc_alu_def): Ditto.
17369         (struct vundefined_def): Ditto.
17370         (struct misc_def): Ditto.
17371         (struct vset_def): Ditto.
17372         (struct vget_def): Ditto.
17373         (SHAPE): Ditto.
17374         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17375         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
17376         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
17377         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
17378         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
17379         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
17380         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
17381         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
17382         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
17383         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
17384         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
17385         (DEF_RVV_LMUL1_OPS): Ditto.
17386         (DEF_RVV_LMUL2_OPS): Ditto.
17387         (DEF_RVV_LMUL4_OPS): Ditto.
17388         (vint16mf4_t): Ditto.
17389         (vint16mf2_t): Ditto.
17390         (vint16m1_t): Ditto.
17391         (vint16m2_t): Ditto.
17392         (vint16m4_t): Ditto.
17393         (vint16m8_t): Ditto.
17394         (vint32mf2_t): Ditto.
17395         (vint32m1_t): Ditto.
17396         (vint32m2_t): Ditto.
17397         (vint32m4_t): Ditto.
17398         (vint32m8_t): Ditto.
17399         (vint64m1_t): Ditto.
17400         (vint64m2_t): Ditto.
17401         (vint64m4_t): Ditto.
17402         (vint64m8_t): Ditto.
17403         (vuint16mf4_t): Ditto.
17404         (vuint16mf2_t): Ditto.
17405         (vuint16m1_t): Ditto.
17406         (vuint16m2_t): Ditto.
17407         (vuint16m4_t): Ditto.
17408         (vuint16m8_t): Ditto.
17409         (vuint32mf2_t): Ditto.
17410         (vuint32m1_t): Ditto.
17411         (vuint32m2_t): Ditto.
17412         (vuint32m4_t): Ditto.
17413         (vuint32m8_t): Ditto.
17414         (vuint64m1_t): Ditto.
17415         (vuint64m2_t): Ditto.
17416         (vuint64m4_t): Ditto.
17417         (vuint64m8_t): Ditto.
17418         (vint8mf4_t): Ditto.
17419         (vint8mf2_t): Ditto.
17420         (vint8m1_t): Ditto.
17421         (vint8m2_t): Ditto.
17422         (vint8m4_t): Ditto.
17423         (vint8m8_t): Ditto.
17424         (vuint8mf4_t): Ditto.
17425         (vuint8mf2_t): Ditto.
17426         (vuint8m1_t): Ditto.
17427         (vuint8m2_t): Ditto.
17428         (vuint8m4_t): Ditto.
17429         (vuint8m8_t): Ditto.
17430         (vint8mf8_t): Ditto.
17431         (vuint8mf8_t): Ditto.
17432         (vfloat32mf2_t): Ditto.
17433         (vfloat32m1_t): Ditto.
17434         (vfloat32m2_t): Ditto.
17435         (vfloat32m4_t): Ditto.
17436         (vfloat64m1_t): Ditto.
17437         (vfloat64m2_t): Ditto.
17438         (vfloat64m4_t): Ditto.
17439         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
17440         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
17441         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
17442         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
17443         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
17444         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
17445         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
17446         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
17447         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
17448         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
17449         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
17450         (DEF_RVV_LMUL1_OPS): Ditto.
17451         (DEF_RVV_LMUL2_OPS): Ditto.
17452         (DEF_RVV_LMUL4_OPS): Ditto.
17453         (DEF_RVV_TYPE_INDEX): Ditto.
17454         (required_extensions_p): Adapt for new intrinsic support/
17455         (get_required_extensions): New function.
17456         (check_required_extensions): Ditto.
17457         (unsigned_base_type_p): Remove.
17458         (rvv_arg_type_info::get_scalar_ptr_type): New function.
17459         (get_mode_for_bitsize): Remove.
17460         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
17461         (rvv_arg_type_info::get_base_vector_type): Ditto.
17462         (rvv_arg_type_info::get_function_type_index): Ditto.
17463         (DEF_RVV_BASE_TYPE): New def.
17464         (function_builder::apply_predication): New class.
17465         (function_expander::mask_mode): Ditto.
17466         (function_checker::function_checker): Ditto.
17467         (function_checker::report_non_ice): Ditto.
17468         (function_checker::report_out_of_range): Ditto.
17469         (function_checker::require_immediate): Ditto.
17470         (function_checker::require_immediate_range): Ditto.
17471         (function_checker::check): Ditto.
17472         (check_builtin_call): Ditto.
17473         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
17474         (DEF_RVV_BASE_TYPE): Ditto.
17475         (DEF_RVV_TYPE_INDEX): Ditto.
17476         (vbool64_t): Ditto.
17477         (vbool32_t): Ditto.
17478         (vbool16_t): Ditto.
17479         (vbool8_t): Ditto.
17480         (vbool4_t): Ditto.
17481         (vbool2_t): Ditto.
17482         (vbool1_t): Ditto.
17483         (vuint8mf8_t): Ditto.
17484         (vuint8mf4_t): Ditto.
17485         (vuint8mf2_t): Ditto.
17486         (vuint8m1_t): Ditto.
17487         (vuint8m2_t): Ditto.
17488         (vint8m4_t): Ditto.
17489         (vuint8m4_t): Ditto.
17490         (vint8m8_t): Ditto.
17491         (vuint8m8_t): Ditto.
17492         (vint16mf4_t): Ditto.
17493         (vuint16mf2_t): Ditto.
17494         (vuint16m1_t): Ditto.
17495         (vuint16m2_t): Ditto.
17496         (vuint16m4_t): Ditto.
17497         (vuint16m8_t): Ditto.
17498         (vint32mf2_t): Ditto.
17499         (vuint32m1_t): Ditto.
17500         (vuint32m2_t): Ditto.
17501         (vuint32m4_t): Ditto.
17502         (vuint32m8_t): Ditto.
17503         (vuint64m1_t): Ditto.
17504         (vuint64m2_t): Ditto.
17505         (vuint64m4_t): Ditto.
17506         (vuint64m8_t): Ditto.
17507         (vfloat32mf2_t): Ditto.
17508         (vfloat32m1_t): Ditto.
17509         (vfloat32m2_t): Ditto.
17510         (vfloat32m4_t): Ditto.
17511         (vfloat32m8_t): Ditto.
17512         (vfloat64m1_t): Ditto.
17513         (vfloat64m4_t): Ditto.
17514         (vector): Move it def.
17515         (scalar): Ditto.
17516         (mask): Ditto.
17517         (signed_vector): Ditto.
17518         (unsigned_vector): Ditto.
17519         (unsigned_scalar): Ditto.
17520         (vector_ptr): Ditto.
17521         (scalar_ptr): Ditto.
17522         (scalar_const_ptr): Ditto.
17523         (void): Ditto.
17524         (size): Ditto.
17525         (ptrdiff): Ditto.
17526         (unsigned_long): Ditto.
17527         (long): Ditto.
17528         (eew8_index): Ditto.
17529         (eew16_index): Ditto.
17530         (eew32_index): Ditto.
17531         (eew64_index): Ditto.
17532         (shift_vector): Ditto.
17533         (double_trunc_vector): Ditto.
17534         (quad_trunc_vector): Ditto.
17535         (oct_trunc_vector): Ditto.
17536         (double_trunc_scalar): Ditto.
17537         (double_trunc_signed_vector): Ditto.
17538         (double_trunc_unsigned_vector): Ditto.
17539         (double_trunc_unsigned_scalar): Ditto.
17540         (double_trunc_float_vector): Ditto.
17541         (float_vector): Ditto.
17542         (lmul1_vector): Ditto.
17543         (widen_lmul1_vector): Ditto.
17544         (eew8_interpret): Ditto.
17545         (eew16_interpret): Ditto.
17546         (eew32_interpret): Ditto.
17547         (eew64_interpret): Ditto.
17548         (vlmul_ext_x2): Ditto.
17549         (vlmul_ext_x4): Ditto.
17550         (vlmul_ext_x8): Ditto.
17551         (vlmul_ext_x16): Ditto.
17552         (vlmul_ext_x32): Ditto.
17553         (vlmul_ext_x64): Ditto.
17554         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
17555         (struct function_type_info): New function.
17556         (struct rvv_arg_type_info): Ditto.
17557         (class function_checker): New class.
17558         (rvv_arg_type_info::get_scalar_type): New function.
17559         (rvv_arg_type_info::get_vector_type): Ditto.
17560         (function_expander::ret_mode): New function.
17561         (function_checker::arg_mode): Ditto.
17562         (function_checker::ret_mode): Ditto.
17563         * config/riscv/t-riscv: Add generator.
17564         * config/riscv/vector-iterators.md: New iterators.
17565         * config/riscv/vector.md (vundefined<mode>): New pattern.
17566         (@vundefined<mode>): Ditto.
17567         (@vreinterpret<mode>): Ditto.
17568         (@vlmul_extx2<mode>): Ditto.
17569         (@vlmul_extx4<mode>): Ditto.
17570         (@vlmul_extx8<mode>): Ditto.
17571         (@vlmul_extx16<mode>): Ditto.
17572         (@vlmul_extx32<mode>): Ditto.
17573         (@vlmul_extx64<mode>): Ditto.
17574         (*vlmul_extx2<mode>): Ditto.
17575         (*vlmul_extx4<mode>): Ditto.
17576         (*vlmul_extx8<mode>): Ditto.
17577         (*vlmul_extx16<mode>): Ditto.
17578         (*vlmul_extx32<mode>): Ditto.
17579         (*vlmul_extx64<mode>): Ditto.
17580         * config/riscv/genrvv-type-indexer.cc: New file.
17582 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17584         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
17585         (slide1_sew64_helper): New function.
17586         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
17587         (get_unknown_min_value): Ditto.
17588         (force_vector_length_operand): Ditto.
17589         (gen_no_side_effects_vsetvl_rtx): Ditto.
17590         (get_vl_x2_rtx): Ditto.
17591         (slide1_sew64_helper): Ditto.
17592         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
17593         (class vrgather): Ditto.
17594         (class vrgatherei16): Ditto.
17595         (class vcompress): Ditto.
17596         (BASE): Ditto.
17597         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17598         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
17599         (vslidedown): Ditto.
17600         (vslide1up): Ditto.
17601         (vslide1down): Ditto.
17602         (vfslide1up): Ditto.
17603         (vfslide1down): Ditto.
17604         (vrgather): Ditto.
17605         (vrgatherei16): Ditto.
17606         (vcompress): Ditto.
17607         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
17608         (vint8mf8_t): Ditto.
17609         (vint8mf4_t): Ditto.
17610         (vint8mf2_t): Ditto.
17611         (vint8m1_t): Ditto.
17612         (vint8m2_t): Ditto.
17613         (vint8m4_t): Ditto.
17614         (vint16mf4_t): Ditto.
17615         (vint16mf2_t): Ditto.
17616         (vint16m1_t): Ditto.
17617         (vint16m2_t): Ditto.
17618         (vint16m4_t): Ditto.
17619         (vint16m8_t): Ditto.
17620         (vint32mf2_t): Ditto.
17621         (vint32m1_t): Ditto.
17622         (vint32m2_t): Ditto.
17623         (vint32m4_t): Ditto.
17624         (vint32m8_t): Ditto.
17625         (vint64m1_t): Ditto.
17626         (vint64m2_t): Ditto.
17627         (vint64m4_t): Ditto.
17628         (vint64m8_t): Ditto.
17629         (vuint8mf8_t): Ditto.
17630         (vuint8mf4_t): Ditto.
17631         (vuint8mf2_t): Ditto.
17632         (vuint8m1_t): Ditto.
17633         (vuint8m2_t): Ditto.
17634         (vuint8m4_t): Ditto.
17635         (vuint16mf4_t): Ditto.
17636         (vuint16mf2_t): Ditto.
17637         (vuint16m1_t): Ditto.
17638         (vuint16m2_t): Ditto.
17639         (vuint16m4_t): Ditto.
17640         (vuint16m8_t): Ditto.
17641         (vuint32mf2_t): Ditto.
17642         (vuint32m1_t): Ditto.
17643         (vuint32m2_t): Ditto.
17644         (vuint32m4_t): Ditto.
17645         (vuint32m8_t): Ditto.
17646         (vuint64m1_t): Ditto.
17647         (vuint64m2_t): Ditto.
17648         (vuint64m4_t): Ditto.
17649         (vuint64m8_t): Ditto.
17650         (vfloat32mf2_t): Ditto.
17651         (vfloat32m1_t): Ditto.
17652         (vfloat32m2_t): Ditto.
17653         (vfloat32m4_t): Ditto.
17654         (vfloat32m8_t): Ditto.
17655         (vfloat64m1_t): Ditto.
17656         (vfloat64m2_t): Ditto.
17657         (vfloat64m4_t): Ditto.
17658         (vfloat64m8_t): Ditto.
17659         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
17660         * config/riscv/riscv.md: Adjust RVV instruction types.
17661         * config/riscv/vector-iterators.md (down): New iterator.
17662         (=vd,vr): New attribute.
17663         (UNSPEC_VSLIDE1UP): New unspec.
17664         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
17665         (*pred_slide<ud><mode>): Ditto.
17666         (*pred_slide<ud><mode>_extended): Ditto.
17667         (@pred_gather<mode>): Ditto.
17668         (@pred_gather<mode>_scalar): Ditto.
17669         (@pred_gatherei16<mode>): Ditto.
17670         (@pred_compress<mode>): Ditto.
17672 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17674         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
17676 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17678         * config/riscv/constraints.md (Wb1): New constraint.
17679         * config/riscv/predicates.md
17680         (vector_least_significant_set_mask_operand): New predicate.
17681         (vector_broadcast_mask_operand): Ditto.
17682         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
17683         (gen_scalar_move_mask): New function.
17684         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
17685         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
17686         (class vmv_s): Ditto.
17687         (BASE): Ditto.
17688         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17689         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
17690         (vmv_s): Ditto.
17691         (vfmv_f): Ditto.
17692         (vfmv_s): Ditto.
17693         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
17694         (SHAPE): Ditto.
17695         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17696         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
17697         (function_expander::use_exact_insn): New function.
17698         (function_expander::use_contiguous_load_insn): New function.
17699         (function_expander::use_contiguous_store_insn): New function.
17700         (function_expander::use_ternop_insn): New function.
17701         (function_expander::use_widen_ternop_insn): New function.
17702         (function_expander::use_scalar_move_insn): New function.
17703         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
17704         * config/riscv/riscv-vector-builtins.h
17705         (function_expander::add_scalar_move_mask_operand): New class.
17706         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
17707         (scalar_move_insn_p): Ditto.
17708         (has_vsetvl_killed_avl_p): Ditto.
17709         (anticipatable_occurrence_p): Ditto.
17710         (insert_vsetvl): Ditto.
17711         (get_vl_vtype_info): Ditto.
17712         (calculate_sew): Ditto.
17713         (calculate_vlmul): Ditto.
17714         (incompatible_avl_p): Ditto.
17715         (different_sew_p): Ditto.
17716         (different_lmul_p): Ditto.
17717         (different_ratio_p): Ditto.
17718         (different_tail_policy_p): Ditto.
17719         (different_mask_policy_p): Ditto.
17720         (possible_zero_avl_p): Ditto.
17721         (first_ratio_invalid_for_second_sew_p): Ditto.
17722         (first_ratio_invalid_for_second_lmul_p): Ditto.
17723         (second_ratio_invalid_for_first_sew_p): Ditto.
17724         (second_ratio_invalid_for_first_lmul_p): Ditto.
17725         (second_sew_less_than_first_sew_p): Ditto.
17726         (first_sew_less_than_second_sew_p): Ditto.
17727         (compare_lmul): Ditto.
17728         (second_lmul_less_than_first_lmul_p): Ditto.
17729         (first_lmul_less_than_second_lmul_p): Ditto.
17730         (first_ratio_less_than_second_ratio_p): Ditto.
17731         (second_ratio_less_than_first_ratio_p): Ditto.
17732         (DEF_INCOMPATIBLE_COND): Ditto.
17733         (greatest_sew): Ditto.
17734         (first_sew): Ditto.
17735         (second_sew): Ditto.
17736         (first_vlmul): Ditto.
17737         (second_vlmul): Ditto.
17738         (first_ratio): Ditto.
17739         (second_ratio): Ditto.
17740         (vlmul_for_first_sew_second_ratio): Ditto.
17741         (ratio_for_second_sew_first_vlmul): Ditto.
17742         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
17743         (always_unavailable): Ditto.
17744         (avl_unavailable_p): Ditto.
17745         (sew_unavailable_p): Ditto.
17746         (lmul_unavailable_p): Ditto.
17747         (ge_sew_unavailable_p): Ditto.
17748         (ge_sew_lmul_unavailable_p): Ditto.
17749         (ge_sew_ratio_unavailable_p): Ditto.
17750         (DEF_UNAVAILABLE_COND): Ditto.
17751         (same_sew_lmul_demand_p): Ditto.
17752         (propagate_avl_across_demands_p): Ditto.
17753         (reg_available_p): Ditto.
17754         (avl_info::has_non_zero_avl): Ditto.
17755         (vl_vtype_info::has_non_zero_avl): Ditto.
17756         (vector_insn_info::operator>=): Refactor.
17757         (vector_insn_info::parse_insn): Adjust for scalar move.
17758         (vector_insn_info::demand_vl_vtype): Remove.
17759         (vector_insn_info::compatible_p): New function.
17760         (vector_insn_info::compatible_avl_p): Ditto.
17761         (vector_insn_info::compatible_vtype_p): Ditto.
17762         (vector_insn_info::available_p): Ditto.
17763         (vector_insn_info::merge): Ditto.
17764         (vector_insn_info::fuse_avl): Ditto.
17765         (vector_insn_info::fuse_sew_lmul): Ditto.
17766         (vector_insn_info::fuse_tail_policy): Ditto.
17767         (vector_insn_info::fuse_mask_policy): Ditto.
17768         (vector_insn_info::dump): Ditto.
17769         (vector_infos_manager::release): Ditto.
17770         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
17771         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
17772         (pass_vsetvl::hard_empty_block_p): Ditto.
17773         (pass_vsetvl::backward_demand_fusion): Ditto.
17774         (pass_vsetvl::forward_demand_fusion): Ditto.
17775         (pass_vsetvl::refine_vsetvls): Ditto.
17776         (pass_vsetvl::cleanup_vsetvls): Ditto.
17777         (pass_vsetvl::commit_vsetvls): Ditto.
17778         (pass_vsetvl::propagate_avl): Ditto.
17779         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
17780         (struct demands_pair): Ditto.
17781         (struct demands_cond): Ditto.
17782         (struct demands_fuse_rule): Ditto.
17783         * config/riscv/vector-iterators.md: New iterator.
17784         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
17785         (*pred_broadcast<mode>): Ditto.
17786         (*pred_broadcast<mode>_extended_scalar): Ditto.
17787         (@pred_extract_first<mode>): Ditto.
17788         (*pred_extract_first<mode>): Ditto.
17789         (@pred_extract_first_trunc<mode>): Ditto.
17790         * config/riscv/riscv-vsetvl.def: New file.
17792 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
17794         * config/riscv/bitmanip.md: allow 0 constant in max/min
17795         pattern.
17797 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
17799         * config/riscv/bitmanip.md: Fix wrong index in the check.
17801 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
17803         PR middle-end/109006
17804         * vec.cc (test_auto_alias): Adjust comment for removal of
17805         m_vecdata.
17806         * read-rtl-function.cc (function_reader::parse_block): Likewise.
17807         * gdbhooks.py: Likewise.
17809 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
17811         PR testsuite/108973
17812         * selftest-diagnostic.cc
17813         (test_diagnostic_context::test_diagnostic_context): Set
17814         caret_max_width to 80.
17816 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
17818         * gimple-ssa-warn-access.cc
17819         (pass_waccess::check_dangling_stores): Skip non-stores.
17821 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
17823         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
17824         after vmsr and vmrs, and lower the case of P0.
17826 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
17828         PR middle-end/109006
17829         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
17831 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
17833         PR middle-end/109006
17834         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
17836 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
17838         PR c/108986
17839         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
17840         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
17841         suppressed on stmt.  For [static %E] warning, print access_nelts
17842         rather than access_size.  Fix up comment wording.
17844 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
17846         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
17847         arch14 instead of z16.
17849 2023-03-03  Anthony Green  <green@moxielogic.com>
17851         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
17853 2023-03-03  Anthony Green  <green@moxielogic.com>
17855         * config/moxie/constraints.md (A, B, W): Change
17856         define_constraint to define_memory_constraint.
17858 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
17860         * toplev.cc (process_options): Fix the spelling of
17861         "-fstack-clash-protection".
17863 2023-03-03  Richard Biener  <rguenther@suse.de>
17865         PR tree-optimization/109002
17866         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
17867         PHI-translate ANTIC_IN.
17869 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
17871         PR tree-optimization/108988
17872         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
17873         size_type_node before passing it as argument to fwrite.  Formatting
17874         fixes.
17876 2023-03-03  Richard Biener  <rguenther@suse.de>
17878         PR target/108738
17879         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
17880         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
17881         * config/i386/i386-features.h (scalar_chain::max_visits): New.
17882         (scalar_chain::build): Add bitmap parameter, return boolean.
17883         (scalar_chain::add_insn): Likewise.
17884         (scalar_chain::analyze_register_chain): Likewise.
17885         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
17886         Initialize max_visits.
17887         (scalar_chain::analyze_register_chain): When we exhaust
17888         max_visits, abort.  Also abort when running into any
17889         disallowed insn.
17890         (scalar_chain::add_insn): Propagate abort.
17891         (scalar_chain::build): Likewise.  When aborting amend
17892         the set of disallowed insn with the insns set.
17893         (convert_scalars_to_vector): Adjust.  Do not convert aborted
17894         chains.
17896 2023-03-03  Richard Biener  <rguenther@suse.de>
17898         PR debug/108772
17899         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
17900         generate a DIE for a function scope static.
17902 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
17904         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
17906 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
17908         PR target/108883
17909         * target.h (emit_support_tinfos_callback): New typedef.
17910         * targhooks.h (default_emit_support_tinfos): Declare.
17911         * targhooks.cc (default_emit_support_tinfos): New function.
17912         * target.def (emit_support_tinfos): New target hook.
17913         * doc/tm.texi.in (emit_support_tinfos): Document it.
17914         * doc/tm.texi: Regenerated.
17915         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
17916         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
17918 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
17920         * ira-costs.cc: Include print-rtl.h.
17921         (record_reg_classes, scan_one_insn): Add code to print debug info.
17922         (record_operand_costs): Find and use smaller cost for hard reg
17923         move.
17925 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
17926             Paul-Antoine Arras  <pa@codesourcery.com>
17928         * builtins.cc (mathfn_built_in_explicit): New.
17929         * config/gcn/gcn.cc: Include case-cfn-macros.h.
17930         (mathfn_built_in_explicit): Add prototype.
17931         (gcn_vectorize_builtin_vectorized_function): New.
17932         (gcn_libc_has_function): New.
17933         (TARGET_LIBC_HAS_FUNCTION): Define.
17934         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
17936 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
17938         PR tree-optimization/108979
17939         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
17940         operations on invariants.
17942 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
17944         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
17945         * config/s390/s390.cc (s390_option_override_internal): Make
17946         partial vector usage the default from z13 on.
17947         * config/s390/vector.md (len_load_v16qi): Add.
17948         (len_store_v16qi): Add.
17950 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
17952         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
17953         of constant 0 offset.
17955 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
17957         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
17958         instead of long.
17959         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
17961 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
17963         * config.gcc: add -with-{no-}msa build option.
17964         * config/mips/mips.h: Likewise.
17965         * doc/install.texi: Likewise.
17967 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
17969         PR tree-optimization/108603
17970         * explow.cc (convert_memory_address_addr_space_1): Only wrap
17971         the result of a recursive call in a CONST if no instructions
17972         were emitted.
17974 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
17976         PR tree-optimization/108430
17977         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
17978         of inverted condition.
17980 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
17982         PR c++/108934
17983         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
17984         comparison copy the bytes from ptr to a temporary buffer and clearing
17985         padding bits in there.
17987 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
17989         PR middle-end/108545
17990         * gimplify.cc (struct tree_operand_hash_no_se): New.
17991         (omp_index_mapping_groups_1, omp_index_mapping_groups,
17992         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
17993         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
17994         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
17995         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
17996         of tree_operand_hash.
17998 2023-03-01  LIU Hao  <lh_mouse@126.com>
18000         PR pch/14940
18001         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
18002         Remove the size limit `pch_VA_max_size`
18004 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
18006         PR middle-end/108546
18007         * omp-low.cc (lower_omp_target): Remove optional handling
18008         on the receiver side, i.e. inside target (data), for
18009         use_device_ptr.
18011 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
18013         PR debug/108967
18014         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
18015         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
18017 2023-03-01  Richard Biener  <rguenther@suse.de>
18019         PR tree-optimization/108970
18020         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
18021         Check we can copy the BBs.
18022         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
18023         check.
18024         (vect_do_peeling): Streamline error handling.
18026 2023-03-01  Richard Biener  <rguenther@suse.de>
18028         PR tree-optimization/108950
18029         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
18030         Check oprnd0 is defined in the loop.
18031         * tree-vect-loop.cc (vectorizable_reduction): Record all
18032         operands vector types, compute that of invariants and
18033         properly update their SLP nodes.
18035 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
18037         PR target/108240
18038         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
18039         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
18041 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
18043         PR middle-end/107411
18044         PR middle-end/107411
18045         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
18046         xasprintf.
18047         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
18048         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
18050 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
18052         PR sanitizer/108894
18053         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
18054         comparison rather than index > bound.
18055         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
18056         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
18057         * doc/invoke.texi (-fsanitize=bounds): Document that whether
18058         flexible array member-like arrays are instrumented or not depends
18059         on -fstrict-flex-arrays* options of strict_flex_array attributes.
18060         (-fsanitize=bounds-strict): Document that flexible array members
18061         are not instrumented.
18063 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
18065         PR target/108922
18066         Revert:
18067         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
18068         (fmod<mode>3): Ditto.
18069         (fpremxf4_i387): Ditto.
18070         (reminderxf3): Ditto.
18071         (reminder<mode>3): Ditto.
18072         (fprem1xf4_i387): Ditto.
18074 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
18076         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
18077         generating FFS with mismatched operand and result modes, by using
18078         an explicit SIGN_EXTEND/ZERO_EXTEND.
18079         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
18080         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
18082 2023-02-27  Patrick Palka  <ppalka@redhat.com>
18084         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
18085         * lra-int.h (lra_change_class): Likewise.
18086         * recog.h (which_op_alt): Likewise.
18087         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
18088         instead of static.
18090 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18092         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
18093         New prototype.
18094         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
18095         New function.
18096         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
18097         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
18099 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
18101         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
18102         (xtensa_get_config_v3): New functions.
18104 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18106         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
18108 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
18110         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
18111         the macro to 0x1000000000.
18113 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
18115         PR modula2/108261
18116         * doc/gm2.texi (-fm2-pathname): New option documented.
18117         (-fm2-pathnameI): New option documented.
18118         (-fm2-prefix=): New option documented.
18119         (-fruntime-modules=): Update default module list.
18121 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
18123         PR target/108919
18124         * config/xtensa/xtensa-protos.h
18125         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
18126         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
18127         to xtensa_expand_call.
18128         (xtensa_expand_call): Emit the call and add a clobber expression
18129         for the static chain to it in case of windowed ABI.
18130         * config/xtensa/xtensa.md (call, call_value, sibcall)
18131         (sibcall_value): Call xtensa_expand_call and complete expansion
18132         right after that call.
18134 2023-02-24  Richard Biener  <rguenther@suse.de>
18136         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
18137         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
18138         changing alignment of vec<T, A, vl_embed> and simplifying
18139         address.
18140         (vec<T, A, vl_embed>::address): Compute as this + 1.
18141         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
18142         vector instead of the offset of the m_vecdata member.
18143         (auto_vec<T, N>::m_data): Turn storage into
18144         uninitialized unsigned char.
18145         (auto_vec<T, N>::auto_vec): Allow allocation of one
18146         stack member.  Initialize m_vec in a special way to
18147         avoid later stringop overflow diagnostics.
18148         * vec.cc (test_auto_alias): New.
18149         (vec_cc_tests): Call it.
18151 2023-02-24  Richard Biener  <rguenther@suse.de>
18153         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
18154         take a const reference to the object, use address to
18155         access data.
18156         (vec<T, A, vl_embed>::contains): Use address to access data.
18157         (vec<T, A, vl_embed>::operator[]): Use address instead of
18158         m_vecdata to access data.
18159         (vec<T, A, vl_embed>::iterate): Likewise.
18160         (vec<T, A, vl_embed>::copy): Likewise.
18161         (vec<T, A, vl_embed>::quick_push): Likewise.
18162         (vec<T, A, vl_embed>::pop): Likewise.
18163         (vec<T, A, vl_embed>::quick_insert): Likewise.
18164         (vec<T, A, vl_embed>::ordered_remove): Likewise.
18165         (vec<T, A, vl_embed>::unordered_remove): Likewise.
18166         (vec<T, A, vl_embed>::block_remove): Likewise.
18167         (vec<T, A, vl_heap>::address): Likewise.
18169 2023-02-24  Martin Liska  <mliska@suse.cz>
18171         PR sanitizer/108834
18172         * asan.cc (asan_add_global): Use proper TU name for normal
18173         global variables (and aux_base_name for the artificial one).
18175 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
18177         * config/i386/i386-builtin.def: Update description of BDESC
18178         and BDESC_FIRST in file comment to include mask2.
18180 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18182         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
18184 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
18186         PR middle-end/108854
18187         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
18188         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
18189         nodes and adjust their DECL_CONTEXT.
18191 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
18193         PR target/108881
18194         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
18195         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
18196         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
18197         __builtin_ia32_cvtne2ps2bf16_v8bf,
18198         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
18199         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
18200         __builtin_ia32_cvtneps2bf16_v8sf_mask,
18201         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
18202         __builtin_ia32_cvtneps2bf16_v4sf_mask,
18203         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
18204         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
18205         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
18206         __builtin_ia32_dpbf16ps_v4sf_mask,
18207         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
18208         OPTION_MASK_ISA_AVX512VL.
18210 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
18212         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
18213         Add non-compact 32-bit multilibs.
18215 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
18217         * config/mips/mips.md (*clo<mode>2): New pattern.
18219 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
18221         * config/mips/mips.h (machine_function): New variable
18222         use_hazard_barrier_return_p.
18223         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
18224         (mips_hb_return_internal): New insn pattern.
18225         * config/mips/mips.cc (mips_attribute_table): Add attribute
18226         use_hazard_barrier_return.
18227         (mips_use_hazard_barrier_return_p): New static function.
18228         (mips_function_attr_inlinable_p): Likewise.
18229         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
18230         Emit error for unsupported architecture choice.
18231         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
18232         Return false for use_hazard_barrier_return.
18233         (mips_expand_epilogue): Emit hazard barrier return.
18234         * doc/extend.texi: Document use_hazard_barrier_return.
18236 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
18238         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
18239         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
18240         for the gcc-internal headers.
18242 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
18244         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
18245         and $(POSTCOMPILE) instead of manual dependency listing.
18246         * config/xtensa/xtensa-dynconfig.c: Rename to ...
18247         * config/xtensa/xtensa-dynconfig.cc: ... this.
18249 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
18251         * doc/cfg.texi: Reorder index entries around @items.
18252         * doc/cpp.texi: Ditto.
18253         * doc/cppenv.texi: Ditto.
18254         * doc/cppopts.texi: Ditto.
18255         * doc/generic.texi: Ditto.
18256         * doc/install.texi: Ditto.
18257         * doc/extend.texi: Ditto.
18258         * doc/invoke.texi: Ditto.
18259         * doc/md.texi: Ditto.
18260         * doc/rtl.texi: Ditto.
18261         * doc/tm.texi.in: Ditto.
18262         * doc/trouble.texi: Ditto.
18263         * doc/tm.texi: Regenerate.
18265 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18267         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
18268         the occurrence of general-purpose register used only once and for
18269         transferring intermediate value.
18271 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18273         * config/xtensa/xtensa.cc (machine_function): Add new member
18274         'eliminated_callee_saved_bmp'.
18275         (xtensa_can_eliminate_callee_saved_reg_p): New function to
18276         determine whether the register can be eliminated or not.
18277         (xtensa_expand_prologue): Add invoking the above function and
18278         elimination the use of callee-saved register by using its stack
18279         slot through the stack pointer (or the frame pointer if needed)
18280         directly.
18281         (xtensa_expand_prologue): Modify to not emit register restoration
18282         insn from its stack slot if the register is already eliminated.
18284 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
18286         PR translation/108890
18287         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
18288         around fatal_error format strings.
18290 2023-02-23  Richard Biener  <rguenther@suse.de>
18292         * tree-ssa-structalias.cc (handle_lhs_call): Do not
18293         re-create rhsc, only truncate it.
18295 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
18297         PR middle-end/106258
18298         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
18299         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
18301 2023-02-23  Richard Biener  <rguenther@suse.de>
18303         * tree-if-conv.cc (tree_if_conversion): Properly manage
18304         memory of refs and the contained data references.
18306 2023-02-23  Richard Biener  <rguenther@suse.de>
18308         PR tree-optimization/108888
18309         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
18310         calls to predicate.
18311         (predicate_statements): Only predicate calls with PLF_2.
18313 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18315         * config/xtensa/xtensa.md
18316         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
18317         Add missing "SI:" to PLUS RTXes.
18319 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
18321         PR target/108876
18322         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
18323         Emit (use (reg:SI A0_REG)) at the end in the sibling call
18324         (i.e. the same place as (return) in the normal call).
18326 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
18328         Revert:
18329         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
18331         PR target/108876
18332         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
18333         for A0_REG.
18334         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
18335         (sibcall_value, sibcall_value_internal): Add 'use' expression
18336         for A0_REG.
18338 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
18340         * doc/cppdiropts.texi: Reorder @opindex commands to precede
18341         @items they relate to.
18342         * doc/cppopts.texi: Ditto.
18343         * doc/cppwarnopts.texi: Ditto.
18344         * doc/invoke.texi: Ditto.
18345         * doc/lto.texi: Ditto.
18347 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
18349         * internal-fn.cc (expand_MASK_CALL): New.
18350         * internal-fn.def (MASK_CALL): New.
18351         * internal-fn.h (expand_MASK_CALL): New prototype.
18352         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
18353         for mask arguments also.
18354         * tree-if-conv.cc: Include cgraph.h.
18355         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
18356         (predicate_statements): Convert functions to IFN_MASK_CALL.
18357         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
18358         IFN_MASK_CALL as a SIMD function call.
18359         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
18360         IFN_MASK_CALL as an inbranch SIMD function call.
18361         Generate the mask vector arguments.
18363 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18365         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
18366         (class widen_reducop): Ditto.
18367         (class freducop): Ditto.
18368         (class widen_freducop): Ditto.
18369         (BASE): Ditto.
18370         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18371         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
18372         (vredmaxu): Ditto.
18373         (vredmax): Ditto.
18374         (vredminu): Ditto.
18375         (vredmin): Ditto.
18376         (vredand): Ditto.
18377         (vredor): Ditto.
18378         (vredxor): Ditto.
18379         (vwredsum): Ditto.
18380         (vwredsumu): Ditto.
18381         (vfredusum): Ditto.
18382         (vfredosum): Ditto.
18383         (vfredmax): Ditto.
18384         (vfredmin): Ditto.
18385         (vfwredosum): Ditto.
18386         (vfwredusum): Ditto.
18387         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
18388         (SHAPE): Ditto.
18389         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18390         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
18391         (DEF_RVV_WU_OPS): Ditto.
18392         (DEF_RVV_WF_OPS): Ditto.
18393         (vint8mf8_t): Ditto.
18394         (vint8mf4_t): Ditto.
18395         (vint8mf2_t): Ditto.
18396         (vint8m1_t): Ditto.
18397         (vint8m2_t): Ditto.
18398         (vint8m4_t): Ditto.
18399         (vint8m8_t): Ditto.
18400         (vint16mf4_t): Ditto.
18401         (vint16mf2_t): Ditto.
18402         (vint16m1_t): Ditto.
18403         (vint16m2_t): Ditto.
18404         (vint16m4_t): Ditto.
18405         (vint16m8_t): Ditto.
18406         (vint32mf2_t): Ditto.
18407         (vint32m1_t): Ditto.
18408         (vint32m2_t): Ditto.
18409         (vint32m4_t): Ditto.
18410         (vint32m8_t): Ditto.
18411         (vuint8mf8_t): Ditto.
18412         (vuint8mf4_t): Ditto.
18413         (vuint8mf2_t): Ditto.
18414         (vuint8m1_t): Ditto.
18415         (vuint8m2_t): Ditto.
18416         (vuint8m4_t): Ditto.
18417         (vuint8m8_t): Ditto.
18418         (vuint16mf4_t): Ditto.
18419         (vuint16mf2_t): Ditto.
18420         (vuint16m1_t): Ditto.
18421         (vuint16m2_t): Ditto.
18422         (vuint16m4_t): Ditto.
18423         (vuint16m8_t): Ditto.
18424         (vuint32mf2_t): Ditto.
18425         (vuint32m1_t): Ditto.
18426         (vuint32m2_t): Ditto.
18427         (vuint32m4_t): Ditto.
18428         (vuint32m8_t): Ditto.
18429         (vfloat32mf2_t): Ditto.
18430         (vfloat32m1_t): Ditto.
18431         (vfloat32m2_t): Ditto.
18432         (vfloat32m4_t): Ditto.
18433         (vfloat32m8_t): Ditto.
18434         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
18435         (DEF_RVV_WU_OPS): Ditto.
18436         (DEF_RVV_WF_OPS): Ditto.
18437         (required_extensions_p): Add reduction support.
18438         (rvv_arg_type_info::get_base_vector_type): Ditto.
18439         (rvv_arg_type_info::get_tree_type): Ditto.
18440         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18441         * config/riscv/riscv.md: Ditto.
18442         * config/riscv/vector-iterators.md (minu): Ditto.
18443         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
18444         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
18445         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
18446         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
18447         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
18448         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
18449         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
18451 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18453         * config/riscv/iterators.md: New iterator.
18454         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
18455         (enum ternop_type): New enum.
18456         (class vmacc): New class.
18457         (class imac): Ditto.
18458         (class vnmsac): Ditto.
18459         (enum widen_ternop_type): New enum.
18460         (class vmadd): Ditto.
18461         (class vnmsub): Ditto.
18462         (class iwmac): Ditto.
18463         (class vwmacc): Ditto.
18464         (class vwmaccu): Ditto.
18465         (class vwmaccsu): Ditto.
18466         (class vwmaccus): Ditto.
18467         (class reverse_binop): Ditto.
18468         (class vfmacc): Ditto.
18469         (class vfnmsac): Ditto.
18470         (class vfmadd): Ditto.
18471         (class vfnmsub): Ditto.
18472         (class vfnmacc): Ditto.
18473         (class vfmsac): Ditto.
18474         (class vfnmadd): Ditto.
18475         (class vfmsub): Ditto.
18476         (class vfwmacc): Ditto.
18477         (class vfwnmacc): Ditto.
18478         (class vfwmsac): Ditto.
18479         (class vfwnmsac): Ditto.
18480         (class float_misc): Ditto.
18481         (class fcmp): Ditto.
18482         (class vfclass): Ditto.
18483         (class vfcvt_x): Ditto.
18484         (class vfcvt_rtz_x): Ditto.
18485         (class vfcvt_f): Ditto.
18486         (class vfwcvt_x): Ditto.
18487         (class vfwcvt_rtz_x): Ditto.
18488         (class vfwcvt_f): Ditto.
18489         (class vfncvt_x): Ditto.
18490         (class vfncvt_rtz_x): Ditto.
18491         (class vfncvt_f): Ditto.
18492         (class vfncvt_rod_f): Ditto.
18493         (BASE): Ditto.
18494         * config/riscv/riscv-vector-builtins-bases.h:
18495         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
18496         (vsext): Ditto.
18497         (vfadd): Ditto.
18498         (vfsub): Ditto.
18499         (vfrsub): Ditto.
18500         (vfwadd): Ditto.
18501         (vfwsub): Ditto.
18502         (vfmul): Ditto.
18503         (vfdiv): Ditto.
18504         (vfrdiv): Ditto.
18505         (vfwmul): Ditto.
18506         (vfmacc): Ditto.
18507         (vfnmsac): Ditto.
18508         (vfmadd): Ditto.
18509         (vfnmsub): Ditto.
18510         (vfnmacc): Ditto.
18511         (vfmsac): Ditto.
18512         (vfnmadd): Ditto.
18513         (vfmsub): Ditto.
18514         (vfwmacc): Ditto.
18515         (vfwnmacc): Ditto.
18516         (vfwmsac): Ditto.
18517         (vfwnmsac): Ditto.
18518         (vfsqrt): Ditto.
18519         (vfrsqrt7): Ditto.
18520         (vfrec7): Ditto.
18521         (vfmin): Ditto.
18522         (vfmax): Ditto.
18523         (vfsgnj): Ditto.
18524         (vfsgnjn): Ditto.
18525         (vfsgnjx): Ditto.
18526         (vfneg): Ditto.
18527         (vfabs): Ditto.
18528         (vmfeq): Ditto.
18529         (vmfne): Ditto.
18530         (vmflt): Ditto.
18531         (vmfle): Ditto.
18532         (vmfgt): Ditto.
18533         (vmfge): Ditto.
18534         (vfclass): Ditto.
18535         (vfmerge): Ditto.
18536         (vfmv_v): Ditto.
18537         (vfcvt_x): Ditto.
18538         (vfcvt_xu): Ditto.
18539         (vfcvt_rtz_x): Ditto.
18540         (vfcvt_rtz_xu): Ditto.
18541         (vfcvt_f): Ditto.
18542         (vfwcvt_x): Ditto.
18543         (vfwcvt_xu): Ditto.
18544         (vfwcvt_rtz_x): Ditto.
18545         (vfwcvt_rtz_xu): Ditto.
18546         (vfwcvt_f): Ditto.
18547         (vfncvt_x): Ditto.
18548         (vfncvt_xu): Ditto.
18549         (vfncvt_rtz_x): Ditto.
18550         (vfncvt_rtz_xu): Ditto.
18551         (vfncvt_f): Ditto.
18552         (vfncvt_rod_f): Ditto.
18553         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
18554         (struct move_def): Ditto.
18555         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
18556         (DEF_RVV_CONVERT_I_OPS): Ditto.
18557         (DEF_RVV_CONVERT_U_OPS): Ditto.
18558         (DEF_RVV_WCONVERT_I_OPS): Ditto.
18559         (DEF_RVV_WCONVERT_U_OPS): Ditto.
18560         (DEF_RVV_WCONVERT_F_OPS): Ditto.
18561         (vfloat64m1_t): Ditto.
18562         (vfloat64m2_t): Ditto.
18563         (vfloat64m4_t): Ditto.
18564         (vfloat64m8_t): Ditto.
18565         (vint32mf2_t): Ditto.
18566         (vint32m1_t): Ditto.
18567         (vint32m2_t): Ditto.
18568         (vint32m4_t): Ditto.
18569         (vint32m8_t): Ditto.
18570         (vint64m1_t): Ditto.
18571         (vint64m2_t): Ditto.
18572         (vint64m4_t): Ditto.
18573         (vint64m8_t): Ditto.
18574         (vuint32mf2_t): Ditto.
18575         (vuint32m1_t): Ditto.
18576         (vuint32m2_t): Ditto.
18577         (vuint32m4_t): Ditto.
18578         (vuint32m8_t): Ditto.
18579         (vuint64m1_t): Ditto.
18580         (vuint64m2_t): Ditto.
18581         (vuint64m4_t): Ditto.
18582         (vuint64m8_t): Ditto.
18583         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
18584         (DEF_RVV_CONVERT_U_OPS): Ditto.
18585         (DEF_RVV_WCONVERT_I_OPS): Ditto.
18586         (DEF_RVV_WCONVERT_U_OPS): Ditto.
18587         (DEF_RVV_WCONVERT_F_OPS): Ditto.
18588         (DEF_RVV_F_OPS): Ditto.
18589         (DEF_RVV_WEXTF_OPS): Ditto.
18590         (required_extensions_p): Adjust for floating-point support.
18591         (check_required_extensions): Ditto.
18592         (unsigned_base_type_p): Ditto.
18593         (get_mode_for_bitsize): Ditto.
18594         (rvv_arg_type_info::get_base_vector_type): Ditto.
18595         (rvv_arg_type_info::get_tree_type): Ditto.
18596         * config/riscv/riscv-vector-builtins.def (v_f): New define.
18597         (f): New define.
18598         (f_v): New define.
18599         (xu_v): New define.
18600         (f_w): New define.
18601         (xu_w): New define.
18602         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
18603         (function_expander::arg_mode): New function.
18604         * config/riscv/vector-iterators.md (sof): New iterator.
18605         (vfrecp): Ditto.
18606         (copysign): Ditto.
18607         (n): Ditto.
18608         (msac): Ditto.
18609         (msub): Ditto.
18610         (fixuns_trunc): Ditto.
18611         (floatuns): Ditto.
18612         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
18613         (@pred_<optab><mode>): Ditto.
18614         (@pred_<optab><mode>_scalar): Ditto.
18615         (@pred_<optab><mode>_reverse_scalar): Ditto.
18616         (@pred_<copysign><mode>): Ditto.
18617         (@pred_<copysign><mode>_scalar): Ditto.
18618         (@pred_mul_<optab><mode>): Ditto.
18619         (pred_mul_<optab><mode>_undef_merge): Ditto.
18620         (*pred_<madd_nmsub><mode>): Ditto.
18621         (*pred_<macc_nmsac><mode>): Ditto.
18622         (*pred_mul_<optab><mode>): Ditto.
18623         (@pred_mul_<optab><mode>_scalar): Ditto.
18624         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
18625         (*pred_<madd_nmsub><mode>_scalar): Ditto.
18626         (*pred_<macc_nmsac><mode>_scalar): Ditto.
18627         (*pred_mul_<optab><mode>_scalar): Ditto.
18628         (@pred_neg_mul_<optab><mode>): Ditto.
18629         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
18630         (*pred_<nmadd_msub><mode>): Ditto.
18631         (*pred_<nmacc_msac><mode>): Ditto.
18632         (*pred_neg_mul_<optab><mode>): Ditto.
18633         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
18634         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
18635         (*pred_<nmadd_msub><mode>_scalar): Ditto.
18636         (*pred_<nmacc_msac><mode>_scalar): Ditto.
18637         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
18638         (@pred_<misc_op><mode>): Ditto.
18639         (@pred_class<mode>): Ditto.
18640         (@pred_dual_widen_<optab><mode>): Ditto.
18641         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
18642         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
18643         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
18644         (@pred_widen_mul_<optab><mode>): Ditto.
18645         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
18646         (@pred_widen_neg_mul_<optab><mode>): Ditto.
18647         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
18648         (@pred_cmp<mode>): Ditto.
18649         (*pred_cmp<mode>): Ditto.
18650         (*pred_cmp<mode>_narrow): Ditto.
18651         (@pred_cmp<mode>_scalar): Ditto.
18652         (*pred_cmp<mode>_scalar): Ditto.
18653         (*pred_cmp<mode>_scalar_narrow): Ditto.
18654         (@pred_eqne<mode>_scalar): Ditto.
18655         (*pred_eqne<mode>_scalar): Ditto.
18656         (*pred_eqne<mode>_scalar_narrow): Ditto.
18657         (@pred_merge<mode>_scalar): Ditto.
18658         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
18659         (@pred_<fix_cvt><mode>): Ditto.
18660         (@pred_<float_cvt><mode>): Ditto.
18661         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
18662         (@pred_widen_<fix_cvt><mode>): Ditto.
18663         (@pred_widen_<float_cvt><mode>): Ditto.
18664         (@pred_extend<mode>): Ditto.
18665         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
18666         (@pred_narrow_<fix_cvt><mode>): Ditto.
18667         (@pred_narrow_<float_cvt><mode>): Ditto.
18668         (@pred_trunc<mode>): Ditto.
18669         (@pred_rod_trunc<mode>): Ditto.
18671 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
18673         PR middle-end/106258
18674         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
18675         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
18676         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
18677         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
18679 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
18681         * common.opt (-Wcomplain-wrong-lang): New.
18682         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
18683         * opts-common.cc (prune_options): Handle it.
18684         * opts-global.cc (complain_wrong_lang): Use it.
18686 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
18688         PR analyzer/108830
18689         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
18691 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
18693         PR target/108876
18694         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
18695         for A0_REG.
18696         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
18697         (sibcall_value, sibcall_value_internal): Add 'use' expression
18698         for A0_REG.
18700 2023-02-21  Richard Biener  <rguenther@suse.de>
18702         PR tree-optimization/108691
18703         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
18704         assert about calls_setjmp not becoming true when it was false.
18706 2023-02-21  Richard Biener  <rguenther@suse.de>
18708         PR tree-optimization/108793
18709         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
18710         Use convert operands to niter_type when computing num.
18712 2023-02-21  Richard Biener  <rguenther@suse.de>
18714         Revert:
18715         2023-02-13  Richard Biener  <rguenther@suse.de>
18717         PR tree-optimization/108691
18718         * tree-cfg.cc (notice_special_calls): When the CFG is built
18719         honor gimple_call_ctrl_altering_p.
18720         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
18721         temporarily if the call is not control-altering.
18722         * calls.cc (emit_call_1): Do not add REG_SETJMP if
18723         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
18725 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18727         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
18728         true if register A0 (return address register) when -Og is specified.
18730 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
18732         * config/i386/predicates.md
18733         (general_x64constmem_operand): New predicate.
18734         * config/i386/i386.md (*cmpqi_ext<mode>_1):
18735         Use nonimm_x64constmem_operand.
18736         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
18737         (*addqi_ext<mode>_1): Ditto.
18738         (*testqi_ext<mode>_1): Ditto.
18739         (*andqi_ext<mode>_1): Ditto.
18740         (*andqi_ext<mode>_1_cc): Ditto.
18741         (*<any_or:code>qi_ext<mode>_1): Ditto.
18742         (*xorqi_ext<mode>_1_cc): Ditto.
18744 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
18746         PR target/108862
18747         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
18748         gen_umadddi4_highpart{,_le}.
18750 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
18752         * config/riscv/riscv.md (prefetch): Use r instead of p for the
18753         address operand.
18754         (riscv_prefetchi_<mode>): Ditto.
18756 2023-02-20  Richard Biener  <rguenther@suse.de>
18758         PR tree-optimization/108816
18759         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
18760         versioning condition split prerequesite, assert required
18761         invariant.
18763 2023-02-20  Richard Biener  <rguenther@suse.de>
18765         PR tree-optimization/108825
18766         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
18767         loop-local verfication only verify there's no pending SSA
18768         update.
18770 2023-02-20  Richard Biener  <rguenther@suse.de>
18772         PR tree-optimization/108819
18773         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
18774         we have an SSA name as iv_2 as expected.
18776 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
18778         PR tree-optimization/108819
18779         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
18781 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
18783         PR target/108832
18784         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
18785         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
18786         function.
18787         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
18788         with ix86_replace_reg_with_reg.
18790 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
18792         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
18794 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
18796         * config.gcc (triplet_abi): Set its value based on $with_abi,
18797         instead of $target.
18798         (la_canonical_triplet): Set it after $triplet_abi is set
18799         correctly.
18800         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
18801         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
18802         "f64" suffix).
18804 2023-02-18  Andrew Pinski  <apinski@marvell.com>
18806         * match.pd: Remove #if GIMPLE around the
18807         "1 - a" pattern
18809 2023-02-18  Andrew Pinski  <apinski@marvell.com>
18811         * value-query.h (get_range_query): Return the global ranges
18812         for a nullptr func.
18814 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
18816         * doc/invoke.texi (@item -Wall): Fix typo in
18817         -Wuse-after-free.
18819 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
18821         PR target/108831
18822         * config/i386/predicates.md
18823         (nonimm_x64constmem_operand): New predicate.
18824         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
18825         (*subqi_ext<mode>_0): Ditto.
18826         (*andqi_ext<mode>_0): Ditto.
18827         (*<any_or:code>qi_ext<mode>_0): Ditto.
18829 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
18831         PR target/108805
18832         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
18833         int_outermode instead of GET_MODE (tem) to prevent
18834         VOIDmode from entering simplify_gen_subreg.
18836 2023-02-17  Richard Biener  <rguenther@suse.de>
18838         PR tree-optimization/108821
18839         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
18840         move volatile accesses.
18842 2023-02-17  Richard Biener  <rguenther@suse.de>
18844         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
18845         called on virtual operands.
18846         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
18847         ssa_undefined_value_p calls.
18848         (vn_phi_insert): Likewise.
18849         (set_ssa_val_to): Likewise.
18850         (visit_phi): Avoid extra work with equivalences for
18851         virtual operand PHIs.
18853 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18855         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
18856         class.
18857         (class mask_nlogic): Ditto.
18858         (class mask_notlogic): Ditto.
18859         (class vmmv): Ditto.
18860         (class vmclr): Ditto.
18861         (class vmset): Ditto.
18862         (class vmnot): Ditto.
18863         (class vcpop): Ditto.
18864         (class vfirst): Ditto.
18865         (class mask_misc): Ditto.
18866         (class viota): Ditto.
18867         (class vid): Ditto.
18868         (BASE): Ditto.
18869         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18870         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
18871         (vmnand): Ditto.
18872         (vmandn): Ditto.
18873         (vmxor): Ditto.
18874         (vmor): Ditto.
18875         (vmnor): Ditto.
18876         (vmorn): Ditto.
18877         (vmxnor): Ditto.
18878         (vmmv): Ditto.
18879         (vmclr): Ditto.
18880         (vmset): Ditto.
18881         (vmnot): Ditto.
18882         (vcpop): Ditto.
18883         (vfirst): Ditto.
18884         (vmsbf): Ditto.
18885         (vmsif): Ditto.
18886         (vmsof): Ditto.
18887         (viota): Ditto.
18888         (vid): Ditto.
18889         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
18890         (struct mask_alu_def): Ditto.
18891         (SHAPE): Ditto.
18892         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18893         * config/riscv/riscv-vector-builtins.cc: Ditto.
18894         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
18895         for dest it scalar RVV intrinsics.
18896         * config/riscv/vector-iterators.md (sof): New iterator.
18897         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
18898         (@pred_<optab>not<mode>): New pattern.
18899         (@pred_popcount<VB:mode><P:mode>): New pattern.
18900         (@pred_ffs<VB:mode><P:mode>): New pattern.
18901         (@pred_<misc_op><mode>): New pattern.
18902         (@pred_iota<mode>): New pattern.
18903         (@pred_series<mode>): New pattern.
18905 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18907         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
18908         (vsbc): Ditto.
18909         (vmerge): Ditto.
18910         (vmv_v): Ditto.
18911         * config/riscv/riscv-vector-builtins.cc: Ditto.
18913 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18914             kito-cheng  <kito.cheng@sifive.com>
18916         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
18917         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
18918         (sew64_scalar_helper): New function.
18919         * config/riscv/vector.md: Normalization.
18921 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18923         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
18924         (vsm): Ditto.
18925         (vsse): Ditto.
18926         (vsoxei64): Ditto.
18927         (vsub): Ditto.
18928         (vand): Ditto.
18929         (vor): Ditto.
18930         (vxor): Ditto.
18931         (vsll): Ditto.
18932         (vsra): Ditto.
18933         (vsrl): Ditto.
18934         (vmin): Ditto.
18935         (vmax): Ditto.
18936         (vminu): Ditto.
18937         (vmaxu): Ditto.
18938         (vmul): Ditto.
18939         (vmulh): Ditto.
18940         (vmulhu): Ditto.
18941         (vmulhsu): Ditto.
18942         (vdiv): Ditto.
18943         (vrem): Ditto.
18944         (vdivu): Ditto.
18945         (vremu): Ditto.
18946         (vnot): Ditto.
18947         (vsext): Ditto.
18948         (vzext): Ditto.
18949         (vwadd): Ditto.
18950         (vwsub): Ditto.
18951         (vwmul): Ditto.
18952         (vwmulu): Ditto.
18953         (vwmulsu): Ditto.
18954         (vwaddu): Ditto.
18955         (vwsubu): Ditto.
18956         (vsbc): Ditto.
18957         (vmsbc): Ditto.
18958         (vnsra): Ditto.
18959         (vmerge): Ditto.
18960         (vmv_v): Ditto.
18961         (vmsne): Ditto.
18962         (vmslt): Ditto.
18963         (vmsgt): Ditto.
18964         (vmsle): Ditto.
18965         (vmsge): Ditto.
18966         (vmsltu): Ditto.
18967         (vmsgtu): Ditto.
18968         (vmsleu): Ditto.
18969         (vmsgeu): Ditto.
18970         (vnmsac): Ditto.
18971         (vmadd): Ditto.
18972         (vnmsub): Ditto.
18973         (vwmacc): Ditto.
18974         (vsadd): Ditto.
18975         (vssub): Ditto.
18976         (vssubu): Ditto.
18977         (vaadd): Ditto.
18978         (vasub): Ditto.
18979         (vasubu): Ditto.
18980         (vsmul): Ditto.
18981         (vssra): Ditto.
18982         (vssrl): Ditto.
18983         (vnclip): Ditto.
18985 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18987         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
18988         (@pred_<optab><mode>_scalar): Ditto.
18989         (*pred_<optab><mode>_scalar): Ditto.
18990         (*pred_<optab><mode>_extended_scalar): Ditto.
18992 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18994         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
18995         (init_builtins): Ditto.
18996         (mangle_builtin_type): Ditto.
18997         (verify_type_context): Ditto.
18998         (handle_pragma_vector):  Ditto.
18999         (builtin_decl): Ditto.
19000         (expand_builtin): Ditto.
19001         (const_vec_all_same_in_range_p): Ditto.
19002         (legitimize_move): Ditto.
19003         (emit_vlmax_op): Ditto.
19004         (emit_nonvlmax_op): Ditto.
19005         (get_vlmul): Ditto.
19006         (get_ratio): Ditto.
19007         (get_ta): Ditto.
19008         (get_ma): Ditto.
19009         (get_avl_type): Ditto.
19010         (calculate_ratio): Ditto.
19011         (enum vlmul_type): Ditto.
19012         (simm5_p): Ditto.
19013         (neg_simm5_p): Ditto.
19014         (has_vi_variant_p): Ditto.
19016 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19018         * config/riscv/riscv-protos.h (simm32_p): Remove.
19019         * config/riscv/riscv-v.cc (simm32_p): Ditto.
19020         * config/riscv/vector.md: Use immediate_operand
19021         instead of riscv_vector::simm32_p.
19023 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
19025         * doc/invoke.texi (Optimize Options): Reword the explanation
19026         getting minimal, maximal and default values of a parameter.
19028 2023-02-16  Patrick Palka  <ppalka@redhat.com>
19030         * addresses.h: Mechanically drop 'static' from 'static inline'
19031         functions via s/^static inline/inline/g.
19032         * asan.h: Likewise.
19033         * attribs.h: Likewise.
19034         * basic-block.h: Likewise.
19035         * bitmap.h: Likewise.
19036         * cfghooks.h: Likewise.
19037         * cfgloop.h: Likewise.
19038         * cgraph.h: Likewise.
19039         * cselib.h: Likewise.
19040         * data-streamer.h: Likewise.
19041         * debug.h: Likewise.
19042         * df.h: Likewise.
19043         * diagnostic.h: Likewise.
19044         * dominance.h: Likewise.
19045         * dumpfile.h: Likewise.
19046         * emit-rtl.h: Likewise.
19047         * except.h: Likewise.
19048         * expmed.h: Likewise.
19049         * expr.h: Likewise.
19050         * fixed-value.h: Likewise.
19051         * gengtype.h: Likewise.
19052         * gimple-expr.h: Likewise.
19053         * gimple-iterator.h: Likewise.
19054         * gimple-predict.h: Likewise.
19055         * gimple-range-fold.h: Likewise.
19056         * gimple-ssa.h: Likewise.
19057         * gimple.h: Likewise.
19058         * graphite.h: Likewise.
19059         * hard-reg-set.h: Likewise.
19060         * hash-map.h: Likewise.
19061         * hash-set.h: Likewise.
19062         * hash-table.h: Likewise.
19063         * hwint.h: Likewise.
19064         * input.h: Likewise.
19065         * insn-addr.h: Likewise.
19066         * internal-fn.h: Likewise.
19067         * ipa-fnsummary.h: Likewise.
19068         * ipa-icf-gimple.h: Likewise.
19069         * ipa-inline.h: Likewise.
19070         * ipa-modref.h: Likewise.
19071         * ipa-prop.h: Likewise.
19072         * ira-int.h: Likewise.
19073         * ira.h: Likewise.
19074         * lra-int.h: Likewise.
19075         * lra.h: Likewise.
19076         * lto-streamer.h: Likewise.
19077         * memmodel.h: Likewise.
19078         * omp-general.h: Likewise.
19079         * optabs-query.h: Likewise.
19080         * optabs.h: Likewise.
19081         * plugin.h: Likewise.
19082         * pretty-print.h: Likewise.
19083         * range.h: Likewise.
19084         * read-md.h: Likewise.
19085         * recog.h: Likewise.
19086         * regs.h: Likewise.
19087         * rtl-iter.h: Likewise.
19088         * rtl.h: Likewise.
19089         * sbitmap.h: Likewise.
19090         * sched-int.h: Likewise.
19091         * sel-sched-ir.h: Likewise.
19092         * sese.h: Likewise.
19093         * sparseset.h: Likewise.
19094         * ssa-iterators.h: Likewise.
19095         * system.h: Likewise.
19096         * target-globals.h: Likewise.
19097         * target.h: Likewise.
19098         * timevar.h: Likewise.
19099         * tree-chrec.h: Likewise.
19100         * tree-data-ref.h: Likewise.
19101         * tree-iterator.h: Likewise.
19102         * tree-outof-ssa.h: Likewise.
19103         * tree-phinodes.h: Likewise.
19104         * tree-scalar-evolution.h: Likewise.
19105         * tree-sra.h: Likewise.
19106         * tree-ssa-alias.h: Likewise.
19107         * tree-ssa-live.h: Likewise.
19108         * tree-ssa-loop-manip.h: Likewise.
19109         * tree-ssa-loop.h: Likewise.
19110         * tree-ssa-operands.h: Likewise.
19111         * tree-ssa-propagate.h: Likewise.
19112         * tree-ssa-sccvn.h: Likewise.
19113         * tree-ssa.h: Likewise.
19114         * tree-ssanames.h: Likewise.
19115         * tree-streamer.h: Likewise.
19116         * tree-switch-conversion.h: Likewise.
19117         * tree-vectorizer.h: Likewise.
19118         * tree.h: Likewise.
19119         * wide-int.h: Likewise.
19121 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
19123         PR tree-optimization/108657
19124         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
19125         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
19126         is a call to internal or builtin function.
19128 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
19130         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
19131         using-declaration to unhide functions.
19133 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
19135         PR tree-optimization/108783
19136         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
19137         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
19138         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
19139         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
19141 2023-02-16  Richard Biener  <rguenther@suse.de>
19143         PR tree-optimization/108791
19144         * tree-ssa-forwprop.cc (optimize_vector_load): Build
19145         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
19146         type.
19148 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
19150         PR target/90458
19151         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
19152         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
19153         (ix86_expand_prologue): Likewise.
19155 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19157         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
19159 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
19161         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
19162         int248_register_operand predicate in zero_extract sub-RTX.
19163         (*cmpqi_ext<mode>_2): Ditto.
19164         (*cmpqi_ext<mode>_3): Ditto.
19165         (*cmpqi_ext<mode>_4): Ditto.
19166         (*extzvqi_mem_rex64): Ditto.
19167         (*extzvqi): Ditto.
19168         (*insvqi_1_mem_rex64): Ditto.
19169         (@insv<mode>_1): Ditto.
19170         (*insvqi_1): Ditto.
19171         (*insvqi_2): Ditto.
19172         (*insvqi_3): Ditto.
19173         (*extendqi<SWI24:mode>_ext_1): Ditto.
19174         (*addqi_ext<mode>_1): Ditto.
19175         (*addqi_ext<mode>_2): Ditto.
19176         (*subqi_ext<mode>_2): Ditto.
19177         (*testqi_ext<mode>_1): Ditto.
19178         (*testqi_ext<mode>_2): Ditto.
19179         (*andqi_ext<mode>_1): Ditto.
19180         (*andqi_ext<mode>_1_cc): Ditto.
19181         (*andqi_ext<mode>_2): Ditto.
19182         (*<any_or:code>qi_ext<mode>_1): Ditto.
19183         (*<any_or:code>qi_ext<mode>_2): Ditto.
19184         (*xorqi_ext<mode>_1_cc): Ditto.
19185         (*negqi_ext<mode>_2): Ditto.
19186         (*ashlqi_ext<mode>_2): Ditto.
19187         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
19189 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
19191         * config/i386/predicates.md (int248_register_operand):
19192         Rename from extr_register_operand.
19193         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
19194         (*extzx<mode>): Ditto.
19195         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
19196         (*ashl<mode>3_mask): Ditto.
19197         (*<any_shiftrt:insn><mode>3_mask): Ditto.
19198         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
19199         (*<any_rotate:insn><mode>3_mask): Ditto.
19200         (*<btsc><mode>_mask): Ditto.
19201         (*btr<mode>_mask): Ditto.
19202         (*jcc_bt<mode>_mask_1): Ditto.
19204 2023-02-15  Richard Biener  <rguenther@suse.de>
19206         PR middle-end/26854
19207         * df-core.cc (df_worklist_propagate_forward): Put later
19208         blocks on worklist and only earlier blocks on pending.
19209         (df_worklist_propagate_backward): Likewise.
19210         (df_worklist_dataflow_doublequeue): Change the iteration
19211         to process new blocks in the same iteration if that
19212         maintains the iteration order.
19214 2023-02-15  Marek Polacek  <polacek@redhat.com>
19216         PR middle-end/106080
19217         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
19218         instead.
19220 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19222         * config/riscv/predicates.md: Refine codes.
19223         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
19224         * config/riscv/riscv-v.cc: Refine codes.
19225         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
19226         enum.
19227         (class imac): New class.
19228         (enum widen_ternop_type): New enum.
19229         (class iwmac): New class.
19230         (BASE): New class.
19231         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19232         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
19233         (vnmsac): Ditto.
19234         (vmadd): Ditto.
19235         (vnmsub): Ditto.
19236         (vwmacc): Ditto.
19237         (vwmaccu): Ditto.
19238         (vwmaccsu): Ditto.
19239         (vwmaccus): Ditto.
19240         * config/riscv/riscv-vector-builtins.cc
19241         (function_builder::apply_predication): Adjust for multiply-add support.
19242         (function_expander::add_vundef_operand): Refine codes.
19243         (function_expander::use_ternop_insn): New function.
19244         (function_expander::use_widen_ternop_insn): Ditto.
19245         * config/riscv/riscv-vector-builtins.h: New function.
19246         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
19247         (pred_mul_<optab><mode>_undef_merge): Ditto.
19248         (*pred_<madd_nmsub><mode>): Ditto.
19249         (*pred_<macc_nmsac><mode>): Ditto.
19250         (*pred_mul_<optab><mode>): Ditto.
19251         (@pred_mul_<optab><mode>_scalar): Ditto.
19252         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
19253         (*pred_<madd_nmsub><mode>_scalar): Ditto.
19254         (*pred_<macc_nmsac><mode>_scalar): Ditto.
19255         (*pred_mul_<optab><mode>_scalar): Ditto.
19256         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
19257         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
19258         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
19259         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
19260         (@pred_widen_mul_plus<su><mode>): Ditto.
19261         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
19262         (@pred_widen_mul_plussu<mode>): Ditto.
19263         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
19264         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
19266 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19268         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
19269         (vector_all_trues_mask_operand): New predicate.
19270         (vector_undef_operand): New predicate.
19271         (ltge_operator): New predicate.
19272         (comparison_except_ltge_operator): New predicate.
19273         (comparison_except_eqge_operator): New predicate.
19274         (ge_operator): New predicate.
19275         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
19276         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
19277         (BASE): Ditto.
19278         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19279         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
19280         (vmsne): Ditto.
19281         (vmslt): Ditto.
19282         (vmsgt): Ditto.
19283         (vmsle): Ditto.
19284         (vmsge): Ditto.
19285         (vmsltu): Ditto.
19286         (vmsgtu): Ditto.
19287         (vmsleu): Ditto.
19288         (vmsgeu): Ditto.
19289         * config/riscv/riscv-vector-builtins-shapes.cc
19290         (struct return_mask_def): Adjust for compare support.
19291         * config/riscv/riscv-vector-builtins.cc
19292         (function_expander::use_compare_insn): New function.
19293         * config/riscv/riscv-vector-builtins.h
19294         (function_expander::add_integer_operand): Ditto.
19295         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
19296         * config/riscv/riscv.md: Add vector min/max attributes.
19297         * config/riscv/vector-iterators.md (xnor): New iterator.
19298         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
19299         (*pred_cmp<mode>): Ditto.
19300         (*pred_cmp<mode>_narrow): Ditto.
19301         (@pred_ltge<mode>): Ditto.
19302         (*pred_ltge<mode>): Ditto.
19303         (*pred_ltge<mode>_narrow): Ditto.
19304         (@pred_cmp<mode>_scalar): Ditto.
19305         (*pred_cmp<mode>_scalar): Ditto.
19306         (*pred_cmp<mode>_scalar_narrow): Ditto.
19307         (@pred_eqne<mode>_scalar): Ditto.
19308         (*pred_eqne<mode>_scalar): Ditto.
19309         (*pred_eqne<mode>_scalar_narrow): Ditto.
19310         (*pred_cmp<mode>_extended_scalar): Ditto.
19311         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
19312         (*pred_eqne<mode>_extended_scalar): Ditto.
19313         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
19314         (@pred_ge<mode>_scalar): Ditto.
19315         (@pred_<optab><mode>): Ditto.
19316         (@pred_n<optab><mode>): Ditto.
19317         (@pred_<optab>n<mode>): Ditto.
19318         (@pred_not<mode>): Ditto.
19320 2023-02-15  Martin Jambor  <mjambor@suse.cz>
19322         PR ipa/108679
19323         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
19324         creation of non-scalar replacements even if IPA-CP knows their
19325         contents.
19327 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
19329         PR target/108787
19330         PR target/103109
19331         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
19332         expander, change operand 3 to be TImode, emit maddlddi4 and
19333         umadddi4_highpart{,_le} with its low half and finally add the high
19334         half to the result.
19336 2023-02-15  Martin Liska  <mliska@suse.cz>
19338         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
19340 2023-02-15  Richard Biener  <rguenther@suse.de>
19342         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
19343         for with_poison and alias worklist to it.
19344         (sanitize_asan_mark_poison): Likewise.
19346 2023-02-15  Richard Biener  <rguenther@suse.de>
19348         PR target/108738
19349         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
19350         Combine bitmap test and set.
19351         (scalar_chain::add_insn): Likewise.
19352         (scalar_chain::analyze_register_chain): Remove redundant
19353         attempt to add to queue and instead strengthen assert.
19354         Sink common attempts to mark the def dual-mode.
19355         (scalar_chain::add_to_queue): Remove redundant insn bitmap
19356         check.
19358 2023-02-15  Richard Biener  <rguenther@suse.de>
19360         PR target/108738
19361         * config/i386/i386-features.cc (convert_scalars_to_vector):
19362         Switch candidates bitmaps to tree view before building the chains.
19364 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
19366         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
19367         "failure trying to reload" call.
19369 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
19371         * gdbinit.in (phrs): New command.
19372         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
19373         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
19375 2023-02-14  David Faust  <david.faust@oracle.com>
19377         PR target/108790
19378         * config/bpf/constraints.md (q): New memory constraint.
19379         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
19380         (zero_extendqidi2): Likewise.
19381         (zero_extendsidi2): Likewise.
19382         (*mov<MM:mode>): Likewise.
19384 2023-02-14  Andrew Pinski  <apinski@marvell.com>
19386         PR tree-optimization/108355
19387         PR tree-optimization/96921
19388         * match.pd: Add pattern for "1 - bool_val".
19390 2023-02-14  Richard Biener  <rguenther@suse.de>
19392         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
19393         basic block index hashing on the availability of ->cclhs.
19394         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
19395         rely on ->cclhs availability.
19396         (vn_phi_lookup): Set ->cclhs only when we are eventually
19397         going to CSE the PHI.
19398         (vn_phi_insert): Likewise.
19400 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
19402         * gimplify.cc (gimplify_save_expr): Add missing guard.
19404 2023-02-14  Richard Biener  <rguenther@suse.de>
19406         PR tree-optimization/108782
19407         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
19408         Make sure we're not vectorizing an inner loop.
19410 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
19412         PR sanitizer/108777
19413         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
19414         * asan.h (asan_memfn_rtl): Declare.
19415         * asan.cc (asan_memfn_rtls): New variable.
19416         (asan_memfn_rtl): New function.
19417         * builtins.cc (expand_builtin): If
19418         param_asan_kernel_mem_intrinsic_prefix and function is
19419         kernel-{,hw}address sanitized, emit calls to
19420         __{,hw}asan_{memcpy,memmove,memset} rather than
19421         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
19422         instead of flag_sanitize & SANITIZE_ADDRESS to check if
19423         asan_intercepted_p functions shouldn't be expanded inline.
19425 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
19427         PR tree-optimization/96373
19428         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
19429         operations on the loop mask.  Reject partial vectors if this isn't
19430         possible.
19432 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
19434         PR rtl-optimization/108681
19435         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
19436         code to handle bare uses and clobbers.
19438 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
19440         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
19441         caller_save_p flag when clearing defined_p flag.
19442         (setup_reg_equiv): Ditto.
19443         * lra-constraints.cc (lra_constraints): Ditto.
19445 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
19447         PR target/108516
19448         * config/i386/predicates.md (extr_register_operand):
19449         New special predicate.
19450         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
19451         as operand 1 predicate.
19452         (*exzv<mode>): Ditto.
19453         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
19455 2023-02-13  Richard Biener  <rguenther@suse.de>
19457         PR tree-optimization/28614
19458         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
19459         walking all edges in most cases.
19460         (vn_nary_op_insert_pieces_predicated): Avoid repeated
19461         calls to can_track_predicate_on_edge unless checking is
19462         enabled.
19463         (process_bb): Instead call it once here for each edge
19464         we register possibly multiple predicates on.
19466 2023-02-13  Richard Biener  <rguenther@suse.de>
19468         PR tree-optimization/108691
19469         * tree-cfg.cc (notice_special_calls): When the CFG is built
19470         honor gimple_call_ctrl_altering_p.
19471         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
19472         temporarily if the call is not control-altering.
19473         * calls.cc (emit_call_1): Do not add REG_SETJMP if
19474         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
19476 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
19478         PR target/108102
19479         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
19480         (struct s390_sched_state): Initialise to zero.
19481         (s390_sched_variable_issue): For better debuggability also emit
19482         the current side.
19483         (s390_sched_init): Unconditionally reset scheduler state.
19485 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
19487         * ifcvt.h (noce_if_info::cond_inverted): New field.
19488         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
19489         values when cond_inverted is true.
19490         (noce_find_if_block): Allow the condition to be inverted when
19491         handling conditional moves.
19493 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
19495         * config/s390/predicates.md (execute_operation): Use
19496         constrain_operands instead of extract_constrain_insn in order to
19497         determine wheter there exists a valid alternative.
19499 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
19501         * common/config/arc/arc-common.cc (arc_option_optimization_table):
19502         Remove millicode from list.
19504 2023-02-13  Martin Liska  <mliska@suse.cz>
19506         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
19508 2023-02-13  Richard Biener  <rguenther@suse.de>
19510         PR tree-optimization/106722
19511         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
19512         whether we marked a stmt.
19513         (mark_control_dependent_edges_necessary): When
19514         mark_last_stmt_necessary didn't mark any stmt make sure
19515         to mark its control dependent edges.
19516         (propagate_necessity): Likewise.
19518 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
19520         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
19521         (DWARF_FRAME_REGISTERS): New.
19522         (DWARF_REG_TO_UNWIND_COLUMN): New.
19524 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
19526         * doc/sourcebuild.texi: Remove (broken) direct reference to
19527         "The GNU configure and build system".
19529 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
19531         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
19532         gen_add3_insn to gen_rtx_SET.
19533         (riscv_adjust_libcall_cfi_epilogue): Likewise.
19535 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19537         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
19538         (class vnclip): Ditto.
19539         (BASE): Ditto.
19540         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19541         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
19542         (vasub): Ditto.
19543         (vaaddu): Ditto.
19544         (vasubu): Ditto.
19545         (vsmul): Ditto.
19546         (vssra): Ditto.
19547         (vssrl): Ditto.
19548         (vnclipu): Ditto.
19549         (vnclip): Ditto.
19550         * config/riscv/vector-iterators.md (su): Add instruction.
19551         (aadd): Ditto.
19552         (vaalu): Ditto.
19553         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
19554         (@pred_<sat_op><mode>_scalar): Ditto.
19555         (*pred_<sat_op><mode>_scalar): Ditto.
19556         (*pred_<sat_op><mode>_extended_scalar): Ditto.
19557         (@pred_narrow_clip<v_su><mode>): Ditto.
19558         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
19560 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19562         * config/riscv/constraints.md (Wbr): Remove unused constraint.
19563         * config/riscv/predicates.md: Fix move operand predicate.
19564         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
19565         (class vncvt_x): Ditto.
19566         (class vmerge): Ditto.
19567         (class vmv_v): Ditto.
19568         (BASE): Ditto.
19569         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19570         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
19571         (vsrl): Ditto.
19572         (vnsrl): Ditto.
19573         (vnsra): Ditto.
19574         (vncvt_x): Ditto.
19575         (vmerge): Ditto.
19576         (vmv_v): Ditto.
19577         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
19578         (struct move_def): Ditto.
19579         (SHAPE): Ditto.
19580         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19581         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
19582         (DEF_RVV_WEXTU_OPS): Ditto
19583         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
19584         (v_v): Ditto.
19585         (v_x): Ditto.
19586         (x_w): Ditto.
19587         (x): Ditto.
19588         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
19589         * config/riscv/vector-iterators.md (nmsac):New iterator.
19590         (nmsub): New iterator.
19591         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
19592         (@pred_merge<mode>_scalar): New pattern.
19593         (*pred_merge<mode>_scalar): New pattern.
19594         (*pred_merge<mode>_extended_scalar): New pattern.
19595         (@pred_narrow_<optab><mode>): New pattern.
19596         (@pred_narrow_<optab><mode>_scalar): New pattern.
19597         (@pred_trunc<mode>): New pattern.
19599 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19601         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
19602         (class vmsbc): Ditto.
19603         (BASE): Define new class.
19604         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19605         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
19606         (vmsbc): Ditto.
19607         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
19608         New class.
19609         (SHAPE): Ditto.
19610         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19611         * config/riscv/riscv-vector-builtins.cc
19612         (function_expander::use_exact_insn): Adjust for new support
19613         * config/riscv/riscv-vector-builtins.h
19614         (function_base::has_merge_operand_p): New function.
19615         * config/riscv/vector-iterators.md: New iterator.
19616         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
19617         (@pred_msbc<mode>): Ditto.
19618         (@pred_madc<mode>_scalar): Ditto.
19619         (@pred_msbc<mode>_scalar): Ditto.
19620         (*pred_madc<mode>_scalar): Ditto.
19621         (*pred_madc<mode>_extended_scalar): Ditto.
19622         (*pred_msbc<mode>_scalar): Ditto.
19623         (*pred_msbc<mode>_extended_scalar): Ditto.
19624         (@pred_madc<mode>_overflow): Ditto.
19625         (@pred_msbc<mode>_overflow): Ditto.
19626         (@pred_madc<mode>_overflow_scalar): Ditto.
19627         (@pred_msbc<mode>_overflow_scalar): Ditto.
19628         (*pred_madc<mode>_overflow_scalar): Ditto.
19629         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
19630         (*pred_msbc<mode>_overflow_scalar): Ditto.
19631         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
19633 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19635         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
19636         * config/riscv/riscv-v.cc (simm32_p): Ditto.
19637         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
19638         (class vsbc): Ditto.
19639         (BASE): Ditto.
19640         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19641         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
19642         (vsbc): Ditto.
19643         * config/riscv/riscv-vector-builtins-shapes.cc
19644         (struct no_mask_policy_def): Ditto.
19645         (SHAPE): Ditto.
19646         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19647         * config/riscv/riscv-vector-builtins.cc
19648         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
19649         (rvv_arg_type_info::get_tree_type): Ditto.
19650         (function_expander::use_exact_insn): Ditto.
19651         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
19652         (function_base::use_mask_predication_p): New function.
19653         * config/riscv/vector-iterators.md: New iterator.
19654         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
19655         (@pred_sbc<mode>): Ditto.
19656         (@pred_adc<mode>_scalar): Ditto.
19657         (@pred_sbc<mode>_scalar): Ditto.
19658         (*pred_adc<mode>_scalar): Ditto.
19659         (*pred_adc<mode>_extended_scalar): Ditto.
19660         (*pred_sbc<mode>_scalar): Ditto.
19661         (*pred_sbc<mode>_extended_scalar): Ditto.
19663 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19665         * config/riscv/vector.md: use "zero" reg.
19667 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19669         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
19670         class.
19671         (class vwmulsu): Ditto.
19672         (class vwcvt): Ditto.
19673         (BASE): Add integer widening support.
19674         * config/riscv/riscv-vector-builtins-bases.h: Ditto
19675         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
19676         (vwsub): New class.
19677         (vwmul): New class.
19678         (vwmulu): New class.
19679         (vwmulsu): New class.
19680         (vwaddu): New class.
19681         (vwsubu): New class.
19682         (vwcvt_x): New class.
19683         (vwcvtu_x): New class.
19684         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
19685         class.
19686         (struct widen_alu_def): New class.
19687         (SHAPE): New class.
19688         * config/riscv/riscv-vector-builtins-shapes.h: New class.
19689         * config/riscv/riscv-vector-builtins.cc
19690         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
19691         (rvv_arg_type_info::get_tree_type): Ditto.
19692         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
19693         (x_v): Ditto.
19694         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
19695         widening support.
19696         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
19697         * config/riscv/riscv.h (X0_REGNUM): New constant.
19698         * config/riscv/vector-iterators.md: New iterators.
19699         * config/riscv/vector.md
19700         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
19701         pattern.
19702         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
19703         Ditto.
19704         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
19705         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
19706         Ditto.
19707         (@pred_widen_mulsu<mode>): Ditto.
19708         (@pred_widen_mulsu<mode>_scalar): Ditto.
19709         (@pred_<optab><mode>): Ditto.
19711 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19712             kito-cheng  <kito.cheng@sifive.com>
19714         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
19715         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
19716         (BASE): Ditto.
19717         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19718         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
19719         API support.
19720         (vmulhu): Ditto.
19721         (vmulhsu): Ditto.
19722         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
19723         New macro.
19724         (DEF_RVV_FULL_V_U_OPS): Ditto.
19725         (vint8mf8_t): Ditto.
19726         (vint8mf4_t): Ditto.
19727         (vint8mf2_t): Ditto.
19728         (vint8m1_t): Ditto.
19729         (vint8m2_t): Ditto.
19730         (vint8m4_t): Ditto.
19731         (vint8m8_t): Ditto.
19732         (vint16mf4_t): Ditto.
19733         (vint16mf2_t): Ditto.
19734         (vint16m1_t): Ditto.
19735         (vint16m2_t): Ditto.
19736         (vint16m4_t): Ditto.
19737         (vint16m8_t): Ditto.
19738         (vint32mf2_t): Ditto.
19739         (vint32m1_t): Ditto.
19740         (vint32m2_t): Ditto.
19741         (vint32m4_t): Ditto.
19742         (vint32m8_t): Ditto.
19743         (vint64m1_t): Ditto.
19744         (vint64m2_t): Ditto.
19745         (vint64m4_t): Ditto.
19746         (vint64m8_t): Ditto.
19747         (vuint8mf8_t): Ditto.
19748         (vuint8mf4_t): Ditto.
19749         (vuint8mf2_t): Ditto.
19750         (vuint8m1_t): Ditto.
19751         (vuint8m2_t): Ditto.
19752         (vuint8m4_t): Ditto.
19753         (vuint8m8_t): Ditto.
19754         (vuint16mf4_t): Ditto.
19755         (vuint16mf2_t): Ditto.
19756         (vuint16m1_t): Ditto.
19757         (vuint16m2_t): Ditto.
19758         (vuint16m4_t): Ditto.
19759         (vuint16m8_t): Ditto.
19760         (vuint32mf2_t): Ditto.
19761         (vuint32m1_t): Ditto.
19762         (vuint32m2_t): Ditto.
19763         (vuint32m4_t): Ditto.
19764         (vuint32m8_t): Ditto.
19765         (vuint64m1_t): Ditto.
19766         (vuint64m2_t): Ditto.
19767         (vuint64m4_t): Ditto.
19768         (vuint64m8_t): Ditto.
19769         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
19770         (DEF_RVV_FULL_V_U_OPS): Ditto.
19771         (check_required_extensions): Add vmulh support.
19772         (rvv_arg_type_info::get_tree_type): Ditto.
19773         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
19774         (enum rvv_base_type): Ditto.
19775         * config/riscv/riscv.opt: Add 'V' extension flag.
19776         * config/riscv/vector-iterators.md (su): New iterator.
19777         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
19778         (@pred_mulh<v_su><mode>_scalar): Ditto.
19779         (*pred_mulh<v_su><mode>_scalar): Ditto.
19780         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
19782 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19784         * config/riscv/iterators.md: Add sign_extend/zero_extend.
19785         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
19786         (BASE): Ditto.
19787         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
19788         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
19789         define.
19790         (vzext): Ditto.
19791         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
19792         for vsext/vzext support.
19793         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
19794         macro define.
19795         (DEF_RVV_QEXTI_OPS): Ditto.
19796         (DEF_RVV_OEXTI_OPS): Ditto.
19797         (DEF_RVV_WEXTU_OPS): Ditto.
19798         (DEF_RVV_QEXTU_OPS): Ditto.
19799         (DEF_RVV_OEXTU_OPS): Ditto.
19800         (vint16mf4_t): Ditto.
19801         (vint16mf2_t): Ditto.
19802         (vint16m1_t): Ditto.
19803         (vint16m2_t): Ditto.
19804         (vint16m4_t): Ditto.
19805         (vint16m8_t): Ditto.
19806         (vint32mf2_t): Ditto.
19807         (vint32m1_t): Ditto.
19808         (vint32m2_t): Ditto.
19809         (vint32m4_t): Ditto.
19810         (vint32m8_t): Ditto.
19811         (vint64m1_t): Ditto.
19812         (vint64m2_t): Ditto.
19813         (vint64m4_t): Ditto.
19814         (vint64m8_t): Ditto.
19815         (vuint16mf4_t): Ditto.
19816         (vuint16mf2_t): Ditto.
19817         (vuint16m1_t): Ditto.
19818         (vuint16m2_t): Ditto.
19819         (vuint16m4_t): Ditto.
19820         (vuint16m8_t): Ditto.
19821         (vuint32mf2_t): Ditto.
19822         (vuint32m1_t): Ditto.
19823         (vuint32m2_t): Ditto.
19824         (vuint32m4_t): Ditto.
19825         (vuint32m8_t): Ditto.
19826         (vuint64m1_t): Ditto.
19827         (vuint64m2_t): Ditto.
19828         (vuint64m4_t): Ditto.
19829         (vuint64m8_t): Ditto.
19830         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
19831         (DEF_RVV_QEXTI_OPS): Ditto.
19832         (DEF_RVV_OEXTI_OPS): Ditto.
19833         (DEF_RVV_WEXTU_OPS): Ditto.
19834         (DEF_RVV_QEXTU_OPS): Ditto.
19835         (DEF_RVV_OEXTU_OPS): Ditto.
19836         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
19837         support.
19838         (rvv_arg_type_info::get_tree_type): Ditto.
19839         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
19840         * config/riscv/vector-iterators.md (z): New attribute.
19841         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
19842         (@pred_<optab><mode>_vf4): Ditto.
19843         (@pred_<optab><mode>_vf8): Ditto.
19845 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19847         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
19848         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
19849         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
19850         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19851         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
19852         (vssub): Ditto.
19853         (vsaddu): Ditto.
19854         (vssubu): Ditto.
19855         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
19856         support.
19857         (sll.vv): Ditto.
19858         (%3,%v4): Ditto.
19859         (%3,%4): Ditto.
19860         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
19861         (@pred_<optab><mode>_scalar): New pattern.
19862         (*pred_<optab><mode>_scalar): New pattern.
19863         (*pred_<optab><mode>_extended_scalar): New pattern.
19865 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19867         * config/riscv/iterators.md: Add neg and not.
19868         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
19869         (BASE): Ditto.
19870         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19871         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
19872         into alu.
19873         (vsub): Ditto.
19874         (vand): Ditto.
19875         (vor): Ditto.
19876         (vxor): Ditto.
19877         (vsll): Ditto.
19878         (vsra): Ditto.
19879         (vsrl): Ditto.
19880         (vmin): Ditto.
19881         (vmax): Ditto.
19882         (vminu): Ditto.
19883         (vmaxu): Ditto.
19884         (vmul): Ditto.
19885         (vdiv): Ditto.
19886         (vrem): Ditto.
19887         (vdivu): Ditto.
19888         (vremu): Ditto.
19889         (vrsub): Ditto.
19890         (vneg): Ditto.
19891         (vnot): Ditto.
19892         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
19893         (struct alu_def): Ditto.
19894         (SHAPE): Ditto.
19895         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19896         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
19897         * config/riscv/vector-iterators.md: New iterator.
19898         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
19900 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19902         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
19904 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
19906         PR ipa/108605
19907         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
19908         item->offset bit position is too large to be representable as
19909         unsigned int byte position.
19911 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
19913         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
19915 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
19917         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
19918         valid_combine only when ira_use_lra_p is true.
19920 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
19922         * params.opt (ira-simple-lra-insn-threshold): Add new param.
19923         * ira.cc (ira): Use the param to switch on simple LRA.
19925 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
19927         PR tree-optimization/108687
19928         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
19929         back to RFD_NONE mode for calculations.
19930         (ranger_cache::propagate_cache): Call the internal edge range API
19931         with RFD_READ_ONLY instead of changing the external routine.
19933 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
19935         PR tree-optimization/108520
19936         * gimple-range-infer.cc (check_assume_func): Invoke
19937         gimple_range_global directly instead using global_range_query.
19938         * value-query.cc (get_range_global): Add function context and
19939         avoid calling nonnull_arg_p if not cfun.
19940         (gimple_range_global): Add function context pointer.
19941         * value-query.h (imple_range_global): Add function context.
19943 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19945         * config/riscv/constraints.md (Wdm): Adjust constraint.
19946         (Wbr): New constraint.
19947         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
19948         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
19949         (emit_vlmax_op): New function.
19950         (emit_nonvlmax_op): Ditto.
19951         (simm32_p): Ditto.
19952         (neg_simm5_p): Ditto.
19953         (has_vi_variant_p): Ditto.
19954         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
19955         (emit_vlmax_op): New function.
19956         (emit_nonvlmax_op): Ditto.
19957         (expand_const_vector): Adjust function.
19958         (legitimize_move): Ditto.
19959         (simm32_p): New function.
19960         (simm5_p): Ditto.
19961         (neg_simm5_p): Ditto.
19962         (has_vi_variant_p): Ditto.
19963         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
19964         (BASE): Ditto.
19965         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19966         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
19967         unsigned cases.
19968         (vmax): Ditto.
19969         (vminu): Remove signed cases.
19970         (vmaxu): Ditto.
19971         (vdiv): Remove unsigned cases.
19972         (vrem): Ditto.
19973         (vdivu): Remove signed cases.
19974         (vremu): Ditto.
19975         (vadd): Adjust.
19976         (vsub): Ditto.
19977         (vrsub): New class.
19978         (vand): Adjust.
19979         (vor): Ditto.
19980         (vxor): Ditto.
19981         (vmul): Ditto.
19982         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
19983         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
19984         * config/riscv/vector-iterators.md: New iterators.
19985         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
19986         support.
19987         (@pred_<optab><mode>_scalar): New pattern.
19988         (@pred_sub<mode>_reverse_scalar): Ditto.
19989         (*pred_<optab><mode>_scalar): Ditto.
19990         (*pred_<optab><mode>_extended_scalar): Ditto.
19991         (*pred_sub<mode>_reverse_scalar): Ditto.
19992         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
19994 2023-02-10  Richard Biener  <rguenther@suse.de>
19996         PR tree-optimization/108724
19997         * tree-vect-stmts.cc (vectorizable_operation): Avoid
19998         using word_mode vectors when vector lowering will
19999         decompose them to elementwise operations.
20001 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
20003         Revert:
20004         2023-02-09  Martin Liska  <mliska@suse.cz>
20006         PR target/100758
20007         * doc/extend.texi: Document that the function
20008         does not work correctly for old VIA processors.
20010 2023-02-10  Andrew Pinski  <apinski@marvell.com>
20011             Andrew Macleod   <amacleod@redhat.com>
20013         PR tree-optimization/108684
20014         * tree-ssa-dce.cc (simple_dce_from_worklist):
20015         Check all ssa names and not just non-vdef ones
20016         before accepting the inline-asm.
20017         Call unlink_stmt_vdef on the statement before
20018         removing it.
20020 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
20022         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
20023         * ira.cc (validate_equiv_mem): Check memref address variance.
20024         (no_equiv): Clear caller_save_p flag.
20025         (update_equiv_regs): Define caller save equivalence for
20026         valid_combine.
20027         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
20028         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
20029         call_save_p.  Use caller save equivalence depending on the arg.
20030         (split_reg): Adjust the call.
20032 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
20034         PR target/100758
20035         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
20036         (cpu_indicator_init): Call get_available_features for all CPUs with
20037         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
20038         fixes.
20040 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
20042         PR tree-optimization/108688
20043         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
20044         of BIT_INSERT_EXPR extracting exactly all inserted bits even
20045         when without mode precision.  Formatting fixes.
20047 2023-02-09  Andrew Pinski  <apinski@marvell.com>
20049         PR tree-optimization/108688
20050         * match.pd (bit_field_ref [bit_insert]): Avoid generating
20051         BIT_FIELD_REFs of non-mode-precision integral operands.
20053 2023-02-09  Martin Liska  <mliska@suse.cz>
20055         PR target/100758
20056         * doc/extend.texi: Document that the function
20057         does not work correctly for old VIA processors.
20059 2023-02-09  Andreas Schwab  <schwab@suse.de>
20061         * lto-wrapper.cc (merge_and_complain): Handle
20062         -funwind-tables and -fasynchronous-unwind-tables.
20063         (append_compiler_options): Likewise.
20065 2023-02-09  Richard Biener  <rguenther@suse.de>
20067         PR tree-optimization/26854
20068         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
20069         view around insert_updated_phi_nodes_for.
20070         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
20071         in tree view.
20072         (walk_aliased_vdefs_1): Likewise.
20074 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
20076         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
20078 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
20080         PR target/108505
20081         * config.gcc (tm_mlib_file): Define new variable.
20083 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
20085         PR tree-optimization/108692
20086         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
20087         widened_code which is different from code, don't call
20088         vect_look_through_possible_promotion but instead just check op is
20089         SSA_NAME with integral type for which vect_is_simple_use is true
20090         and call set_op on this_unprom.
20092 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
20094         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
20095         declaration.
20096         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
20097         definition.
20098         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
20099         to 'aarch_ra_sign_key'.
20100         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
20101         declaration.
20102         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
20103         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
20104         * config/arm/arm.opt: Define.
20106 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
20108         PR tree-optimization/108316
20109         * tree-vect-stmts.cc (get_load_store_type): When using
20110         internal functions for gather/scatter, make sure that the type
20111         of the offset argument is consistent with the offset vector type.
20113 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
20115         Revert:
20116         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
20118         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
20119         * ira.cc (validate_equiv_mem): Check memref address variance.
20120         (update_equiv_regs): Define caller save equivalence for
20121         valid_combine.
20122         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
20123         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
20124         call_save_p.  Use caller save equivalence depending on the arg.
20125         (split_reg): Adjust the call.
20127 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
20129         * tree.def (SAD_EXPR): Remove outdated comment about missing
20130         WIDEN_MINUS_EXPR.
20132 2023-02-07  Marek Polacek  <polacek@redhat.com>
20134         * doc/invoke.texi: Update -fchar8_t documentation.
20136 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
20138         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
20139         * ira.cc (validate_equiv_mem): Check memref address variance.
20140         (update_equiv_regs): Define caller save equivalence for
20141         valid_combine.
20142         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
20143         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
20144         call_save_p.  Use caller save equivalence depending on the arg.
20145         (split_reg): Adjust the call.
20147 2023-02-07  Richard Biener  <rguenther@suse.de>
20149         PR tree-optimization/26854
20150         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
20151         instead of immediate uses.
20153 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
20155         PR tree-optimization/106923
20156         * ipa-split.cc (execute_split_functions): Don't split returns_twice
20157         functions.
20159 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
20161         PR tree-optimization/106433
20162         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
20163         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
20165 2023-02-07  Jan Hubicka  <jh@suse.cz>
20167         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
20168         for znver4.
20170 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
20172         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
20173         (process_asm): Create a constructor for GCN_STACK_SIZE.
20174         (main): Parse the -mstack-size option.
20176 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
20178         PR target/104921
20179         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
20180         Use correct constraint for operand 3.
20182 2023-02-06  Martin Jambor  <mjambor@suse.cz>
20184         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
20186 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
20188         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
20189         New define_int_iterator.
20190         (bytepick_d_ashift_amount): Likewise.
20191         (bytepick_imm): New define_int_attr.
20192         (bytepick_w_lshiftrt_amount): Likewise.
20193         (bytepick_d_lshiftrt_amount): Likewise.
20194         (bytepick_w_<bytepick_imm>): New define_insn template.
20195         (bytepick_w_<bytepick_imm>_extend): Likewise.
20196         (bytepick_d_<bytepick_imm>): Likewise.
20197         (bytepick_w): Remove unused define_insn.
20198         (bytepick_d): Likewise.
20199         (UNSPEC_BYTEPICK_W): Remove unused unspec.
20200         (UNSPEC_BYTEPICK_D): Likewise.
20201         * config/loongarch/predicates.md (const_0_to_3_operand):
20202         Remove unused define_predicate.
20203         (const_0_to_7_operand): Likewise.
20205 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
20207         PR tree-optimization/108655
20208         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
20209         or -fsanitize=unreachable -fsanitize-trap=unreachable return
20210         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
20212 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
20214         * doc/install.texi (Specific): Remove PW32.
20216 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
20218         PR tree-optimization/108647
20219         * range-op.cc (operator_equal::op1_range,
20220         operator_not_equal::op1_range): Don't test op2 bound
20221         equality if op2.undefined_p (), instead set_varying.
20222         (operator_lt::op1_range, operator_le::op1_range,
20223         operator_gt::op1_range, operator_ge::op1_range): Return false if
20224         op2.undefined_p ().
20225         (operator_lt::op2_range, operator_le::op2_range,
20226         operator_gt::op2_range, operator_ge::op2_range): Return false if
20227         op1.undefined_p ().
20229 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
20231         PR tree-optimization/108639
20232         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
20233         widest_int.
20234         (irange::operator==): Same.
20236 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
20238         PR tree-optimization/108647
20239         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
20240         (foperator_lt::op2_range): Same.
20241         (foperator_le::op1_range): Same.
20242         (foperator_le::op2_range): Same.
20243         (foperator_gt::op1_range): Same.
20244         (foperator_gt::op2_range): Same.
20245         (foperator_ge::op1_range): Same.
20246         (foperator_ge::op2_range): Same.
20247         (foperator_unordered_lt::op1_range): Same.
20248         (foperator_unordered_lt::op2_range): Same.
20249         (foperator_unordered_le::op1_range): Same.
20250         (foperator_unordered_le::op2_range): Same.
20251         (foperator_unordered_gt::op1_range): Same.
20252         (foperator_unordered_gt::op2_range): Same.
20253         (foperator_unordered_ge::op1_range): Same.
20254         (foperator_unordered_ge::op2_range): Same.
20256 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
20258         PR tree-optimization/107570
20259         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
20261 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
20263         * doc/gm2.texi (Internals): Remove from menu.
20264         (Using): Comment out ifnohtml conditional.
20265         (Documentation): Use gcc url.
20266         (License): Node simplified.
20267         (Copying): New node.  Include gpl_v3_without_node.
20268         (Contributing): Node simplified.
20269         (Internals): Commented out.
20270         (Libraries): Node simplified.
20271         (Indices): Ditto.
20272         (Contents): Ditto.
20273         (Functions): Ditto.
20275 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
20277         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
20278         attribute.
20279         (mve_vqshluq_m_n_s<mode>): Likewise.
20280         (mve_vshlq_m_<supf><mode>): Likewise.
20281         (mve_vsriq_m_n_<supf><mode>): Likewise.
20282         (mve_vsubq_m_<supf><mode>): Likewise.
20284 2023-02-03  Martin Jambor  <mjambor@suse.cz>
20286         PR ipa/108384
20287         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
20288         when comparing to an IPA-CP value.
20289         (dump_list_of_param_indices): New function.
20290         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
20291         Dump removed candidates using dump_list_of_param_indices.
20292         * ipa-param-manipulation.cc
20293         (ipa_param_body_adjustments::modify_expression): Add assert checking
20294         sizes of a VIEW_CONVERT_EXPR will match.
20295         (ipa_param_body_adjustments::modify_assignment): Likewise.
20297 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
20299         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
20300         * config/riscv/riscv.cc: Ditto.
20302 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20304         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
20305         (sll.vv): Ditto.
20306         (%3,%4): Ditto.
20307         (%3,%v4): Ditto.
20308         * config/riscv/vector.md: Ditto.
20310 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20312         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
20313         * config/riscv/riscv-vector-builtins-bases.cc: New class.
20314         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
20315         (vsra): Ditto.
20316         (vsrl): Ditto.
20317         * config/riscv/riscv-vector-builtins.cc: Ditto.
20318         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
20320 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
20322         * toplev.cc (toplev::main): Only print the version information header
20323         from toplevel main().
20325 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
20327         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
20328         cond_{ashl|ashr|lshr}
20330 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
20332         PR rtl-optimization/108086
20333         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
20334         Adjust size-related commentary accordingly.
20336 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
20338         PR rtl-optimization/108508
20339         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
20340         the splay tree search gives the first clobber in the second group,
20341         make sure that the root of the first clobber group is updated
20342         correctly.  Enter the new clobber group into the definition splay
20343         tree.
20345 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
20347         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
20348         Fix finding best match score.
20350 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
20352         PR debug/106746
20353         PR rtl-optimization/108463
20354         PR target/108484
20355         * cselib.cc (cselib_current_insn): Move declaration earlier.
20356         (cselib_hasher::equal): For debug only locs, temporarily override
20357         cselib_current_insn to their l->setting_insn for the
20358         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
20359         promote some debug locs.
20360         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
20361         when using cselib call cselib_lookup_from_insn on the address but
20362         don't substitute it.
20364 2023-02-02  Richard Biener  <rguenther@suse.de>
20366         PR middle-end/108625
20367         * genmatch.cc (expr::gen_transform): Also disallow resimplification
20368         from pushing to lseq with force_leaf.
20369         (dt_simplify::gen_1): Likewise.
20371 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
20373         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
20374         (struct kernargs): Replace the common content with kernargs_abi.
20375         (struct heap): Delete.
20376         (main): Read GCN_STACK_SIZE envvar.
20377         Allocate space for the device stacks.
20378         Write the new kernargs fields.
20379         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
20380         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
20381         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
20382         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
20383         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
20384         Set up the stacks from the values in the kernargs, not private.
20385         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
20386         (gcn_hsa_declare_function_name): Turn off the private segment.
20387         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
20388         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
20389         * config/gcn/gcn.opt (mstack-size): Change the description.
20391 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20393         PR target/108443
20394         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
20395         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
20396         addressing MVE predicate modes.
20397         (mve_bool_vec_to_const): Change to represent correct MVE predicate
20398         format.
20399         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
20400         modes.
20401         (arm_vector_mode_supported_p): Likewise.
20402         (arm_mode_to_pred_mode): Add V2QI.
20403         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
20404         qualifier.
20405         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
20406         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
20407         (v2qi_UP): New macro.
20408         (v4bi_UP): New macro.
20409         (v8bi_UP): New macro.
20410         (v16bi_UP): New macro.
20411         (arm_expand_builtin_args): Make it able to expand the new predicate
20412         modes.
20413         * config/arm/arm-modes.def (V2QI): New mode.
20414         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
20415         Pred4x4_t): Remove unused predicate builtin types.
20416         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
20417         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
20418         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
20419         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
20420         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
20421         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
20422         of MODE_VECTOR_BOOL.
20423         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
20424         (MVE_VPRED): Likewise.
20425         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
20426         (MVE_vctp): New mode attribute.
20427         (mode1): Remove.
20428         (VCTPQ): Remove.
20429         (VCTPQ_M): Remove.
20430         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
20431         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
20432         attributes.
20433         (mve_vpnothi): Rename this...
20434         (mve_vpnotv16bi): ... to this.
20435         (mve_vctp<mode1>q_mhi): Rename this...
20436         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
20437         (mve_vldrdq_gather_base_z_<supf>v2di,
20438         mve_vldrdq_gather_offset_z_<supf>v2di,
20439         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
20440         mve_vstrdq_scatter_base_p_<supf>v2di,
20441         mve_vstrdq_scatter_offset_p_<supf>v2di,
20442         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
20443         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
20444         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
20445         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
20446         mve_vldrdq_gather_base_wb_z_<supf>v2di,
20447         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
20448         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
20449         predicates.
20450         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
20451         these...
20452         (VCTP): ... with this.
20453         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
20454         (VCTP_M): ... with this.
20455         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
20456         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
20458 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20460         PR target/107674
20461         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
20462         (arm_modes_tieable_p): Make MVE predicate modes tieable.
20463         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
20464         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
20465         simplify_subreg to simplify subregs where the outermode is not scalar.
20467 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20469         PR target/107674
20470         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
20471         new qualifiers parameter and use unsigned short type for MVE predicate.
20472         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
20473         parameter.
20474         (arm_init_crypto_builtins): Likewise.
20476 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
20478         PR ipa/107300
20479         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
20480         * internal-fn.def (TRAP): Remove.
20481         * internal-fn.cc (expand_TRAP): Remove.
20482         * tree.cc (build_common_builtin_nodes): Define
20483         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
20484         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
20485         instead of BUILT_IN_TRAP.
20486         * gimple.cc (gimple_build_builtin_unreachable): Remove
20487         emitting internal function for BUILT_IN_TRAP.
20488         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
20489         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
20490         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
20491         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
20492         BUILT_IN_UNREACHABLE_TRAP.
20493         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
20494         * tree-cfg.cc (verify_gimple_call,
20495         pass_warn_function_return::execute): Likewise.
20496         * attribs.cc (decl_attributes): Don't report exclusions on
20497         BUILT_IN_UNREACHABLE_TRAP either.
20499 2023-02-02  liuhongt  <hongtao.liu@intel.com>
20501         PR tree-optimization/108601
20502         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
20503         * tree-vect-loop.cc
20504         (vectorizable_nonlinear_induction): Remove
20505         vect_can_peel_nonlinear_iv_p.
20506         (vect_can_peel_nonlinear_iv_p): Don't peel
20507         nonlinear iv(mult or shift) for epilog when vf is not
20508         constant and moved the defination to ..
20509         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
20510         .. Here.
20512 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
20514         PR middle-end/108435
20515         * tree-nested.cc (convert_nonlocal_omp_clauses)
20516         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
20517         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
20518         before calling declare_vars.
20519         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
20520         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
20521         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
20522         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
20524 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
20526         * common/config/aarch64/aarch64-common.cc
20527         (struct aarch64_option_extension): Add native_detect and document struct
20528         a bit more.
20529         (all_extensions): Set new field native_detect.
20530         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
20531         unused struct.
20533 2023-02-01  Martin Liska  <mliska@suse.cz>
20535         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
20536         value if set.
20538 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
20540         PR tree-optimization/108356
20541         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
20542         do a search of the DOM tree for a range.
20544 2023-02-01  Martin Liska  <mliska@suse.cz>
20546         PR ipa/108509
20547         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
20548         ony non-null values.
20549         * ipa.cc (walk_polymorphic_call_targets): Likewise.
20551 2023-02-01  Martin Liska  <mliska@suse.cz>
20553         PR driver/108572
20554         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
20555         -gz=zstd.
20557 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
20559         PR debug/108573
20560         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
20561         subregs in DEBUG_INSNs.
20563 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
20565         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
20567 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
20569         * config/s390/s390.cc (s390_restore_gpr_p): New function.
20570         (s390_preserve_gpr_arg_in_range_p): New function.
20571         (s390_preserve_gpr_arg_p): New function.
20572         (s390_preserve_fpr_arg_p): New function.
20573         (s390_register_info_stdarg_fpr): Rename to ...
20574         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
20575         (s390_register_info_stdarg_gpr): Rename to ...
20576         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
20577         (s390_register_info): Use the renamed functions above.
20578         (s390_optimize_register_info): Likewise.
20579         (save_fpr): Generate CFI for -mpreserve-args.
20580         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
20581         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
20582         (s390_optimize_prologue): Likewise.
20583         * config/s390/s390.opt: New option -mpreserve-args
20585 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
20587         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
20588         (restore_gprs): Likewise.
20589         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
20590         frame pointer if a frame-pointer is used.
20591         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
20592         * config/s390/s390.md (stack_tie): Add a register operand and
20593         rename to ...
20594         (@stack_tie<mode>): ... this.
20596 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
20598         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
20599         EMIT_CFI parameter.
20600         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
20601         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
20603 2023-02-01  Richard Biener  <rguenther@suse.de>
20605         PR middle-end/108500
20606         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
20607         with tree traversal algorithm.
20609 2023-02-01  Jason Merrill  <jason@redhat.com>
20611         * doc/invoke.texi: Document -Wno-changes-meaning.
20613 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
20615         * doc/invoke.texi (Static Analyzer Options): Add notes about
20616         limitations of -fanalyzer.
20618 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20620         * config/riscv/constraints.md (vj): New.
20621         (vk): Ditto
20622         * config/riscv/iterators.md: Add more opcode.
20623         * config/riscv/predicates.md (vector_arith_operand): New.
20624         (vector_neg_arith_operand): New.
20625         (vector_shift_operand): New.
20626         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
20627         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
20628         (vsub): Ditto.
20629         (vand): Ditto.
20630         (vor): Ditto.
20631         (vxor): Ditto.
20632         (vsll): Ditto.
20633         (vsra): Ditto.
20634         (vsrl): Ditto.
20635         (vmin): Ditto.
20636         (vmax): Ditto.
20637         (vminu): Ditto.
20638         (vmaxu): Ditto.
20639         (vmul): Ditto.
20640         (vdiv): Ditto.
20641         (vrem): Ditto.
20642         (vdivu): Ditto.
20643         (vremu): Ditto.
20644         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
20645         (vsub): Ditto.
20646         (vand): Ditto.
20647         (vor): Ditto.
20648         (vxor): Ditto.
20649         (vsll): Ditto.
20650         (vsra): Ditto.
20651         (vsrl): Ditto.
20652         (vmin): Ditto.
20653         (vmax): Ditto.
20654         (vminu): Ditto.
20655         (vmaxu): Ditto.
20656         (vmul): Ditto.
20657         (vdiv): Ditto.
20658         (vrem): Ditto.
20659         (vdivu): Ditto.
20660         (vremu): Ditto.
20661         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
20662         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
20663         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
20664         (DEF_RVV_U_OPS): New.
20665         (rvv_arg_type_info::get_base_vector_type): Handle
20666         RVV_BASE_shift_vector.
20667         (rvv_arg_type_info::get_tree_type): Ditto.
20668         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
20669         RVV_BASE_shift_vector.
20670         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
20671         * config/riscv/vector-iterators.md: Handle more opcode.
20672         * config/riscv/vector.md (@pred_<optab><mode>): New.
20674 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
20676         PR target/108589
20677         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
20678         REG_P on SET_DEST.
20680 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
20682         PR tree-optimization/108608
20683         * tree-vect-loop.cc (vect_transform_reduction): Handle single
20684         def-use cycles that involve function calls rather than tree codes.
20686 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
20688         PR tree-optimization/108385
20689         * gimple-range-gori.cc (gori_compute::compute_operand_range):
20690         Allow VARYING computations to continue if there is a relation.
20691         * range-op.cc (pointer_plus_operator::op2_range): New.
20693 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
20695         PR tree-optimization/108359
20696         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
20697         (range_operator::fold_range): If op1 is equivalent to op2 then
20698         invoke new fold_in_parts_equiv to operate on sub-components.
20699         * range-op.h (wi_fold_in_parts_equiv): New prototype.
20701 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
20703         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
20704         not abort calculations if there is a valid relation available.
20705         (gori_compute::refine_using_relation): Pass correct relation trio.
20706         (gori_compute::compute_operand1_range): Create trio and use it.
20707         (gori_compute::compute_operand2_range): Ditto.
20708         * range-op.cc (operator_plus::op1_range): Use correct trio member.
20709         (operator_minus::op1_range): Use correct trio member.
20710         * value-relation.cc (value_relation::create_trio): New.
20711         * value-relation.h (value_relation::create_trio): New prototype.
20713 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
20715         PR target/108599
20716         * config/i386/i386-expand.cc
20717         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
20718         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
20719         equal to bitsize of mode.
20721 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
20723         PR rtl-optimization/108596
20724         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
20725         ends with asm goto and has a crossing fallthrough edge to the same bb
20726         that contains at least one of its labels by restoring EDGE_CROSSING
20727         flag even on possible edge from cur_bb to new_bb successor.
20729 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
20731         PR c++/105593
20732         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
20733         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
20734         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
20735         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
20736         uninitialized automatic variable __W.
20738 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
20740         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
20742 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20744         * config/riscv/riscv-protos.h (get_vector_mode): New function.
20745         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
20746         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
20747         (class loadstore): Adjust for indexed loads/stores support.
20748         (BASE): Ditto.
20749         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
20750         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
20751         (vluxei16): Ditto.
20752         (vluxei32): Ditto.
20753         (vluxei64): Ditto.
20754         (vloxei8): Ditto.
20755         (vloxei16): Ditto.
20756         (vloxei32): Ditto.
20757         (vloxei64): Ditto.
20758         (vsuxei8): Ditto.
20759         (vsuxei16): Ditto.
20760         (vsuxei32): Ditto.
20761         (vsuxei64): Ditto.
20762         (vsoxei8): Ditto.
20763         (vsoxei16): Ditto.
20764         (vsoxei32): Ditto.
20765         (vsoxei64): Ditto.
20766         * config/riscv/riscv-vector-builtins-shapes.cc
20767         (struct indexed_loadstore_def): New class.
20768         (SHAPE): Ditto.
20769         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20770         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
20771         for indexed loads/stores support.
20772         (check_required_extensions): Ditto.
20773         (rvv_arg_type_info::get_base_vector_type): New function.
20774         (rvv_arg_type_info::get_tree_type): Ditto.
20775         (function_builder::add_unique_function): Adjust for indexed loads/stores
20776         support.
20777         (function_expander::use_exact_insn): New function.
20778         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
20779         indexed loads/stores support.
20780         (struct rvv_arg_type_info): Ditto.
20781         (function_expander::index_mode): New function.
20782         (function_base::apply_tail_policy_p): Ditto.
20783         (function_base::apply_mask_policy_p): Ditto.
20784         * config/riscv/vector-iterators.md (unspec): New unspec.
20785         * config/riscv/vector.md (unspec): Ditto.
20786         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
20787         pattern.
20788         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
20789         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
20790         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
20791         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
20792         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
20793         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
20794         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
20795         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
20796         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
20797         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20798         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20799         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20800         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20802 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
20804         * config.gcc: Recognize x86_64-*-gnu* targets and include
20805         i386/gnu64.h.
20806         * config/i386/gnu64.h: Define configuration for new target
20807         including ld.so location.
20809 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
20811         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
20812         ampere1a to include SM4.
20814 2023-01-30  Andrew Pinski  <apinski@marvell.com>
20816         PR tree-optimization/108582
20817         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
20818         for middlebb to have no phi nodes.
20820 2023-01-30  Richard Biener  <rguenther@suse.de>
20822         PR tree-optimization/108574
20823         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
20824         sameval and def, ignore the equivalence if there's the
20825         danger of oscillating between two values.
20827 2023-01-30  Andreas Schwab  <schwab@suse.de>
20829         * common/config/riscv/riscv-common.cc
20830         (riscv_option_optimization_table)
20831         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
20832         -fasynchronous-unwind-tables and -funwind-tables.
20833         * config.gcc (riscv*-*-linux*): Define
20834         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
20836 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
20838         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
20839         value of includedir.
20841 2023-01-30  Richard Biener  <rguenther@suse.de>
20843         PR ipa/108511
20844         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
20845         assert.
20847 2023-01-30  liuhongt  <hongtao.liu@intel.com>
20849         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
20850         * doc/invoke.texi: Ditto.
20852 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
20854         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
20855         (stmt_may_terminate_function_p): If assuming return or EH
20856         volatile asm is safe.
20857         (find_always_executed_bbs): Fix handling of terminating BBS and
20858         infinite loops; add debug output.
20859         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
20861 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
20863         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
20864         off-by-one in checking the permissible shift-amount.
20866 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
20868         * doc/extend.texi (Named Address Spaces): Update link to the
20869         AVR-Libc manual.
20871 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
20873         * doc/standards.texi (Standards): Fix markup.
20875 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
20877         * doc/standards.texi (Standards): Update link to Objective-C book.
20879 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
20881         * doc/invoke.texi (Instrumentation Options): Update reference to
20882         AddressSanitizer.
20884 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
20886         * doc/standards.texi: Update Go1 link.
20888 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20890         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
20891         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
20892         Support vlse/vsse.
20893         (BASE): Ditto.
20894         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20895         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
20896         (vsse): New class.
20897         * config/riscv/riscv-vector-builtins.cc
20898         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
20899         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
20900         (@pred_strided_store<mode>): Ditto.
20902 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20904         * config/riscv/vector.md (tail_policy_op_idx): Remove.
20905         (mask_policy_op_idx): Remove.
20906         (avl_type_op_idx): Remove.
20908 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
20910         PR tree-optimization/96373
20911         * tree.h (sign_mask_for): Declare.
20912         * tree.cc (sign_mask_for): New function.
20913         (signed_or_unsigned_type_for): For vector types, try to use the
20914         related_int_vector_mode.
20915         * genmatch.cc (commutative_op): Handle conditional internal functions.
20916         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
20918 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
20920         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
20921         Use the likely minimum VF when bounding the denominators to
20922         the estimated number of iterations.
20924 2023-01-27  Richard Biener  <rguenther@suse.de>
20926         PR target/55522
20927         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
20928         and -Ofast FP environment side-effects.
20930 2023-01-27  Richard Biener  <rguenther@suse.de>
20932         PR target/55522
20933         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
20934         Don't add crtfastmath.o for -shared.
20936 2023-01-27  Richard Biener  <rguenther@suse.de>
20938         PR target/55522
20939         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
20940         for -shared.
20942 2023-01-27  Richard Biener  <rguenther@suse.de>
20944         PR target/55522
20945         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
20946         crtfastmath.o for -shared.
20948 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
20950         PR tree-optimization/108306
20951         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
20952         varying for shifts that are always out of void range.
20953         (operator_rshift::fold_range): Return [0, 0] not
20954         varying for shifts that are always out of void range.
20956 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
20958         PR tree-optimization/108447
20959         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
20960         Do not attempt to fold HONOR_NAN types.
20962 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20964         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
20965         Remove _m suffix for "vop_m" C++ overloaded API name.
20967 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20969         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
20970         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20971         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
20972         (vsm): Ditto.
20973         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
20974         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
20975         (vbool64_t): Ditto.
20976         (vbool32_t): Ditto.
20977         (vbool16_t): Ditto.
20978         (vbool8_t): Ditto.
20979         (vbool4_t): Ditto.
20980         (vbool2_t): Ditto.
20981         (vbool1_t): Ditto.
20982         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
20983         (rvv_arg_type_info::get_tree_type): Ditto.
20984         (function_expander::use_contiguous_load_insn): Ditto.
20985         * config/riscv/vector.md (@pred_store<mode>): Ditto.
20987 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20989         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
20990         (vsetvl_discard_result_insn_p): New function.
20991         (reg_killed_by_bb_p): rename to find_reg_killed_by.
20992         (find_reg_killed_by): New name.
20993         (get_vl): allow it to be called by more functions.
20994         (has_vsetvl_killed_avl_p): Add condition.
20995         (get_avl): allow it to be called by more functions.
20996         (insn_should_be_added_p): New function.
20997         (get_all_nonphi_defs): Refine function.
20998         (get_all_sets): Ditto.
20999         (get_same_bb_set): New function.
21000         (any_insn_in_bb_p): Ditto.
21001         (any_set_in_bb_p): Ditto.
21002         (get_vl_vtype_info): Add VLMAX forward optimization.
21003         (source_equal_p): Fix issues.
21004         (extract_single_source): Refine.
21005         (avl_info::multiple_source_equal_p): New function.
21006         (avl_info::operator==): Adjust for final version.
21007         (vl_vtype_info::operator==): Ditto.
21008         (vl_vtype_info::same_avl_p): Ditto.
21009         (vector_insn_info::parse_insn): Ditto.
21010         (vector_insn_info::available_p): New function.
21011         (vector_insn_info::merge): Adjust for final version.
21012         (vector_insn_info::dump): Add hard_empty.
21013         (pass_vsetvl::hard_empty_block_p): New function.
21014         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
21015         (pass_vsetvl::forward_demand_fusion): Ditto.
21016         (pass_vsetvl::demand_fusion): Ditto.
21017         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
21018         (pass_vsetvl::compute_local_properties): Adjust for final version.
21019         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
21020         (pass_vsetvl::refine_vsetvls): Ditto.
21021         (pass_vsetvl::commit_vsetvls): Ditto.
21022         (pass_vsetvl::propagate_avl): New function.
21023         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
21024         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
21026 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
21028         PR other/108560
21029         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
21030         from size_t to int.
21032 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
21034         PR ipa/106061
21035         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
21036         redirection of calls to __builtin_trap in addition to redirection
21037         to __builtin_unreachable.
21039 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21041         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
21043 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21045         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
21046         (emit_vsetvl_insn): Ditto.
21048 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21050         * config/riscv/vector.md: Fix constraints.
21052 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21054         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
21056 2023-01-27  Patrick Palka  <ppalka@redhat.com>
21057             Jakub Jelinek  <jakub@redhat.com>
21059         * tree-core.h (tree_code_type, tree_code_length): For
21060         C++17 and later, add inline keyword, otherwise don't define
21061         the arrays, but declare extern arrays.
21062         * tree.cc (tree_code_type, tree_code_length): Define these
21063         arrays for C++14 and older.
21065 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21067         * config/riscv/riscv-vsetvl.h: Change it into public.
21069 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21071         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
21072         pass.
21074 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21076         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
21078 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21080         * config/riscv/vector.md: Fix incorrect attributes.
21082 2023-01-27  Richard Biener  <rguenther@suse.de>
21084         PR target/55522
21085         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
21086         Don't add crtfastmath.o for -shared.
21088 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
21090         * doc/options.texi (option, RejectNegative): Mention that
21091         -g-started options are also implicitly negatable.
21093 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
21095         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
21096         Use get_typenode_from_name to get fixed-width integer type
21097         nodes.
21098         * config/riscv/riscv-vector-builtins.def: Update define with
21099         fixed-width integer type nodes.
21101 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21103         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
21104         (real_insn_and_same_bb_p): New function.
21105         (same_bb_and_after_or_equal_p): Remove it.
21106         (before_p): New function.
21107         (reg_killed_by_bb_p): Ditto.
21108         (has_vsetvl_killed_avl_p): Ditto.
21109         (get_vl): Move location so that we can call it.
21110         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
21111         (available_occurrence_p): Ditto.
21112         (dominate_probability_p): Remove it.
21113         (can_backward_propagate_p): Remove it.
21114         (get_all_nonphi_defs): New function.
21115         (get_all_predecessors): Ditto.
21116         (any_insn_in_bb_p): Ditto.
21117         (insert_vsetvl): Adjust AVL REG.
21118         (source_equal_p): New function.
21119         (extract_single_source): Ditto.
21120         (avl_info::single_source_equal_p): Ditto.
21121         (avl_info::operator==): Adjust for AVL=REG.
21122         (vl_vtype_info::same_avl_p): Ditto.
21123         (vector_insn_info::set_demand_info): Remove it.
21124         (vector_insn_info::compatible_p): Adjust for AVL=REG.
21125         (vector_insn_info::compatible_avl_p): New function.
21126         (vector_insn_info::merge): Adjust AVL=REG.
21127         (vector_insn_info::dump): Ditto.
21128         (pass_vsetvl::merge_successors): Remove it.
21129         (enum fusion_type): New enum.
21130         (pass_vsetvl::get_backward_fusion_type): New function.
21131         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
21132         (pass_vsetvl::forward_demand_fusion): Ditto.
21133         (pass_vsetvl::demand_fusion): Ditto.
21134         (pass_vsetvl::prune_expressions): Ditto.
21135         (pass_vsetvl::compute_local_properties): Ditto.
21136         (pass_vsetvl::cleanup_vsetvls): Ditto.
21137         (pass_vsetvl::commit_vsetvls): Ditto.
21138         (pass_vsetvl::init): Ditto.
21139         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
21140         (enum merge_type): New enum.
21142 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21144         * config/riscv/riscv-vsetvl.cc
21145         (vector_infos_manager::vector_infos_manager): Add probability.
21146         (vector_infos_manager::dump): Ditto.
21147         (pass_vsetvl::compute_probabilities): Ditto.
21148         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
21150 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21152         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
21153         (vector_insn_info::merge): Ditto.
21154         (vector_insn_info::dump): Ditto.
21155         (pass_vsetvl::merge_successors): Ditto.
21156         (pass_vsetvl::backward_demand_fusion): Ditto.
21157         (pass_vsetvl::forward_demand_fusion): Ditto.
21158         (pass_vsetvl::commit_vsetvls): Ditto.
21159         * config/riscv/riscv-vsetvl.h: Ditto.
21161 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21163         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
21164         rinsn.
21166 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21168         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
21170 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21172         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
21173         Add pre-check for redundant flow.
21175 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21177         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
21178         (vector_infos_manager::free_bitmap_vectors): Ditto.
21179         (pass_vsetvl::pre_vsetvl): Adjust codes.
21180         * config/riscv/riscv-vsetvl.h: New function declaration.
21182 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21184         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
21185         (vector_insn_info::set_demand_info): New function.
21186         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
21187         (pass_vsetvl::merge_successors): Ditto.
21188         (pass_vsetvl::compute_global_backward_infos): Ditto.
21189         (pass_vsetvl::backward_demand_fusion): Ditto.
21190         (pass_vsetvl::forward_demand_fusion): Ditto.
21191         (pass_vsetvl::demand_fusion): New function.
21192         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
21193         * config/riscv/riscv-vsetvl.h: New function declaration.
21195 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21197         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
21199 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21201         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
21202         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
21204 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21206         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
21207         (backward_propagate_worthwhile_p): Fix non-worthwhile.
21209 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21211         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
21213 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21215         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
21216         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
21217         (pass_vsetvl::commit_vsetvls): Ditto.
21218         * config/riscv/riscv-vsetvl.h: New function declaration.
21220 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21222         * config/riscv/vector.md:
21224 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21226         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
21227         pred_store for vse.
21228         * config/riscv/riscv-vector-builtins.cc
21229         (function_expander::add_mem_operand): Refine function.
21230         (function_expander::use_contiguous_load_insn): Adjust new
21231         implementation.
21232         (function_expander::use_contiguous_store_insn): Ditto.
21233         * config/riscv/riscv-vector-builtins.h: Refine function.
21234         * config/riscv/vector.md (@pred_store<mode>): New pattern.
21236 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21238         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
21240 2023-01-26  Marek Polacek  <polacek@redhat.com>
21242         PR middle-end/108543
21243         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
21244         if it was previously set.
21246 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
21248         PR tree-optimization/108540
21249         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
21250         are singletons, use range_true even if op1 != op2
21251         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
21252         even if intersection of the ranges is empty and one has
21253         zero low bound and another zero high bound, use range_true_and_false
21254         rather than range_false.
21255         (foperator_not_equal::fold_range): If both op1 and op2
21256         are singletons, use range_false even if op1 != op2
21257         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
21258         even if intersection of the ranges is empty and one has
21259         zero low bound and another zero high bound, use range_true_and_false
21260         rather than range_true.
21262 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
21264         * value-relation.cc (kind_string): Add const.
21265         (rr_negate_table, rr_swap_table, rr_intersect_table,
21266         rr_union_table, rr_transitive_table): Add static const, change
21267         element type from relation_kind to unsigned char.
21268         (relation_negate, relation_swap, relation_intersect, relation_union,
21269         relation_transitive): Cast rr_*_table element to relation_kind.
21270         (relation_to_code): Add static const.
21271         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
21273 2023-01-26  Richard Biener  <rguenther@suse.de>
21275         PR tree-optimization/108547
21276         * gimple-predicate-analysis.cc (value_sat_pred_p):
21277         Use widest_int.
21279 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
21281         PR tree-optimization/108522
21282         * tree-object-size.cc (compute_object_offset): Make EXPR
21283         argument non-const.  Call component_ref_field_offset.
21285 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21287         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
21288         FEATURE_STRING field.
21290 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
21292         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
21294 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
21296         PR modula2/102343
21297         PR modula2/108182
21298         * gcc.cc: Provide default specs for Modula-2 so that when the
21299         language is not built-in better diagnostics are emitted for
21300         attempts to use .mod or .m2i file extensions.
21302 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
21304         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
21306 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
21308         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
21310 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
21312         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
21313         Fix spacing.
21315 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
21317         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
21319 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
21321         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
21323 2023-01-25  Richard Biener  <rguenther@suse.de>
21325         PR tree-optimization/108523
21326         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
21327         backedge value for the result when using predication to
21328         prove equivalence.
21330 2023-01-25  Richard Biener  <rguenther@suse.de>
21332         * doc/lto.texi (Command line options): Reword and update reference
21333         to removed lto_read_all_file_options.
21335 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
21337         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
21338         tests.
21340 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
21342         * doc/contrib.texi: Add Jose E. Marchesi.
21344 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
21346         PR tree-optimization/108498
21347         * gimple-ssa-store-merging.cc (class store_operand_info):
21348         End coment with full stop rather than comma.
21349         (split_group): Likewise.
21350         (merged_store_group::apply_stores): Clear string_concatenation if
21351         start or end aren't on a byte boundary.
21353 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
21354             Jakub Jelinek  <jakub@redhat.com>
21356         PR tree-optimization/108522
21357         * tree-object-size.cc (compute_object_offset): Use
21358         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
21360 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21362         * config/xtensa/xtensa.md:
21363         Fix exit from loops detecting references before overwriting in the
21364         split pattern.
21366 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
21368         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
21369         do elimination but only for hard register.
21370         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
21371         calls of get_hard_regno.
21373 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
21375         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
21376         of CPU version.
21378 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21380         PR target/108177
21381         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
21382         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
21383         as input operand.
21385 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
21387         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
21388         and only include 'csky/t-csky-linux' when enable multilib.
21389         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
21390         define it when disable multilib.
21392 2023-01-24  Richard Biener  <rguenther@suse.de>
21394         PR tree-optimization/108500
21395         * dominance.h (calculate_dominance_info): Add parameter
21396         to indicate fast-query compute, defaulted to true.
21397         * dominance.cc (calculate_dominance_info): Honor
21398         fast-query compute parameter.
21399         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
21400         not compute the dominator fast-query DFS numbers.
21402 2023-01-24  Eric Biggers  <ebiggers@google.com>
21404         PR bootstrap/90543
21405         * optc-save-gen.awk: Fix copy-and-paste error.
21407 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
21409         PR c++/108474
21410         * cgraphbuild.cc: Include gimplify.h.
21411         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
21412         their corresponding DECL_VALUE_EXPR expressions after unsharing.
21414 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21416         PR target/108505
21417         * config.gcc (tm_file): Move the variable out of loop.
21419 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
21420             Yang Yujie  <yangyujie@loongson.cn>
21422         PR target/107731
21423         * config/loongarch/loongarch.cc (loongarch_classify_address):
21424         Add precessint for CONST_INT.
21425         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
21426         (loongarch_print_operand): Increase the processing of '%c'.
21427         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
21428         And port the public operand modifiers information to this document.
21430 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21432         * doc/invoke.texi (-mbranch-protection): Update documentation.
21434 2023-01-23  Richard Biener  <rguenther@suse.de>
21436         PR target/55522
21437         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
21438         for -shared.
21439         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
21440         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
21441         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
21442         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
21444 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21446         * config/arm/aout.h (ra_auth_code): Add entry in enum.
21447         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
21448         to dwarf frame expression.
21449         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
21450         (arm_expand_prologue): Update frame related information and reg notes
21451         for pac/pacbit insn.
21452         (arm_regno_class): Check for pac pseudo reigster.
21453         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
21454         (arm_init_machine_status): Set pacspval_needed to zero.
21455         (arm_debugger_regno): Check for PAC register.
21456         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
21457         register.
21458         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
21459         (arm_unwind_emit): Update REG_CFA_REGISTER case._
21460         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
21461         (DWARF_PAC_REGNUM): Define.
21462         (IS_PAC_REGNUM): Likewise.
21463         (enum reg_class): Add PAC_REG entry.
21464         (machine_function): Add pacbti_needed state to structure.
21465         * config/arm/arm.md (RA_AUTH_CODE): Define.
21467 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21469         * config.gcc ($tm_file): Update variable.
21470         * config/arm/arm-mlib.h: Create new header file.
21471         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
21472         multilib arch directory.
21473         (MULTILIB_REUSE): Add multilib reuse rules.
21474         (MULTILIB_MATCHES): Add multilib match rules.
21476 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21478         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
21479         * config/arm/arm-tables.opt: Regenerate.
21480         * config/arm/arm-tune.md: Likewise.
21481         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
21482         * (-mfix-cmse-cve-2021-35465): Likewise.
21484 2023-01-23  Richard Biener  <rguenther@suse.de>
21486         PR tree-optimization/108482
21487         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
21488         .LOOP_DIST_ALIAS calls.
21490 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21492         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
21493         * config/arm/arm-protos.h: Update.
21494         * config/arm/aarch-common-protos.h: Declare
21495         'aarch_bti_arch_check'.
21496         * config/arm/arm.cc (aarch_bti_enabled) Update.
21497         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
21498         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
21499         * config/arm/arm.md (bti_nop): New insn.
21500         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
21501         (aarch-bti-insert.o): New target.
21502         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
21503         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
21504         compatibility.
21505         (gate): Make use of 'aarch_bti_arch_check'.
21506         * config/arm/arm-passes.def: New file.
21507         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
21509 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21511         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
21512         'aarch-bti-insert.o'.
21513         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
21514         proto.
21515         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
21516         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
21517         (aarch64_output_mi_thunk)
21518         (aarch64_print_patchable_function_entry)
21519         (aarch64_file_end_indicate_exec_stack): Update renamed function
21520         calls to renamed functions.
21521         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
21522         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
21523         target.
21524         * config/aarch64/aarch64-bti-insert.cc: Delete.
21525         * config/arm/aarch-bti-insert.cc: New file including and
21526         generalizing code from aarch64-bti-insert.cc.
21527         * config/arm/aarch-common-protos.h: Update.
21529 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21531         * config/arm/arm.h (arm_arch8m_main): Declare it.
21532         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
21533         Declare it.
21534         * config/arm/arm.cc (arm_arch8m_main): Define it.
21535         (arm_option_reconfigure_globals): Set arm_arch8m_main.
21536         (arm_compute_frame_layout, arm_expand_prologue)
21537         (thumb2_expand_return, arm_expand_epilogue)
21538         (arm_conditional_register_usage): Update for pac codegen.
21539         (arm_current_function_pac_enabled_p): New function.
21540         (aarch_bti_enabled) New function.
21541         (use_return_insn): Return zero when pac is enabled.
21542         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
21543         Add new patterns.
21544         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
21545         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
21547 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21549         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
21550         mbranch-protection.
21552 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21553             Tejas Belagod   <tbelagod@arm.com>
21555         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
21556         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
21558 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21559             Tejas Belagod   <tbelagod@arm.com>
21560             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21562         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
21563         new pseudo register class _UVRSC_PAC.
21565 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21566             Tejas Belagod   <tbelagod@arm.com>
21568         * config/arm/arm-c.cc (arm_cpu_builtins): Define
21569         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
21570         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
21572 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21573             Tejas Belagod   <tbelagod@arm.com>
21575         * doc/sourcebuild.texi: Document arm_pacbti_hw.
21577 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21578             Tejas Belagod   <tbelagod@arm.com>
21579             Richard Earnshaw  <Richard.Earnshaw@arm.com>
21581         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
21582         -mbranch-protection option and initialize appropriate data structures.
21583         * config/arm/arm.opt (-mbranch-protection): New option.
21584         * doc/invoke.texi (Arm Options): Document it.
21586 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21587             Tejas Belagod   <tbelagod@arm.com>
21589         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
21590         * config/arm/arm-cpus.in (pacbti): New feature.
21591         * doc/invoke.texi (Arm Options): Document it.
21593 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
21594             Tejas Belagod   <tbelagod@arm.com>
21596         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
21597         (all_architectures): Fix comment.
21598         (aarch64_parse_extension): Rename return type, enum value names.
21599         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
21600         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
21601         Also rename corresponding enum values.
21602         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
21603         out aarch64_function_type and move it to common code as
21604         aarch_function_type in aarch-common.h.
21605         * config/aarch64/aarch64-protos.h: Include common types header,
21606         move out types aarch64_parse_opt_result and aarch64_key_type to
21607         aarch-common.h
21608         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
21609         and functions out into aarch-common.h and aarch-common.cc.  Fix up
21610         all the name changes resulting from the move.
21611         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
21612         and enum value.
21613         * config/aarch64/aarch64.opt: Include aarch-common.h to import
21614         type move.  Fix up name changes from factoring out common code and
21615         data.
21616         * config/arm/aarch-common-protos.h: Export factored out routines to both
21617         backends.
21618         * config/arm/aarch-common.cc: Include newly factored out types.
21619         Move all mbranch-protection code and data structures from
21620         aarch64.cc.
21621         * config/arm/aarch-common.h: New header that declares types shared
21622         between aarch32 and aarch64 backends.
21623         * config/arm/arm-protos.h: Declare types and variables that are
21624         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
21625         aarch_ra_sign_scope and aarch_enable_bti.
21626         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
21627         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
21628         * config/arm/arm.cc: Add missing includes.
21630 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
21632         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
21634 2023-01-23  Richard Biener  <rguenther@suse.de>
21636         PR tree-optimization/108449
21637         * cgraphunit.cc (check_global_declaration): Do not turn
21638         undefined statics into externs.
21640 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
21642         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
21643         and HI input modes.
21644         * config/pru/pru.md (clz): Fix generated code for QI and HI
21645         input modes.
21647 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
21649         * config/v850/v850.cc (v850_select_section): Put const volatile
21650         objects into read-only sections.
21652 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
21654         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
21655         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
21656         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
21658 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
21660         PR tree-optimization/108457
21661         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
21662         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
21663         argument instead of a temporary.  Formatting fixes.
21665 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
21667         PR tree-optimization/108447
21668         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
21669         (relation_tests): Add self-tests for relation_{intersect,union}
21670         commutativity.
21671         * selftest.h (relation_tests): Declare.
21672         * function-tests.cc (test_ranges): Call it.
21674 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
21676         PR target/108436
21677         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
21678         invalid third argument to __builtin_ia32_prefetch.
21680 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
21682         PR middle-end/108459
21683         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
21684         than fold_unary for NEGATE_EXPR.
21686 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
21688         PR target/108411
21689         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
21690         comment. Move assert about alignment a bit later.
21692 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
21694         PR tree-optimization/108440
21695         * tree-ssa-forwprop.cc: Include gimple-range.h.
21696         (simplify_rotate): For the forms with T2 wider than T and shift counts of
21697         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
21698         to B.  For the forms with T2 wider than T and shift counts of
21699         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
21700         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
21701         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
21702         pass specific ranger instead of get_global_range_query.
21703         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
21704         been created.
21706 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
21708         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
21709         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
21710         the pattern.
21711         (aarch64_simd_vec_copy_lane<mode>): Likewise.
21712         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
21714 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
21716         PR debug/106746
21717         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
21718         within debug insns.
21720 2023-01-18  Martin Jambor  <mjambor@suse.cz>
21722         PR ipa/107944
21723         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
21724         lcone_of chain also do not need the body.
21726 2023-01-18  Richard Biener  <rguenther@suse.de>
21728         Revert:
21729         2022-12-16  Richard Biener  <rguenther@suse.de>
21731         PR middle-end/108086
21732         * tree-inline.cc (remap_ssa_name): Do not unshare the
21733         result from the decl_map.
21735 2023-01-18  Murray Steele  <murray.steele@arm.com>
21737         PR target/108442
21738         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
21739         function.
21740         (__arm_vst1q_p_s8): Likewise.
21741         (__arm_vld1q_z_u8): Likewise.
21742         (__arm_vld1q_z_s8): Likewise.
21743         (__arm_vst1q_p_u16): Likewise.
21744         (__arm_vst1q_p_s16): Likewise.
21745         (__arm_vld1q_z_u16): Likewise.
21746         (__arm_vld1q_z_s16): Likewise.
21747         (__arm_vst1q_p_u32): Likewise.
21748         (__arm_vst1q_p_s32): Likewise.
21749         (__arm_vld1q_z_u32): Likewise.
21750         (__arm_vld1q_z_s32): Likewise.
21751         (__arm_vld1q_z_f16): Likewise.
21752         (__arm_vst1q_p_f16): Likewise.
21753         (__arm_vld1q_z_f32): Likewise.
21754         (__arm_vst1q_p_f32): Likewise.
21756 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21758         * config/xtensa/xtensa.md (xorsi3_internal):
21759         Rename from the original of "xorsi3".
21760         (xorsi3): New expansion pattern that emits addition rather than
21761         bitwise-XOR when the second source is a constant of -2147483648
21762         if TARGET_DENSITY.
21764 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
21765             Andrew Pinski  <apinski@marvell.com>
21767         PR target/108396
21768         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
21769         vec_vsubcuqP with vec_vsubcuq.
21771 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
21773         PR target/108348
21774         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
21775         support for invalid uses of MMA opaque type in function arguments.
21777 2023-01-18  liuhongt  <hongtao.liu@intel.com>
21779         PR target/55522
21780         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
21781         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
21782         -share or -mno-daz-ftz is specified.
21783         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
21784         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
21786 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
21788         * config/bpf/bpf.cc (bpf_option_override): Disable
21789         -fstack-protector.
21791 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
21793         PR tree-optimization/106523
21794         * tree-ssa-forwprop.cc (simplify_rotate): For the
21795         patterns with (-Y) & (B - 1) in one operand's shift
21796         count and Y in another, if T2 has wider precision than T,
21797         punt if Y could have a value in [B, B2 - 1] range.
21799 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
21801         PR target/105980
21802         * config/i386/i386.cc (x86_output_mi_thunk): Disable
21803         -mforce-indirect-call for PIC in 32-bit mode.
21805 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
21807         PR ipa/106077
21808         * ipa-modref.cc (modref_access_analysis::analyze): Use
21809         find_always_executed_bbs.
21810         * ipa-sra.cc (process_scan_results): Likewise.
21811         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
21812         (find_always_executed_bbs): New function.
21813         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
21814         (find_always_executed_bbs): Declare.
21816 2023-01-16  Jan Hubicka  <jh@suse.cz>
21818         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
21819         by TARGET_USE_SCATTER.
21820         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
21821         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
21822         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
21823         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
21824         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
21825         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
21827 2023-01-16  Richard Biener  <rguenther@suse.de>
21829         PR target/55522
21830         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
21832 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
21834         PR target/96795
21835         PR target/107515
21836         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
21837         (__ARM_mve_coerce3): Likewise.
21839 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
21841         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
21843 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
21845         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
21846         (number_of_iterations_bitcount): Add call to the above.
21847         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
21848         c[lt]z idiom recognition.
21850 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
21852         * doc/sourcebuild.texi: Add missing target attributes.
21854 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
21856         PR tree-optimization/94793
21857         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
21858         for c[lt]z optabs.
21859         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
21860         (number_of_iterations_cltz_complement): New.
21861         (number_of_iterations_bitcount): Add call to the above.
21863 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
21865         * doc/extend.texi (Common Function Attributes): Fix grammar.
21867 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
21869         PR other/108413
21870         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
21871         * config/riscv/riscv-vsetvl.cc: Likewise.
21873 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
21875         PR c++/105593
21876         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
21877         disable -Winit-self using pragma GCC diagnostic ignored.
21878         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
21879         Likewise.
21880         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
21881         _mm256_undefined_si256): Likewise.
21882         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
21883         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
21884         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
21885         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
21887 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
21889         PR target/108272
21890         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
21891         support for invalid uses in inline asm, factor out the checking and
21892         erroring to lambda function check_and_error_invalid_use.
21894 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
21896         PR tree-optimization/107608
21897         * range-op-float.cc (range_operator_float::fold_range): Avoid
21898         folding into INF when flag_trapping_math.
21899         * value-range.h (frange::known_isinf): Return false for possible NANs.
21901 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
21903         * config.gcc (csky-*-*): Support --with-float=softfp.
21905 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21907         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
21908         Rename to xtensa_adjust_reg_alloc_order.
21909         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
21910         Ditto.  And also remove code to reorder register numbers for
21911         leaf functions, rename the tables, and adjust the allocation
21912         order for the call0 ABI to use register A0 more.
21913         (xtensa_leaf_regs): Remove.
21914         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
21915         (order_regs_for_local_alloc): Rename as the above.
21916         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
21918 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
21920         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
21921         Change to define_insn_and_split to fold ldr+dup to ld1rq.
21922         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
21924 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
21926         * hash-table.h (is_deleted): Precheck !is_empty.
21927         (mark_deleted): Postcheck !is_empty.
21928         (copy constructor): Test is_empty before is_deleted.
21930 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
21932         PR target/40457
21933         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
21934         moves.
21936 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
21938         PR rtl-optimization/108274
21939         * function.cc (thread_prologue_and_epilogue_insns): Also update the
21940         DF information for calls in a few more cases.
21942 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
21944         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
21945         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
21946         define.
21947         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
21948         (MAX_SYNC_LIBFUNC_SIZE): Define.
21949         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
21950         enabled.
21951         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
21952         libcall when sync libcalls are disabled.
21953         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
21954         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
21955         are disabled on 32-bit target.
21956         * config/pa/pa.opt (matomic-libcalls): New option.
21957         * doc/invoke.texi (HPPA Options): Update.
21959 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
21961         PR rtl-optimization/108117
21962         PR rtl-optimization/108132
21963         * sched-deps.cc (deps_analyze_insn): Do not schedule across
21964         calls before reload.
21966 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21968         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
21969         options for -mlibarch.
21970         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
21971         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
21973 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
21975         * attribs.cc (strict_flex_array_level_of): Move this function to ...
21976         * attribs.h (strict_flex_array_level_of): Remove the declaration.
21977         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
21978         replace the referece to strict_flex_array_level_of with
21979         DECL_NOT_FLEXARRAY.
21980         * tree.cc (component_ref_size): Likewise.
21982 2023-01-13  Richard Biener  <rguenther@suse.de>
21984         PR target/55522
21985         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
21986         crtfastmath.o for -shared.
21987         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
21989 2023-01-13  Richard Biener  <rguenther@suse.de>
21991         PR target/55522
21992         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
21993         crtfastmath.o for -shared.
21994         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
21995         Likewise.
21996         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
21997         Likewise.
21999 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
22001         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
22002         function.
22003         (TARGET_DWARF_FRAME_REG_MODE): Define.
22005 2023-01-13  Richard Biener  <rguenther@suse.de>
22007         PR target/107209
22008         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
22009         update EH info on the fly.
22011 2023-01-13  Richard Biener  <rguenther@suse.de>
22013         PR tree-optimization/108387
22014         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
22015         value before inserting expression into the tables.
22017 2023-01-12  Andrew Pinski  <apinski@marvell.com>
22018             Roger Sayle  <roger@nextmovesoftware.com>
22020         PR tree-optimization/92342
22021         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
22022         Use tcc_comparison and :c for the multiply.
22023         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
22025 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
22026             Richard Sandiford  <richard.sandiford@arm.com>
22028         PR target/105549
22029         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
22030         Check DECL_PACKED for bitfield.
22031         (aarch64_layout_arg): Warn when parameter passing ABI changes.
22032         (aarch64_function_arg_boundary): Do not warn here.
22033         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
22034         changes.
22036 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
22037             Richard Sandiford  <richard.sandiford@arm.com>
22039         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
22040         comment.
22041         (aarch64_layout_arg): Factorize warning conditions.
22042         (aarch64_function_arg_boundary): Fix typo.
22043         * function.cc (currently_expanding_function_start): New variable.
22044         (expand_function_start): Handle
22045         currently_expanding_function_start.
22046         * function.h (currently_expanding_function_start): Declare.
22048 2023-01-12  Richard Biener  <rguenther@suse.de>
22050         PR tree-optimization/99412
22051         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
22052         (swap_ops_for_binary_stmt): Remove reduction handling.
22053         (rewrite_expr_tree_parallel): Adjust.
22054         (reassociate_bb): Likewise.
22055         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
22057 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22059         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
22060         Rearrange the emitting codes.
22062 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22064         * config/xtensa/xtensa.md (*btrue):
22065         Correct value of the attribute "length" that depends on
22066         TARGET_DENSITY and operands, and add '?' character to the register
22067         constraint of the compared operand.
22069 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
22071         * hash-table.h (expand): Check elements and deleted counts.
22072         (verify): Likewise.
22074 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
22076         PR tree-optimization/71343
22077         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
22078         the value number of the expression X << C the same as the value
22079         number for the multiplication X * (1<<C).
22081 2023-01-11  David Faust  <david.faust@oracle.com>
22083         PR target/108293
22084         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
22085         floating point modes.
22087 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
22089         PR tree-optimization/108199
22090         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
22091         for bit-field references.
22093 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
22095         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
22096         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
22097         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
22098         OPTION_MASK_P10_FUSION.
22100 2023-01-11  Richard Biener  <rguenther@suse.de>
22102         PR tree-optimization/107767
22103         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
22104         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
22105         * tree-switch-conversion.cc (switch_conversion::collect):
22106         Count unique non-default targets accounting for later
22107         merging opportunities.
22109 2023-01-11  Martin Liska  <mliska@suse.cz>
22111         PR middle-end/107976
22112         * params.opt: Limit JT params.
22113         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
22115 2023-01-11  Richard Biener  <rguenther@suse.de>
22117         PR tree-optimization/108352
22118         * tree-ssa-threadbackward.cc
22119         (back_threader_profitability::profitable_path_p): Adjust
22120         heuristic that allows non-multi-way branch threads creating
22121         irreducible loops.
22122         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
22123         (--param fsm-scale-path-stmts): Adjust.
22124         * params.opt (--param=fsm-scale-path-blocks=): Remove.
22125         (-param=fsm-scale-path-stmts=): Adjust description.
22127 2023-01-11  Richard Biener  <rguenther@suse.de>
22129         PR tree-optimization/108353
22130         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
22131         Remove.
22132         (add_ssa_edge): Simplify.
22133         (add_control_edge): Likewise.
22134         (ssa_prop_init): Likewise.
22135         (ssa_prop_fini): Likewise.
22136         (ssa_propagation_engine::ssa_propagate): Likewise.
22138 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
22140         * config/s390/s390.md (*not<mode>): New pattern.
22142 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22144         * config/xtensa/xtensa.cc (xtensa_insn_cost):
22145         Let insn cost for size be obtained by applying COSTS_N_INSNS()
22146         to instruction length and then dividing by 3.
22148 2023-01-10  Richard Biener  <rguenther@suse.de>
22150         PR tree-optimization/106293
22151         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
22152         process degenerate PHI defs.
22154 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
22156         PR rtl-optimization/106421
22157         * cprop.cc (bypass_block): Check that DEST is local to this
22158         function (non-NULL) before calling find_edge.
22160 2023-01-10  Martin Jambor  <mjambor@suse.cz>
22162         PR ipa/108110
22163         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
22164         sort_replacements, lookup_first_base_replacement and
22165         m_sorted_replacements_p.
22166         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
22167         (ipa_param_body_adjustments::register_replacement): Set
22168         m_sorted_replacements_p to false.
22169         (compare_param_body_replacement): New function.
22170         (ipa_param_body_adjustments::sort_replacements): Likewise.
22171         (ipa_param_body_adjustments::common_initialization): Call
22172         sort_replacements.
22173         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
22174         m_sorted_replacements_p.
22175         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
22176         std::lower_bound.
22177         (ipa_param_body_adjustments::lookup_first_base_replacement): New
22178         function.
22179         (ipa_param_body_adjustments::modify_call_stmt): Use
22180         lookup_first_base_replacement.
22181         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
22182         adjustments->sort_replacements.
22184 2023-01-10  Richard Biener  <rguenther@suse.de>
22186         PR tree-optimization/108314
22187         * tree-vect-stmts.cc (vectorizable_condition): Do not
22188         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
22190 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
22192         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
22194 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
22196         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
22198 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
22200         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
22201         defines for soft float abi.
22203 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
22205         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
22206         (smart_bclri): Likewise.
22207         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
22208         (fast_bclri): Likewise.
22209         (fast_cmpnesi_i): Likewise.
22210         (*fast_cmpltsi_i): Likewise.
22211         (*fast_cmpgeusi_i): Likewise.
22213 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
22215         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
22216         flag_fp_int_builtin_inexact || !flag_trapping_math.
22217         (<frm_pattern><mode>2): Likewise.
22219 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
22221         * config/s390/s390.cc (s390_register_info): Check call_used_regs
22222         instead of hard-coding the register numbers for call saved
22223         registers.
22224         (s390_optimize_register_info): Likewise.
22226 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
22228         * doc/gm2.texi (Overview): Fix @node markers.
22229         (Using): Likewise.  Remove subsections that were moved to Overview
22230         from the menu and move others around.
22232 2023-01-09  Richard Biener  <rguenther@suse.de>
22234         PR middle-end/108209
22235         * genmatch.cc (commutative_op): Fix return value for
22236         user-id with non-commutative first replacement.
22238 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
22240         PR target/107453
22241         * calls.cc (expand_call): For calls with
22242         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
22243         Formatting fix.
22245 2023-01-09  Richard Biener  <rguenther@suse.de>
22247         PR middle-end/69482
22248         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
22249         qualified accesses also force objects to memory.
22251 2023-01-09  Martin Liska  <mliska@suse.cz>
22253         PR lto/108330
22254         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
22255         NULL (deleleted value) to a hash_set.
22257 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22259         * config/xtensa/xtensa.md (*splice_bits):
22260         New insn_and_split pattern.
22262 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22264         * config/xtensa/xtensa.cc
22265         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
22266         New helper functions.
22267         (xtensa_set_return_address, xtensa_output_mi_thunk):
22268         Change to use the helper function.
22269         (xtensa_emit_adjust_stack_ptr): Ditto.
22270         And also change to try reusing the content of scratch register
22271         A9 if the register is not modified in the function body.
22273 2023-01-07  LIU Hao  <lh_mouse@126.com>
22275         PR middle-end/108300
22276         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
22277         before <windows.h>.
22278         * diagnostic-color.cc: Likewise.
22279         * plugin.cc: Likewise.
22280         * prefix.cc: Likewise.
22282 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
22284         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
22285         for handling real integer types.
22287 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
22289         Revert:
22290         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
22292         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
22293         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
22294         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
22295         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
22296         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
22297         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
22298         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
22299         (aarch64_simd_dupv2hf): New.
22300         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
22301         Add E_V2HFmode.
22302         * config/aarch64/iterators.md (VHSDF_P): New.
22303         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
22304         Vel, q, vp): Add V2HF.
22305         * config/arm/types.md (neon_fp_reduc_add_h): New.
22307 2023-01-06  Martin Liska  <mliska@suse.cz>
22309         PR middle-end/107966
22310         * doc/options.texi: Fix Var documentation in internal manual.
22312 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
22314         Revert:
22315         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
22317         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
22318         RTL expansion to allow condition (mask) to be shared/reused,
22319         by avoiding overwriting pseudos and adding REG_EQUAL notes.
22321 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
22323         * common.opt: Add -static-libgm2.
22324         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
22325         * doc/gm2.texi: Document static-libgm2.
22326         * gcc.cc (driver_handle_option): Allow static-libgm2.
22328 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
22330         * common/config/i386/i386-common.cc (processor_alias_table):
22331         Use CPU_ZNVER4 for znver4.
22332         * config/i386/i386.md: Add znver4.md.
22333         * config/i386/znver4.md: New.
22335 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
22337         PR tree-optimization/108253
22338         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
22339         types.
22341 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
22343         PR middle-end/108237
22344         * generic-match-head.cc: Include tree-pass.h.
22345         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
22346         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
22347         resp. PROP_gimple_lvec property set.
22349 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
22351         PR sanitizer/108256
22352         * convert.cc (do_narrow): Punt for MULT_EXPR if original
22353         type doesn't wrap around and -fsanitize=signed-integer-overflow
22354         is on.
22355         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
22357 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
22359         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
22360         * common/config/i386/i386-common.cc: Add Emeraldrapids.
22362 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
22364         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
22365         for meteorlake.
22367 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
22369         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
22370         default constructor to initialize it.
22371         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
22372         for last and iterate to handle recursive calls.  Delete leftover
22373         candidates at the end.
22374         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
22375         on local clones.
22376         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
22377         gc_candidate bit when a clone is used.
22379 2023-01-03  Florian Weimer  <fweimer@redhat.com>
22381         Revert:
22382         2023-01-02  Florian Weimer  <fweimer@redhat.com>
22384         * dwarf2cfi.cc (init_return_column_size): Remove.
22385         (init_one_dwarf_reg_size): Adjust.
22386         (generate_dwarf_reg_sizes): New function.  Extracted
22387         from expand_builtin_init_dwarf_reg_sizes.
22388         (expand_builtin_init_dwarf_reg_sizes): Call
22389         generate_dwarf_reg_sizes.
22390         * target.def (init_dwarf_reg_sizes_extra): Adjust
22391         hook signature.
22392         * config/msp430/msp430.cc
22393         (msp430_init_dwarf_reg_sizes_extra): Adjust.
22394         * config/rs6000/rs6000.cc
22395         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
22396         * doc/tm.texi: Update.
22398 2023-01-03  Florian Weimer  <fweimer@redhat.com>
22400         Revert:
22401         2023-01-02  Florian Weimer  <fweimer@redhat.com>
22403         * debug.h (dwarf_reg_sizes_constant): Declare.
22404         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
22406 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
22408         PR tree-optimization/105043
22409         * doc/extend.texi (Object Size Checking): Split out into two
22410         subsections and mention _FORTIFY_SOURCE.
22412 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
22414         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
22415         RTL expansion to allow condition (mask) to be shared/reused,
22416         by avoiding overwriting pseudos and adding REG_EQUAL notes.
22418 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
22420         PR target/108229
22421         * config/i386/i386-features.cc
22422         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
22423         the gain/cost of converting a MEM operand.
22425 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
22427         PR middle-end/108264
22428         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
22429         from source which doesn't have scalar integral mode first convert
22430         it to outer_mode.
22432 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
22434         PR rtl-optimization/108263
22435         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
22436         asm goto to EXIT.
22438 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
22440         PR target/87832
22441         * config/i386/lujiazui.md (lujiazui_div): New automaton.
22442         (lua_div): New unit.
22443         (lua_idiv_qi): Correct unit in the reservation.
22444         (lua_idiv_qi_load): Ditto.
22445         (lua_idiv_hi): Ditto.
22446         (lua_idiv_hi_load): Ditto.
22447         (lua_idiv_si): Ditto.
22448         (lua_idiv_si_load): Ditto.
22449         (lua_idiv_di): Ditto.
22450         (lua_idiv_di_load): Ditto.
22451         (lua_fdiv_SF): Ditto.
22452         (lua_fdiv_SF_load): Ditto.
22453         (lua_fdiv_DF): Ditto.
22454         (lua_fdiv_DF_load): Ditto.
22455         (lua_fdiv_XF): Ditto.
22456         (lua_fdiv_XF_load): Ditto.
22457         (lua_ssediv_SF): Ditto.
22458         (lua_ssediv_load_SF): Ditto.
22459         (lua_ssediv_V4SF): Ditto.
22460         (lua_ssediv_load_V4SF): Ditto.
22461         (lua_ssediv_V8SF): Ditto.
22462         (lua_ssediv_load_V8SF): Ditto.
22463         (lua_ssediv_SD): Ditto.
22464         (lua_ssediv_load_SD): Ditto.
22465         (lua_ssediv_V2DF): Ditto.
22466         (lua_ssediv_load_V2DF): Ditto.
22467         (lua_ssediv_V4DF): Ditto.
22468         (lua_ssediv_load_V4DF): Ditto.
22470 2023-01-02  Florian Weimer  <fweimer@redhat.com>
22472         * debug.h (dwarf_reg_sizes_constant): Declare.
22473         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
22475 2023-01-02  Florian Weimer  <fweimer@redhat.com>
22477         * dwarf2cfi.cc (init_return_column_size): Remove.
22478         (init_one_dwarf_reg_size): Adjust.
22479         (generate_dwarf_reg_sizes): New function.  Extracted
22480         from expand_builtin_init_dwarf_reg_sizes.
22481         (expand_builtin_init_dwarf_reg_sizes): Call
22482         generate_dwarf_reg_sizes.
22483         * target.def (init_dwarf_reg_sizes_extra): Adjust
22484         hook signature.
22485         * config/msp430/msp430.cc
22486         (msp430_init_dwarf_reg_sizes_extra): Adjust.
22487         * config/rs6000/rs6000.cc
22488         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
22489         * doc/tm.texi: Update.
22491 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
22493         * gcc.cc (process_command): Update copyright notice dates.
22494         * gcov-dump.cc (print_version): Ditto.
22495         * gcov.cc (print_version): Ditto.
22496         * gcov-tool.cc (print_version): Ditto.
22497         * gengtype.cc (create_file): Ditto.
22498         * doc/cpp.texi: Bump @copying's copyright year.
22499         * doc/cppinternals.texi: Ditto.
22500         * doc/gcc.texi: Ditto.
22501         * doc/gccint.texi: Ditto.
22502         * doc/gcov.texi: Ditto.
22503         * doc/install.texi: Ditto.
22504         * doc/invoke.texi: Ditto.
22506 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
22507             Uroš Bizjak  <ubizjak@gmail.com>
22509         * config/i386/i386.md (extendditi2): New define_insn.
22510         (define_split): Use DWIH mode iterator to treat new extendditi2
22511         identically to existing extendsidi2_1.
22512         (define_peephole2): Likewise.
22513         (define_peephole2): Likewise.
22514         (define_Split): Likewise.
22517 Copyright (C) 2023 Free Software Foundation, Inc.
22519 Copying and distribution of this file, with or without modification,
22520 are permitted in any medium without royalty provided the copyright
22521 notice and this notice are preserved.