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>
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
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
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
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
92 (reload_tp_hard): Likewise.
93 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
95 * doc/invoke.texi (Arm Options, mtp): Document new values.
97 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
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>
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,
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
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
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
235 * gimple-range-op.cc (get_code): Rename from get_code_and_type
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.
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
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>
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>
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>
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>
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>
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>
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]:
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
543 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
544 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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>
878 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
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>
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
934 2023-06-09 liuhongt <hongtao.liu@intel.com>
937 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
938 view_convert_expr mask to signed type when folding pblendvb
941 2023-06-09 liuhongt <hongtao.liu@intel.com>
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
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>
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.
990 * range-op-float.cc (fold_range): Change class to range_operator.
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>
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
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>
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>
1142 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
1144 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
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>
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
1161 2023-06-07 Alex Coplan <alex.coplan@arm.com>
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.
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>):
1182 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
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):
1194 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1196 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
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
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
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
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>
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
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
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
1357 (gen_ld_cmpi_p10): ... this.
1359 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
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):
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.
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>
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):
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
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
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
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>
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
1630 * config/mips/mips.cc (speculation_barrier_libfunc): New static
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
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>
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
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>
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>
1727 * tree-eh.cc (lower_resx): Pass the exception pointer to the
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,
1752 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
1754 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
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>
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>
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>
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>
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"
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>
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
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>
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>
1877 * doc/install.texi: Document (optional) Perl usage for parallel
1880 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
1883 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
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
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>
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
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>
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
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):
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):
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.
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>
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>):
2057 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
2188 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
2191 2023-05-31 Richard Biener <rguenther@suse.de>
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):
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):
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
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>
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
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>
2331 * simplify-rtx.cc (simplify_const_relational_operation): Return
2332 early if we have a MODE_CC comparison that isn't a COMPARE against
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.
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
2374 (<u>avg<mode>3_ceil): Rename to...
2375 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
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>
2385 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
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):
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.
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
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.
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.
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
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):
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>
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
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
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
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
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
2566 (get_repeating_sequence_dup_machine_mode): New function to get the dup
2568 (expand_vector_init_merge_repeating_sequence): New function to perform
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
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>
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.
2630 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
2632 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
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
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
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
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
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):
2706 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
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>
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
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>
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>
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
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
2787 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
2790 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
2824 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
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>
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
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>
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
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
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>
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
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>
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>
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
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
3106 (temporal_cache::current_p): Check always_current method.
3107 (temporal_cache::set_always_current): Add param and set value
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_
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>
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
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>
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
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>
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>
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.
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>
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
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
3357 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
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>
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
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
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>
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
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
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*-*-*
3557 2023-05-20 Pan Li <pan2.li@intel.com>
3559 * mode-switching.cc (entity_map): Initialize the array to zero.
3562 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
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
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
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
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>
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>
3633 * opts.h (handle_deferred_dump_options): Declare.
3634 * opts-global.cc (handle_common_deferred_options): Do not handle
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>
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.
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
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.
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):
3927 * config/i386/i386.cc (ix86_multiplication_cost): Handle
3928 V4QImode and V8QImode.
3929 * config/i386/mmx.md (mulv8qi3): New expander.
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>
3940 * config.gcc: Use = operator instead of ==.
3942 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
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
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
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
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
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,
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
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>
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.
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
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>
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
4282 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
4284 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
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
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
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>
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
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
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.
4357 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
4359 * config/s390/s390-protos.h (s390_expand_cpymem): Change
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
4365 * config/s390/s390.md: Change expander into a version which
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
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.
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.
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
4408 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
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>
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>
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
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>
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
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.
4531 (ix86_expand_vecop_qihi): Initialize interleave functions
4532 for MULT code only. Fix comments.
4534 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
4537 * config/i386/mmx.md (mulv2si3): Remove expander.
4538 (mulv2si3): Rename insn pattern from *mulv2si.
4540 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
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>
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
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))):
4569 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
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.
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.
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
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,
4722 * config/arm/arm_mve.h (vfmaq): 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,
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
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.
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.
4800 (vmvnq_s16): Remove.
4801 (vmvnq_s32): Remove.
4802 (vmvnq_n_s16): Remove.
4803 (vmvnq_n_s32): 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.
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,
5048 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
5049 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_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):
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,
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
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
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
5169 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
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
5178 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
5179 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
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.
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.
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,
5353 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_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)
5371 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
5372 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
5374 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
5375 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
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):
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
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):
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
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
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.
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.
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,
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
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
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>
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
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
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
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):
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.
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
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.
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
6337 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
6339 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): 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.
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):
6419 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
6421 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
6423 * config/arm/arm_mve.h (vrev16q): 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.
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.
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
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
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
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>
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
7022 2023-05-10 Jakub Jelinek <jakub@redhat.com>
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>
7038 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
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>
7047 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
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>
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
7084 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
7103 * config/arm/arm_mve.h (vminaq): 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):
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>):
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
7161 * config/arm/arm_mve.h (vminnmaq): 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>):
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.
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.
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>):
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)
7339 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
7341 * config/arm/arm_mve.h (vminvq): 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.
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):
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
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.
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.
7544 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
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>):
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.
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.
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,
7680 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_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.
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.
7827 (vabsq_f16): Remove.
7828 (vabsq_f32): 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.
7863 (vnegq_f16): Remove.
7864 (vnegq_f32): 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.
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.
7924 (vclzq_s16): Remove.
7925 (vclzq_s32): 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.
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.
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 ...
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.
8064 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
8066 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
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):
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
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
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
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
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
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
8189 Don't update the stat on removal statements.
8191 2023-05-07 Andrew Pinski <apinski@marvell.com>
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>
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
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
8291 2023-05-06 Xi Ruoyao <xry111@xry111.site>
8294 * Makefile.in (s-macro_list): Pass -nostdinc to
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>
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
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.
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
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.
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):
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,
8593 * config/arm/arm_mve.h (vshrnbq): 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.
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.
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.
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>):
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):
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.
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.
8888 (vshlq_m_r): Remove.
8890 (vshlq_m_n): Remove.
8892 (vshlq_x_n): Remove.
8894 (vshlq_s16): Remove.
8895 (vshlq_s32): 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.
9000 (vqshlq_m_r): Remove.
9001 (vqshlq_m_n): 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.
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.
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
9217 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
9218 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
9220 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
9221 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
9223 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9224 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
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
9235 * config/arm/arm_mve.h (vrshlq): Remove.
9236 (vrshlq_m_n): 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.
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
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>
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>
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>
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>
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>
9430 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
9432 (dt_simplify::gen_1): Use it.
9434 2023-05-05 Tamar Christina <tamar.christina@arm.com>
9437 * genmatch.cc (output_line_directive): Only emit commented directive
9440 2023-05-05 Tamar Christina <tamar.christina@arm.com>
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>
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,
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>
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
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.
9510 (sur): Remove handling of the above.
9513 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9515 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
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):
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>
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>
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):
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):
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>
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
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
9721 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
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>
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
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>
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)
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.
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.
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.
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.
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.
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
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,
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.
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.
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.
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.
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
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):
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.
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.
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.
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):
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
10854 * config/arm/mve.md
10855 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
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
10863 (mve_<mve_addsubmul>q<mode>): ... this.
10864 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
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>):
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
10899 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
10900 * config/arm/arm-mve-builtins-shapes.h (inherent): New
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
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
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
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
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.
11194 (all_unsigned): New.
11196 (integer_8_16): New.
11197 (integer_16_32): New.
11199 (signed_16_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.
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
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):
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>
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):
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):
11409 (optimize_spaceship): Take a gcond * argument, avoid
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):
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):
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.
11433 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11434 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
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.
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
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
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.
11495 (floattype): Ditto.
11497 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
11498 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
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):
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
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):
11785 (register_tuple_type): New function
11786 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
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):
11991 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
11992 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
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
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>
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>
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
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>
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
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>
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
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>
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
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
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
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.
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
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.
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.
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.
12385 (range_uint128): New.
12386 (range_uchar): 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.
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
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
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
12455 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
12457 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
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
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
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
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>
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
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.
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)"
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
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>
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>
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
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
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
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
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
12931 2023-04-27 Richard Biener <rguenther@suse.de>
12934 * ipa-param-manipulation.h
12935 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
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
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
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>
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.
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.
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
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
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
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
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.
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>
13310 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
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):
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):
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.
13380 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
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>
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
13415 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
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
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>
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):
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>
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>
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
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
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
13573 2023-04-24 Andrew Pinski <apinski@marvell.com>
13575 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
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.
13622 (Options specification, --with-gnu-as): as and gas always differ
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>
13641 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
13643 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
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
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
13696 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
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):
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):
13724 (back_threader_profitability::possibly_profitable_path_p):
13726 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
13728 * tree-switch-conversion.cc (pass_convert_switch::execute):
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>
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
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
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>
13855 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
13856 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
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>
13870 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
13871 (add_vec_concat_subst_be): 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
13893 2023-04-21 Jan Hubicka <jh@suse.cz>
13895 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
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
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
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
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 *,
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
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>
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>
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>
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
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>
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.
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>
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,
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>
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
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
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):
14176 * config/i386/i386.md (aes): New isa attribute.
14177 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
14178 (aesenclast): 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
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
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
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,
14350 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
14352 * config/i386/sse.md: Modify insn vperm{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
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.
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>
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,
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):
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
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>
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
14612 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14614 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
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>
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>):
14639 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
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>
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.
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
14736 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
14738 * doc/extend.texi (Target Builtins): Add RISC-V Vector
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):
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
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
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
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
14907 * config/loongarch/predicates.md (const_dual_imm12_operand): New
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
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
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
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
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
14962 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
14964 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
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>
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
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
15013 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
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>
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>
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
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>
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>
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
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>
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>
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
15141 2023-04-12 Jakub Jelinek <jakub@redhat.com>
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>
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>
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>
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>
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
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
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
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
15297 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
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>
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>
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
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
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
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>
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>
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>
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>
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
15481 2023-04-01 Jakub Jelinek <jakub@redhat.com>
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
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>
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>
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>):
15535 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
15536 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
15538 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
15540 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
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>):
15549 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
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>):
15567 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
15569 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
15570 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
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>
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):
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>
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>
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>
15671 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
15672 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
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>
15708 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
15709 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
15711 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
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
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
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>
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
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>
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>
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
15794 * config/i386/sym-mingw32.cc: prevent name mangling of
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>
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.
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
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>
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>
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>
15870 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
15872 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
15874 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
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>
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>
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>
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
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>
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
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>
15990 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
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):
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):
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):
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.
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
16098 2023-03-23 Pan Li <pan2.li@intel.com>
16099 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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>
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>
16132 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
16133 __riscv_vlenb support.
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.
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.
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):
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
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
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
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
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
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
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>
16369 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
16370 (init_float128_ieee): Delete code to switch complex multiply and divide
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>
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>:
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>
16396 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
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
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>
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>
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
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
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
16464 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
16465 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
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
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
16509 (pass_waccess::check_pointer_uses): Process all PHIs.
16511 2023-03-15 David Malcolm <dmalcolm@redhat.com>
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
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"
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
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
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>
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
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):
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
16599 * config/riscv/riscv.cc (riscv_split_doubleword_move):
16600 Add split code for XTheadFmv.
16601 (riscv_secondary_memory_needed): XTheadFmv does not need
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):
16630 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
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
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>
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>
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>
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
16733 2023-03-14 Martin Jambor <mjambor@suse.cz>
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'
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>
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>
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>
16874 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
16877 2023-03-12 Tamar Christina <tamar.christina@arm.com>
16878 Andrew MacLeod <amacleod@redhat.com>
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):
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>
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
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
16928 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
16930 * doc/extend.texi (Named Address Spaces): Drop a redundant link
16933 2023-03-11 Jeff Law <jlaw@ventanamicro>
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
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>
16950 * optabs.cc (expand_fix): For conversions from BFmode to integral,
16951 use shifts to convert it to SFmode first and then convert SFmode
16954 2023-03-10 Andrew Pinski <apinski@marvell.com>
16956 * config/aarch64/aarch64.md: Add a new define_split
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>
16974 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
16976 * config/i386/t-cygwin-w64: Remove.
16978 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
16990 * tree.cc (tree_code_type, tree_code_length): Remove.
16992 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
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>
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
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.
17039 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17040 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
17042 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
17043 (struct fault_load_def): 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>
17146 * doc/extend.texi (Type Traits):: Document __is_deducible.
17148 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
17151 * config.host: add object for x86_64-*-mingw*.
17152 * config/i386/sym-mingw32.cc: dummy file to attach
17154 * config/i386/utf8-mingw32.rc: windres resource file.
17155 * config/i386/winnt-utf8.manifest: XML manifest to
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>
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>
17197 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
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
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>
17229 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
17231 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
17232 (X86_TUNE_USE_SCATTER): Likewise.
17234 2023-03-06 Xi Ruoyao <xry111@xry111.site>
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
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.
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
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.
17323 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
17325 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
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.
17343 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17344 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
17360 (vundefined): Add new intrinsic.
17361 (vreinterpret): Ditto.
17362 (vlmul_ext): Ditto.
17363 (vlmul_trunc): 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.
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.
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.
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.
17526 (unsigned_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.
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.
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.
17688 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17689 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
17693 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): 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
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
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>
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
17876 2023-03-03 Richard Biener <rguenther@suse.de>
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
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
17896 2023-03-03 Richard Biener <rguenther@suse.de>
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>
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
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
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
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>
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>
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
18011 2023-03-01 Jakub Jelinek <jakub@redhat.com>
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
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>
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
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>
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
18090 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18092 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
18094 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
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>
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>
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
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
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>
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)
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>
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>
18329 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
18332 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
18334 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
18335 (sibcall_value, sibcall_value_internal): Add 'use' expression
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.
18370 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18371 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
18380 (vwredsumu): Ditto.
18381 (vfredusum): Ditto.
18382 (vfredosum): Ditto.
18385 (vfwredosum): Ditto.
18386 (vfwredusum): Ditto.
18387 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): 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.
18494 * config/riscv/riscv-vector-builtins-bases.h:
18495 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
18539 (vfcvt_rtz_x): Ditto.
18540 (vfcvt_rtz_xu): Ditto.
18543 (vfwcvt_xu): Ditto.
18544 (vfwcvt_rtz_x): Ditto.
18545 (vfwcvt_rtz_xu): Ditto.
18548 (vfncvt_xu): Ditto.
18549 (vfncvt_rtz_x): Ditto.
18550 (vfncvt_rtz_xu): 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.
18599 (xu_v): 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.
18610 (fixuns_trunc): 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>
18689 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
18691 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
18694 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
18696 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
18697 (sibcall_value, sibcall_value_internal): Add 'use' expression
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>
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>
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
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
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
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>
18784 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
18785 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
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
18800 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
18801 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
18804 2023-02-18 Andrew Pinski <apinski@marvell.com>
18806 * match.pd: Remove #if GIMPLE around the
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
18819 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
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>
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
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.
18869 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18870 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
18889 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
18890 (struct mask_alu_def): 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.
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.
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.
19009 (get_avl_type): Ditto.
19010 (calculate_ratio): Ditto.
19011 (enum vlmul_type): 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.
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.
19074 * lra-int.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.
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
19148 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
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.
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
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
19227 (class imac): New class.
19228 (enum widen_ternop_type): New enum.
19229 (class iwmac): New class.
19231 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19232 * config/riscv/riscv-vector-builtins-functions.def (vmacc): 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.
19278 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19279 * config/riscv/riscv-vector-builtins-functions.def (vmseq): 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>
19323 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
19324 creation of non-scalar replacements even if IPA-CP knows their
19327 2023-02-15 Jakub Jelinek <jakub@redhat.com>
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>
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
19358 2023-02-15 Richard Biener <rguenther@suse.de>
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>
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
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>
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
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>
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
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.
19540 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19541 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
19550 * config/riscv/vector-iterators.md (su): Add instruction.
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.
19569 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19570 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
19577 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
19578 (struct move_def): 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.
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.
19607 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
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.
19640 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19641 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
19643 * config/riscv/riscv-vector-builtins-shapes.cc
19644 (struct no_mask_policy_def): 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
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
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"
19694 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
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
19702 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
19704 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
19705 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
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.
19717 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19718 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
19722 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
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.
19787 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
19788 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
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
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
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.
19855 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
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.
19870 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19871 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
19892 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
19893 (struct alu_def): 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>
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.
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.
19961 (neg_simm5_p): Ditto.
19962 (has_vi_variant_p): Ditto.
19963 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
19965 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19966 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
19969 (vminu): Remove signed cases.
19971 (vdiv): Remove unsigned cases.
19973 (vdivu): Remove signed cases.
19977 (vrsub): New class.
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
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>
20004 2023-02-09 Martin Liska <mliska@suse.cz>
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
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
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>
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
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>
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
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>
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
20096 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
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
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>
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
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
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
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
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
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>
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
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.
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
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>
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.
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.
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
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>
20353 PR rtl-optimization/108463
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>
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
20399 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
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
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
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.
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
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
20450 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
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>
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>
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
20474 (arm_init_crypto_builtins): Likewise.
20476 2023-02-02 Jakub Jelinek <jakub@redhat.com>
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):
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
20529 (all_extensions): Set new field native_detect.
20530 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
20533 2023-02-01 Martin Liska <mliska@suse.cz>
20535 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
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>
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>
20554 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
20557 2023-02-01 Jakub Jelinek <jakub@redhat.com>
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
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.
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.
20644 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
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>
20677 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
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>
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>
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.
20749 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
20750 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
20766 * config/riscv/riscv-vector-builtins-shapes.cc
20767 (struct indexed_loadstore_def): New class.
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
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
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
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>
20844 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
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
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
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):
20894 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20895 * config/riscv/riscv-vector-builtins-functions.def (vlse): 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>
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>
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>
20939 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
20942 2023-01-27 Richard Biener <rguenther@suse.de>
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.
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.
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>
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>
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
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>
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
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
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
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):
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>
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>):
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
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
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
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
21378 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
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>
21405 * optc-save-gen.awk: Fix copy-and-paste error.
21407 2023-01-24 Jakub Jelinek <jakub@redhat.com>
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>
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>
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>
21437 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
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
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
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'
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
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):
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):
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
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
21613 * config/aarch64/aarch64.opt: Include aarch-common.h to import
21614 type move. Fix up name changes from factoring out common code and
21616 * config/arm/aarch-common-protos.h: Export factored out routines to both
21618 * config/arm/aarch-common.cc: Include newly factored out types.
21619 Move all mbranch-protection code and data structures from
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
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}
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>
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>
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
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
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>
21717 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
21718 within debug insns.
21720 2023-01-18 Martin Jambor <mjambor@suse.cz>
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>
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>
21738 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
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
21764 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
21765 Andrew Pinski <apinski@marvell.com>
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>
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>
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
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>
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>
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>
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>
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
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>
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>
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):
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>
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>
21933 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
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
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
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>
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>
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):
21996 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
21999 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
22001 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
22003 (TARGET_DWARF_FRAME_REG_MODE): Define.
22005 2023-01-13 Richard Biener <rguenther@suse.de>
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>
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
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
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>
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
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):
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>
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
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
22177 (ipa_param_body_adjustments::lookup_first_base_replacement): New
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
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>
22241 * calls.cc (expand_call): For calls with
22242 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
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>
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>
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):
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>
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
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
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
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
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>
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
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>
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>
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
22432 2023-01-03 Jakub Jelinek <jakub@redhat.com>
22434 PR rtl-optimization/108263
22435 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
22438 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
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
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.